There are 72343 unique visitors to this page.

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.

Please, tell me how do you use SPTK?
In a production project
In a test project
I`m just checking it out
It`s not really useful

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 by sending mail to subscribe e-mail address . Archives can be found at here.



The most important change in this version is FreeBSD support. It passes all unit tests.

The list of most important changes includes:

  • Added support for FreeBSD. Passed unit tests. The required compiler is GCC.
  • Optimized Buffer class performance
  • Optimized SocketPool class performance
  • Increased SQLite3 query performance
  • Socket reader optimization and code reformat
  • Modified SocketEventType to allow simultaneosly show data, hangup, and error conditions.
  • Updated SynchronizedQueue tests
  • Fixed unit tests for ThreadManager

The most important bugs fixed:

  • Fixed a bug in SQLite3Database for the long database path



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.

Valid XHTML 1.0! If you have any questions or comments regarding this page feel free to drop a line to Alexey Parshin.
Design by Michael Perlov