Welcome
libfilezilla is a small and modern C++ library, offering some basic functionality to build high-performing, platform-independent programs. Some of the highlights include:
- A typesafe, multi-threaded event system that's very simple to use yet extremely efficient
- Timers for periodic events
- A fz::socket class for TCP communication with infrastructure to easily add layers on top
- A TLS layer to secure communication
- A rate-limited socket layer to control traffic flow
- A datetime class that not only tracks timestamp but also their accuracy, which simplifies dealing with timestamps originating from different sources
- Simple process handling for spawning child processes with redirected I/O
libfilezilla is a cross-platform library for all major operating systems, including but not limited to Linux, *BSD, OS X and Windows.
This library is free software, it is distributed under the terms and conditions of the GNU General Public License v2+
News
2022-04-29 - libfilezilla 0.37.2 released
New features:
- Added a null_logger that doesn't do anything
Bugfixes and minor changes:
- MSW: fz::mkdir with restricted permissions now uses inheritable ACLs
- MSW: Minor performance improvements reading from fz::process and explicit cancellation of pending I/O when killing child processes.
2022-04-08 - libfilezilla 0.37.1 released
New features:
- Added convenience functions ot fz::json
Bugfixes and minor changes:
- MSW: Fixed spawning fz::process with blocking communication
2022-04-01 - libfilezilla 0.37.0 released
New features:
- *nix: password-less impersonation can take an optional group
- Added demo https client showcasing usage of fz::socket and fz::tls_layer
- Added some compile-time checks for fz::sprintf arguments
- MSW: Added fz::registry
- Added a way to use non-blocking read/write with fz::process
Bugfixes and minor changes:
- Added fz::logger_interface::log_u which assumes string arguments are in UTF-8 as opposed to the character set used by the current locale
- Disallow spawning additional threads while fz::thread_pool is in the process of being destroyed
- *nix: poll() is now mandatory, the select() based socket event loop has been removed
- Simplified fz::socket implementation through use of internal fz::poller