0.19.3 (2019-12-19) - Rate limiting: Fix a divide by zero when distributing overflow 0.19.2 (2019-12-19) + Rate limiting: Added debt repay mechanism to bucket removal - *nix: Fix returned permissions in fz::local_filesys::get_file_info/get_next_file 0.19.1 (2019-11-15) + Return error information to fz::local_filesys::begin_find_files - Fix for version.hpp not getting installed 0.19.0 (2019-11-07) + Addded rate limiting code and a new rate-limited socket layer + Added fz::mutex::try_lock + Implemented libtool's library versioning scheme for shared library builds of libfilezilla 0.18.2 (2019-09-16) + Added operator== and != to fz::uri 0.18.1 (2019-08-14) + Added fz::buffer::resize 0.18.0 (2019-08-02) + Added fz::spawn_detached_process + Add operator+ to fz::duration + *nix: If available, use eventfd instead of a self-pipe + fz::to_integral and fz::hex_decode now work with string literals + Added fz::listen_socket::fast_accept that only returns a descriptor instead of a fully-initialized fz::socket for use in a tight accept-and-dispatch loop + Functions in libfilezilla/iputils.hpp now take string_view as arguments + Added fz::socket::set_flags which can atomically enable or disable flags - fz::socket not returns an error instead of silently failing in case of file descriptor exhaustion - Fix socket errors sometimes not being forwarded in fz::tls_layer when when writing fails in the underlying layer - Fix double-closing of socket descriptios if connection establishment fails - fz::tls_layer now fails the handshake instead of waiting indefinitely if started on a layer that has progressed passed the connected state - Small compile-time improvements to fz::sprintf 0.17.1 (2019-06-21) + Added support for detached signatures - Fixed crash if using the system trust store 0.17.0 (2019-06-17) + libfilezilla now requires C++17 + Changed a lot of functions to use std::string_view + Added fz::socket_layer as base class for layers on top of sockets + Added fz::tls_layer, a Transport Layer Security layer, requiring GnuTLS 3.5.7 or later + Added fz::translate for gettext-style translatable strings. GNU Gettext is now a built-time (but not runtime) dependency + Added fz::bitscan and fz::bitscan_reverse to get the index of least and most significant bit set + Added fz::logger_interface as a base for logging system - *nix: Small speed-up of fz::local_filesys through the use of fstatat() 0.16.0 (2019-04-21) + Add fz::socket + Add operator*= to fz::duration + fz::event_loop can now also be created using fz::thread_pool or threadless. - fz::async_task now releases the thread back to the pool immediately when the task has completed without waiting for the join - *nix: Fix file descriptor leaks on exec() 0.15.1 (2018-11-22) + Add argument to fz::strtok to return empty tokens - Fix compatibility issue with Nettle < 3.3 - Fix fz::random_bytes on MinGW - Fix memory leak in fz::buffer 0.15.0 (2018-10-19) + libfilezilla now depends on Nettle >= 3.1 + Added fz::sha512, fz::sha256, fz::sha1 and fz::md5 hash functions + Added fz::hash_accumulator + Added fz::hmac_sha256 HMAC function + Added asymmetric encryption scheme using X25519 + Added signature scheme using Ed25519 - Changed and documented semantics of the return value of fz::remove_file, removing a non-existing file is not an error 0.14.0 (2018-10-04) + Added fz::equal_insensitive_ascii + Added insensitive_ascii parameter to fz::starts_with and fz::ends_with - Fixed namespace of to_wstring in wx glue 0.13.2 (2018-09-21) - Fix regression in fz::shared_value::clear - Fix parsing of URIs without path 0.13.1 (2018-09-10) + Made fz::scoped_lock movable - Fix a few compiler warnings 0.13.0 (2018-07-16) + Add bool return value to replace_substrings to indicate whether something has been replaced. + fz::sprintf: Added %c format specifier - MSW: Work around problematic DLL export of templates, timers now work if libfilezilla has been built as DLL 0.12.3 (2018-06-08) + Event handlers can now removed themselves while inside a callback + Added fz::query_string::pairs() 0.12.2 (2018-05-05) + Added parameters to base64_encode to control alphabet and padding + Improved performance of less_insensitive_ascii + *nix: Faster conversion between UTF-8 and wchar_t strings. 0.12.1 (2018-02-23) + Added fz::buffer::operator== and operator!= - Fixed bug in fz::buffer::get(size_t) 0.12.0 (2018-02-16) + Added fz::datetime::operator bool + Added fz::datetime::get_rfc822 and fz::datetime::set_rfc822 0.11.2 (2018-01-05) + Added fz::starts_with and fz::ends_with - Fix usage of delete in the fz::buffer destructor 0.11.1 (2017-10-30) + Added fz::file::fsync() to sync data to disk 0.11.0 (2017-09-29) + Add fz::buffer class - *nix: fz::process::spawn no longer calls async-signal-unsafe functions between forking and calling execv in the child. 0.10.1 (2017-08-14) - MSW: Improve handling of reparse points in fz::local_filesys 0.10.0 (2017-07-09) + Added fz::percent_encode and fz::percent_encode + Added fz::uri and fz::query_string + Added fz::less_insensitive_ascii for case-insensitive strings in maps - Moved encoding functions from string.hpp to encode.hpp - Use pkg-config instead of cppunit-config to look for cppunit. 0.9.2 (2017-05-25) + Added fz::random_bytes to obtain a vector of the passed size of uniformly distributed random bytes + Added fz::ltrim and fz::rtim + Added parameter to trim functions which characters to trim + It is now possible to detach threads from async_task 0.9.1 (2017-02-20) + Added a small helper function to fz::file to get the current position in the file + Added another version of fz::to_wstring_from_utf8 that takes a char buffer + length - Fixed extraction of single-character tokens in fz::strtok 0.9.0 (2016-11-28) + Added parameter to fz::to_integral to specify which value is returned on error. + Added fz::remove_file + Added fz::hex_encode and fz::hex_decode 0.8.0 (2016-10-25) + Added fz::str_toupper_ascii to complement fz::str_tolower_ascii + Added fz::trim and fz::trimmed for removing leading and trailing whitespace from string + Added fz::str_is_ascii - Fixed zero-padding for x and X string format conversion specifiers 0.7.1 (2016-10-03) - OS X: Work around a nasty bug in XCode where programs explicitly compiled for older versions of OS X were silently pulling in features exclusive to the new version, resulting in crashes at runtime - MSW: Fix detection of thread creation failures 0.7.0 (2016-09-24) + Add fz::base64_decode and fz::base64_encode + Add fz::strtok string tokenizer + Added non-throwing fz::to_integral + Implemented + (always sign) and - (left align) flags for fz::sprintf 0.6.1 (2016-07-27) - Fix UTF-8 conversion functions and added a testcase 0.6.0 (2016-07-20) + Add fz::sprintf, a safe replacement for for the C sprintf function 0.5.3 (2016-06-20) + Add fz::replace_substrings to search and replace substrings in std::(w)string - Explicitly request large file support on 32bit systems 0.5.2 (2016-05-20) + Add fz::shared_optional::is_same that checks whether two instances share the same underlying pointer value, like a shallow equal. + Add fz::int_to_hex_char as reverse to fz::hex_char_to_int 0.5.1 (2016-05-09) + Add constructore to sparse_optional taking pointers - Fix compilation on systems where iconv's second argument is const 0.5.0 (2016-04-15) - Handle timestamps where midnight is represented as 24:00:00.000 of the previous day - Fix inverted return value of fz::datetime::empty() - Increase performance of event loop if not using timers - Better compatibility with runtimes that change the src pointer passed to mbsrtowcs or wcsrtombs 0.4.0.1 (2016-02-22) - Fix compile error in testcase 0.4.0 (2016-02-21) + Added shared_optional and sparse_optional classes 0.3.1 (2016-01-31) - Fixed compile errors affecting some platforms - Minor documentation fixes 0.3.0 (2016-01-12) + Added functions to deal with IP address strings - Added testcase to verify string conversion functions. Some MinGW installations have broken wcsrtombs and mbsrtowcs implementations. 0.2.0 (2015-11-19) + Added local_filesys class + Added recursive_remove class + Added to_utf8 function to string.hpp as counterpart to the to_(w)string_from_utf8 functions + Added missing libfilezilla/glue/wx.hpp header mentioned in the FAQ - Fixed compile errors 0.1.0 (2015-11-02) + First public release of libfilezilla