Pre-release
Pre-release

@tdz tdz released this Apr 27, 2018 · 89 commits to master since this release

Assets 5
  • Optional modules: Modules can now be disabled at compile time. With this change, platforms that don't provide all of the required features can still be supported to some extend. Users can also disable a module and provide an alternative implementation instead. By default, all modules are enabled.
  • Transaction-aware signal handling: The new signal component of the libc module adds support for Unix signals. Transactions that receive a signal will jump to recovery. With this new feature application errors, such as segmentation faults or divisions by zero, can be handled in a coordinated way.
  • Errors during casts or arithmetic operations are now recoverable.
  • The license of the libc module's fileid.{c,h} has been fixed to MIT.
  • Improved documentation.
  • Bug fix: Generator scripts for the release tarball now create a buildable package.
Pre-release
Pre-release

@tdz tdz released this Mar 4, 2018 · 167 commits to master since this release

Assets 4
  • Bug fix: Tarball does no longer depend on hard-coded paths (PR #253)
Pre-release
Pre-release

@tdz tdz released this Feb 27, 2018 · 167 commits to master since this release

Assets 5
  • Cate: Cate is now the official mascot of the picotm project.

  • Safe type casting: The type-casting module provides safe type casting between C types. Overflows and underflows of the destination type's range result in a rollback of the transaction.

  • Safe arithmetics: The arithmetics module provides safe addition, subtraction, multiplication and division for C types. Overflows, underflows or division-by-zero errors result in the rollback of the transaction.

  • Reworked module interface: The new module interface allows for better
    sharing of a module's call-back function. Further led to cleanups of
    internal data structures and a reduced size of the log entries.

  • Improved documentation.

  • Bug fix: Doxygen now generates the documentation for errors involving kern_return_t on Mac OS correctly. (#239)

  • Bug fix: Fix memory handling in the TM module that resulted in inconsistent commits. (#240, #241)

Pre-release
Pre-release

@tdz tdz released this Feb 2, 2018 · 203 commits to master since this release

Assets 5
  • Bug fix: Fix memory handling in the TM module that resulted in inconsistent commits. (#242)
Pre-release
Pre-release

@tdz tdz released this Jan 27, 2018 · 203 commits to master since this release

Assets 5
  • Single-byte Transactional Memory. The TM module now maintains state for each individual byte. Previous versions only operated on complete memory words. The new feature avoids problems with dynamic memory and false positives by memory checkers.
  • TM-buffer discards: Transactional memory buffers can now be discarded when they are freed. This improves the performance of free_tx() and similar functions.
  • Valgrind-instrumented test cases. In addition to regular testing, all single-threaded test cases now run under Valgrind.
  • Tests for math error. Many tests have been added to test the error detection in the libm module.
  • Transactional txlib-entry initialization. Entries for txlib data structures can now be initialized from within transactions; hence simplifying the use of the data structure in general.
  • Redesigned event log.
  • Improved portability of Autoconf scripts.
  • Bug fix: Restore shared libraries (#219)
  • Bug fix: Fix test for libc (#220, #236)
  • Bug fix: Release old memory buffers in realloc_tx() (#224)
  • Bug fix: Release OFD transactions at transaction end (#227)
Pre-release
Pre-release

@tdz tdz released this Dec 26, 2017 · 253 commits to master since this release

Assets 5
  • Added support for MacOS X, Windows and FreeBSD. Picotm now supports MacOS X and FreeBSD natively. Windows is supported through the Cygwin compatibility layer.
  • Added feature-test macros. Presence of transactional interfaces for system libraries is now announce at build time by C pre-processor macros. Test for PICOTM_<module>_HAVE_<interface> to be defined to 1.
  • Added test cases for math functions. All functions in the libm module now have at least one test case.
  • Bug fix: Don't free alloca()-allocated memory. (#173)
  • Bug fix: Decode 'mode_t' as int when used in varargs. (#182)
  • Bug fix: Don't roll-back twice during recovery. (#208)
  • Bug fix: Don't roll-back when saving FPU exception flags. (#212)
Pre-release
Pre-release

@tdz tdz released this Nov 27, 2017 · 400 commits to master since this release

Assets 4
  • New transactional data structures. Picotm now supports transactional lists, multisets, queues and stacks. Operations on these data structures provide concurrency control and error detection, and integrate with the transaction manager.
  • Unused functions and static variables can now be removed during the link step. This can greatly reduce the size of statically linked executables.
  • Bug fix: Failure to initialize a transaction will now be handled correctly by starting error recovery. (#139)
  • Bug fix: Irrevocability state is released exactly once during a roll back. (#160)
Pre-release
Pre-release

@tdz tdz released this Oct 27, 2017 · 448 commits to master since this release

Assets 4
  • Added lock manager. The lock manager maintains R/W locks, resolves conflicts and schedules locks to transactions. Different scheduling strategies and irrevocability are supported.
  • The number of retries per transaction is now limited. This change results in more predictable transaction scheduling and higher throughput.
  • Transactional Memory module now uses picotm's R/W lock. This change integrates TM into the overall locking code.
  • Individual test cases for each module. The test cases have been split up and moved to their respective module. Test infrstructure is shared among them.
  • Fix: getcwd_tx() now appends the correct command to the transaction log.
  • Fix: open_tx() now works correctly with relative paths.
Pre-release
Pre-release

@tdz tdz released this Sep 29, 2017 · 494 commits to master since this release

Assets 4
  • Added transactional sprintf() and sscanf() functions.

  • chdir_tx() now reports errors during roll-backs.

  • Added restart statistics. Call picotm_number_of_restarts() to retrieve the number of restarts performed by the local thread's last transaction. This functionality is helpful for benchmarking and performance analysis.

  • Added, reworked and cleaned up module tests. The tests result are returned in TAP format for easy integration into test harnesses.

  • Merge module tests into picotm package. Type `make check' to run all tests on your local machine.

Pre-release
Pre-release

@tdz tdz released this Aug 29, 2017 · 554 commits to master since this release

Assets 5
* Library versioning is now supported by libpicotm.so and its
  modules.

* Improved internal error handling. All calls to abort() have been
  replaced with (non-)recoverable error handling; resulting in better
  support for fail-safe systems.

* File-descriptor support has been reworked and cleaned up. There are
  now seprarate data structures for different file types and open file
  descriptions. Non-transactional corner cases are detected and reported.

* A data structure for shared reference-counted objects has been added
  to the module library.

* The GNU and POSIX variants of strerror_r() are now supported.