picotm 0.13.0

Picotm is a system-level transaction manager. It provides transactional semantics for low-level and operating-system functionality. It’s flexible and extensible to cover exactly your requirements. Error handling and thread isolation are provided by picotm, all you have to implement is the application logic. Picotm is implemented in plain C and is well-suited for implementing applications and firmware that is secure, reliable and thread-safe; yet easy to develop. This makes picotm well-suited for multi-threaded and fault-tolerant software.

Tags embedded-systems c linux developers manufacturing database-server application-framework
License GNU LGPLv3
State beta

Recent Releases

0.13.014 Nov 2018 20:09 minor feature: Changes since 0.12.0: Adds support for transaction-safe locale-state and time/string conversion. Pointer-attached state. License change to LGPLv3. Bug fixes.
0.12.027 Apr 2018 12:19 minor bugfix: Changes since 0.11.0: Adds support for transaction-aware Unix signal handling. Improved documentation. Bug fixes.
0.11.104 Mar 2018 13:30 minor bugfix: Changes since 0.11.0: Bug fix: Tarball does no longer depends on hard-coded paths.
0.11.027 Feb 2018 17:33 minor: Changes since 0.10.0: Safe type casting and arithmetic that detect and handle overflows, underflows and div-by-zero errors. The cat Cate is now the project's mascot. TM bug fixes.
0.10.102 Feb 2018 11:48 minor: Chanes since 0.10.0: Fixes a critical bug in the transactional-memory module.
0.10.027 Jan 2018 15:14 minor: picotm 0.10.0 adds support for single-byte Transactional Memory, fast discards of free'd transactional memory, Valgrind-instrumented testing, bug fixes, and much more.
0.9.026 Dec 2017 17:29 minor: Added support for Windows, MacOS X and FreeBSD. Added feature-test macros. Bug fixes.
0.8.027 Nov 2017 14:14 minor: Added transactional lists, multisets, queues, stacks; Fixed init errors and irrevocability on transaction roll backs.
0.6.030 Sep 2017 10:56 minor feature: Added transactional snprintf(), sscanf(); Added restart statistics; Added module tests and `make check'.
0.5.029 Aug 2017 06:59 minor: Library versioning; Distinct file buffers; Internal error handling without abort(); strerror_r(); Shared ref-count object.
0.4.031 Jul 2017 08:54 minor: Transactional access to file-descriptor table; Adds R/W locks, R/W state, tree maps, ref counters to module library; C11 code.
0.2.001 Jun 2017 03:15 minor feature: Add file 'ReleaseProcess', which describes the steps of making a release. Rename picotm_abort() to picotm_restart(). Add enum picotm_error_code . Add struct picotm_error . Save transaction errors over restarts. Add picotm_recover_from_error(). Export public interfaces for error detection. Return module errors in struct picotm_error . Pass module errors to top-most level of commit infrastructure. Libc: Removed unused error codes ERR_CCMODE and ERR_PEERABORT. Libc: Return errors from allocator callbacks. Libc: Return errors from error-module callbacks. Libc: Return errors from module callbacks of struct fildes_tx . Libc: Return errors from module callbacks of struct ofd_tx . Libc: Return errors from module callbacks of struct fd_tx . Libc: Return errors from get_fd() and get_iofd(). Libc: Return errors from module callbacks of struct fd . Libc: Return errors from module callbacks of struct ofd . Libc: Return errors from module callbacks of struct vfs_tx . Libm: Separate public interface from FPU module. Libm: Clean up FPU module. Libm: Return errors from internal functions. tm: Move thread-local module data to struct tm_module . tm: Clean up module callbacks. tm: Move module interfaces to module. c,h . tm: Return errors from module callbacks of struct tm_vmem_tx . Return 0/-1 instead of true/false from finish_modules(). Clear error state when (re-)starting a transaction. Add empty error status, static error initializer, and error test. Initialize all instances of struct picotm_error . Tests: Remove obsolete socket test case. Libc: Declare interfaces missing in unistd.h. Tests: Restore VFS test case. Tests: Remove obsolete code and comments from main.c. Tests: Rename test program to picotm-test. Export error interface as PICOTM_NOTHROW instead of PICOTM_EXPORT. Add missing PICOTM_END_DECLS. Libc: Add missing PICOTM_ BEGIN,END _DECLS statements. Doc: Enable sub-directories for doxygen output. Doc: Disable doxygen VERBATIM_HEADERS. Doc: Don't include undocume
0.1.010 May 2017 18:44 major feature: picotm 0.1.0 (2017-04-29) ------------ * Added new paradigm for error handling. The original error handling had to be provided by the user and was split between execution and commit phase of the transaction. Under the new paradigm, the error detection and recovery is provided by picotm. Users most only provide fall-back code when recovery fails. * Cleaned up and restructured existing source code. All code is now self-contained without dependencies on external compiler tools, besides the GNU toolchain. * Restored modules for memory allocation, file-descriptor I/O, VFS, math, and helper functions from libc. * Added module for Software Transactional Memory. The old STM was a fork of TinySTM, which also served as TM. * Added core transaction manager. The new TM provides an updated public interface and from-scratch implementation. * Moved tests into separate package. * Added build system based on GNU autotools * Licensed all source code under the Mozilla Public License, v. 2.0