This website contains the SPTK class library related materials. This library is using FLTK 1.x/2.x library for GUI classes. If you need UTF8 support in your FLTK 1.x application, then you can use FLTK 1.3. FLTK 2.x supports unicode for any 2.x version. SPTK uses BSD 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. 2010-03-09SPTK-4.01 During last two months, the intensive testing of non-GUI SPTK part was conducted in a couple of projects. The resulting fixes and feature additions make up the 4.01 version, that you can download as *nix tarball . Here is the list of most important changes:
The new class CReadWriteGuard is added since it's giving a noticeable advantage in some code bottlenecks. If some data shared between threads is often read and rarely modified, CReadWriteGuard has much better chances avoiding a bottleneck than CGuard. However, if data is relatively often modified, using CGuard may produce better results since underlying mutix (CGuard uses CWaiter class) is faster than read_write_lock (CReadWriteGuard uses CRWLock class). 2009-12-29SPTK 4.00 (release) After several months of testing, SPTK team proudly announces the release of SPTK 4.00. It's available for download as *nix tarball . Several small bugs were fixed since last release candidate, mostly discovered when tested on different OSes. The most important changes introduced in SPTK 4:
Besides changes listed above, this release went through race conditions optimization. 2009-12-09SPTK-4.00_rc5 The next release candidate is out as *nix tarball . As usual, it fixes bugs discovered since last release candidate. The testing was mostly focused on multi-threaded and SSL capabilities of SPTK classes. The following changes were the most noticable:
2009-11-19SPTK-4.00_rc4 The next release candidate is out as *nix tarball . It fixes most of the bugs discovered for almost a month of testing. The testing was mostly focused on multi-threaded use of SPTK classes. Extensive testing was conducted using valgrind tools (memcheck, helgrind) and allowed detecting race conditions in several classes. We can't claim that we fixed all of them, but most of the race conditions are removed. SPTK set of examples was also modified to demonstrate the correct usage of SPTK classes in order to minimize race conditions. The following changes were the most noticable:
2009-11-18SPTK website Since SPTK is taking too much space on the hosting site, we decided to minimize that space. Most of the old versions (prior to 3.5.0) are removed. The zip-versions of SPTK tarballs are removed. We hope that anyone can open tar.bz2 archives these days. Please let us know if this is a problem for you. We apologize for the inconvenience. 2009-10-24SPTK SVN Completed CMake build system adjustments for FreeBSD, including FLTK support. The following programs are required for FreeBSD and Solaris builds: gmake, gtar. The general suggestion is: On the platforms where gmake and make are installed simultaneously, gmake should be used instead of make to build SPTK. 2009-10-20SPTK SVN Fixed CMake build system to work on FreeBSD (besides FLTK packages). 2009-10-19SPTK-4.00_rc2 Second release candidate for SPTK-4.00 is out. You can download this version *nix tarball or zip archive . After extensive testing, the following bugs were fixed since rc1:
Also, the following code was optimized to increase performance:
2009-09-26SPTK Support Starting from 2009/09/26, Melbourne company Linotex Pty Ltd, one of the sponsors of SPTK project, offers commercial support for SPTK. Please, visit SPTK support page for more information. 2009-09-19SPTK SVN SPTK SVN is updated. The following changes are made:
The changes would be merged into SPTK-4.00-rc2 after testing is complete. 2009-09-15SPTK-4.00-rc1 Introducing SPTK4. For the last several months, the development of SPTK was dedicated to preparing to SPTK major release, 4.0. This version is a release candidate. All the class interfaces are now frozen. The only changes allowed now are the bug fixes. You can download this version *nix tarball or zip archive . Many changes introduced in SPTK-3.8.x versions, are included into new release. There are also some changes that were not a part of SPTK 3.x. The following changes are the most interesting in this release:
2009-05-30SPTK SVN SPTK now compiles under Intel ICC compiler. Going through the source code and removing multiple warnings had a side effect: Performance of several pieces of code was improved, mostly because of minimising excessive use of copy constructors. The development of long time asked support for FLTK 2.x has started. We plan on supporting both FLTK branches, 1.x and 2.x. The current SPTK snapshot doesn't compile with FLTK 2.x yet - we will announce when it's ready. 2009-05-17SPTK SVN SPTK transformation into version 4 continues. Here is the description of latest changes:
2009-04-19SPTK SVN The development of SPTK version 4 has started. SPTK SVN repository is renamed from sptk3 to sptk. For backward compatibility, the link to the old name is kept, so existing checkouts continue to stay valid. The main change this time is the conversion to a single database object that allows to connect to any database supported by SPTK. This change brakes the source compatibility with the existing SPTK projects, however the changes required to fix existing projects are minor. The new approach uses CDatabase objects to declare any database connection. It isn't a connection factory. The following example demonstrates both approaches, so you can compare them:
/// Old approach, using specific database object
CPostgreSQLDatabase db1("host='localhost' port=5432 user='myself' password= 'secret' dbname='mydb');
/// New approach, using CDatabase object
CDatabase database("postgres://myself:secret@localhost:5432/mydb");
CDatabaseConnection& db2 = database.connection();
In SPTK version 4, the specific database drivers are derived from CDatabaseConnection, so all the operations with db1 and db2 are identical. For the backward compatibility, database-specific drivers are still available but deprecated. One of the essentials of the new implementation is the dynamic driver load. It allows creating and loading new database drivers without recompiling SPTK. The changes described above are only available for *nix operating systems. Windows implementation would follow within a week or two. 2009-04-10SPTK SVN SPTK SVN just got a new database driver class. This time, it's COracleDatabase. As you probably guessed, it allows working with Oracle database. As usual, the examples/oracle_test.cpp is provided to test the driver. Other than that standard SPTK test, this driver wasn't tested much. Please use it with caution, or wait till the next SPTK release. New class has some limitations for query parameters:
These limitations are caused by Oracle LOB interface that requires an extra information about LOB columns at the runtime. I hope we can find a workaround for this problem in the future releases of the driver. 2009-03-23SPTK SVN SPTK has a pretty convenient, thread-safe logging mechanism that allows several threads sharing same log object. That mechanism is implemented as CProxyLog class. Till now, CProxyLog could only place messages into the log object with the same message minPriority as the target log object. If CProxyLog objects are used for different modules of the application, it is pretty handy to have a couple of new features:
The personal minPriority allows to limit messages logged by CProxyLog object. Both min priorities (for the target log and proxy log) are considered, and the most severe priority of two is used. For instance, if target log object sets min priority as LOG_INFO, and CProxyLog' min priority is LOG_WARNING, then only messages with priority LOG_WARNING or higher would make it through CProxyLog object. Message prefix also comes handy if application has several groups of messages and you need a way to distinguish these messages by the group. It's just enough to provide the group name as a message prefix in CProxyLog constructor, and the message prefix would be used automatically. The changes (above) are made in SPTK SVN, and will be included in the next SPTK release. The older news are saved here.
|