This website contains the SPTK class library related materials.
This library is using FLTK 1.x library for GUI classes.
If you need UTF8 support in your FLTK 1.x application, then you can use FLTK 1.3.
SPTK uses GPL/LGPL License Agreement that can be found here.
If you are brave and impatient you can get SPTK source code from SVN. The instruction is here.
The complete SPTK changes history is presented in the websvn access .
For all your questions/suggestions/bugfixes to SPTK, as well as for
general discussion sign up for our mailing list sptk@total-knowledge.com by sending mail to
subscribe e-mail address .
Archives can be found at here.
2023-03-25
SPTK-5.5.0
After a long quiet time, a new version of SPTK is available.
One of the main changes is - SPTK is switched to C++ 20 and not going back. In 2023, there isn't match point supporting C++ 17 that is now about six years old.
The following changes are most interesting:
- Added new class SocketReader. It is separated from TCPSocket and made thread-safe. The TCPSocket and SSLSocket classes are now unbuffered.
- Optimised Timer class. Added new class IntervalTimer that is faster than Timer for constant intervals.
- Moved all unit tests to under test sub-directory, and added many new unit tests.
- Added unit_tests to auto-builds. Auto-builds are updated to the list of OSes that support C++ 20. Debian is not yet included as its stable version doesn't support C++ 20.
- Modified TCPServer interface to be thread-safe.
- Added xml2json utility. It allows conversions of the files from XML to JSON and back.
- Added DateTime parameter support for SQLite3.
- Added String::in() method.
- Added better support for null values for WSInteger and WSDouble.
- Upgraded googletest to release 1.11.
- Switched code formatting to CLang-formatter
- Added support for hex flag in Buffer output to stream.
- Optimised generation of WS-classes. New version generates more modern code.
- Removed xml:: and json:: classes - replaced with xdoc:: that can read and write both, XML and JSON, and convert one to another.
- Re-written of log/log engine destructors to shared_ptr, and removed most race conditions.
- Converted most of filename parameters from String to fs::path.
Fixed bugs, with most significant listed here:
- Fixed COUT and CERR macros to require ';' at the end of statement
- Fixed bug in ODBCConnection on getting object lists from the database
- Fixed bug in Buffer compare
- Fixed BLOB fields support for all drivers, except SQLite3. Added unit tests.
- Fixed incorrect assignment of bool to Variant
- Fixed incorrect detection of MySQL libs on Linux
- Fixed bug in SQLite3 selects that fetch first row containing nulls. Added SQLIte3 unit tests
The older news are saved here.