picotm 0.6.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 MITL
State beta

Recent Releases

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.3.018 Jul 2017 03:16 minor: Module library for tables and arrays; Fixes bug in tranasctional close(); MIT license.
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