Skip to content

v3.0.0

Latest

Choose a tag to compare

@TsukiNi22 TsukiNi22 released this 04 Oct 22:14
Immutable release. Only release title and notes can be modified.

Note

First major release since v2.0.0: a full audit and bug fix pass over the whole library. The EETPParser handshake now works end to end, SharedMemory, Server / Client, Process, ArgParser and Cli got rid of their deadlocks, data races and undefined behaviours, and every section is covered by unit tests. The licenses of the dependencies are now stated: the MIT license only covers libutils itself.

See the changelog for more details.

Part What changed
network Sockets moved to utils::network, listen never blocks on a partial payload, stop / kill safe from another thread, no more SIGPIPE
manip EETPParser handshake fixed (new framing, random AES iv per payload), Base64 padding, ANSI codes aligned on ECMA-48
encapsulation SharedMemory reader thread, slot release and close / join fixed, Process::spawn child isolated
security RSAKey encrypts data of any size, AES / Base64 size checks, observers safe at static init
arguments / cli ArgParser usages and hooks, Settings casts with range checks, Cli deadlocks and history
tests 854 unit tests (~89 % of the lines), regression tests for every fixed bug, clean under ASan / UBSan
packages libutils-dev requires the OpenSSL headers, licenses of the dependencies shipped (THIRD_PARTY_NOTICES.md)

Important

[MAJOR] Not compatible with the previous versions:

  • the sockets moved from utils::network::socket to utils::network (the old names are kept with a migration warning until ~v4.0.0)
  • the EETPParser framing changed (random iv per payload, sent with the tag): both sides must use v3.0.0
  • utils::verbose::verbose is a std::atomic, the ANSI blink / reset codes changed, IdHandler::free(bool) became IdHandler::clear(bool)
  • several public names follow the naming convention, the old ones are kept with a migration warning until ~v4.0.0

Caution

The algorithms synced in include/utils/algorithms/ (c2dmp-hsm, s.o.s) are under CC BY-NC-SA 4.0: no commercial use without an agreement with the author.

Full Changelog: https://github.com/TsukiNi22/libutils/blob/v3.0.0/CHANGELOG.md


Compare: v2.13.2...v3.0.0