Skip to content

Releases: lhmouse/mcfgthread

v1.8 General Availability Released

19 May 11:51
Compare
Choose a tag to compare

This major release contains the following changes since v1.7-ga.1:

  1. A unified call_once() implementation basing on SEH has been added. This implementation is capable of unwinding stack frames that have been established by any of MSVC, GCC or Clang on all non-x86 architectures, and frames that have been established by MSVC on x86. Note GCC has no support about SEH on x86 yet.
  2. The accuracy of _MCF_tick_count() has been improved on Windows 10.
  3. An irregular use of extern "C++" which will cause errors with GCC 15 has been fixed. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114933.

Full Changelog: v1.7-ga.1...v1.8-ga

v1.8 Beta Released

10 May 07:34
Compare
Choose a tag to compare
v1.8 Beta Released Pre-release
Pre-release

This major release contains the following changes since v1.7-ga.1:

  1. A unified call_once() implementation basing on SEH has been added. This implementation is capable of unwinding stack frames that have been established by any of MSVC, GCC or Clang on all non-x86 architectures, and frames that have been established by MSVC on x86. Note GCC has no support about SEH on x86 yet.
  2. The accuracy of _MCF_tick_count() has been improved on Windows 10.
  3. An irregular use of extern "C++" which will cause errors with GCC 15 has been fixed. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114933.

Full Changelog: v1.7-ga.1...v1.8-beta

v1.7 General Availability Released

07 Apr 07:36
Compare
Choose a tag to compare

This major release contains the following changes since v1.6-ga.1:

  1. The build system has been changed from autotools to Meson. Please read README.md about how to install and use Meson.
  2. All public headers and the DLL import library can now be consumed by the Microsoft C/C++ compiler, aka. MSVC or CL. This allows to link against mcfgthread DLL in a MSVC project. Please note that this support is very minimum and experimental. If you encounter a problem, please do open an issue.
  3. Wait operations that take relative timeouts (by passing a negative timeout value) no longer include system suspension, like CLOCK_MONOTONIC on Linux.

Full Changelog: v1.6-ga.1...v1.7-ga.1

v1.6 General Availability 2 Released

26 Sep 15:59
Compare
Choose a tag to compare

This major release contains the following changes since v1.5-ga.2:

  1. A compatibility manifest has been added to the DLL, declaring compatibility with Windows 7+.
  2. The size of a TLS table is now decreased correctly during rehashing if deleted keys are detected. Previously it caused the table size to grow if the process kept allocating and deallocating TLS keys.

Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.5-ga.2..v1.6-ga.1

v1.6 Beta Released

05 Sep 02:07
Compare
Choose a tag to compare
v1.6 Beta Released Pre-release
Pre-release

This major release contains the following changes since v1.5-ga.2:

  1. A compatibility manifest has been added to the DLL, declaring compatibility with Windows 7+.
  2. The size of a TLS table is now decreased correctly during rehashing if deleted keys are detected. Previously it caused the table size to grow if the process kept allocating and deallocating TLS keys.

Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.5-ga.2..v1.6-beta.1

v1.5 General Availability 2 Released

20 May 15:31
Compare
Choose a tag to compare

This minor release contains the following changes since v1.5-ga.2:

  1. In C++, __MCF_STATIC_ASSERT_T() no longer fails to compile when the argument is of a non-boolean type.
  2. A potential deadlock condition has been fixed. (#86)

Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.5-ga.1..v1.5-ga.2

v1.5 General Availability Released

19 Apr 01:27
Compare
Choose a tag to compare

This major release contains the following change since v1.4-ga.1:

  1. TLS and per-thread exit callbacks are now functional in threads that have been created by other libraries, e.g. by CreateThread() or pthread_create(). (#81)
    • Due to the nature of implementation, access to __thread or thread_local objects in cleanup callbacks of pthread_key_create() might effect use-after-free faults. If you encounter such problems, please do not hesitate to open a new issue.

Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.4-ga.1..v1.5-ga.1

v1.5 Beta Released

12 Apr 03:51
Compare
Choose a tag to compare
v1.5 Beta Released Pre-release
Pre-release

This major release contains the following change since v1.4-ga.1:

  1. TLS and per-thread exit callbacks are now functional in threads that have been created by other libraries, e.g. by CreateThread() or pthread_create(). (#81)
    • Due to the nature of implementation, access to __thread or thread_local objects in cleanup callbacks of pthread_key_create() might effect use-after-free faults. If you encounter such problems, please do not hesitate to open a new issue.

Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.4-ga.1..v1.5-beta.1

v1.4 General Availablity Released

20 Dec 11:06
Compare
Choose a tag to compare

This major release contains the following changes since v1.3-ga.3:

  1. A new function _MCF_thread_new_aligned() has been introduced for allocating aligned user-defined data.
  2. A new function _MCF_tls_key_get_destructor() has been added, which gets the destructor of a TLS key.
  3. It is now possible to manage the reference count of a TLS key with _MCF_tls_key_get_ref() and _MCF_tls_key_drop_ref().
  4. A new function _MCF_tls_xset() has been added, which sets a new value and optionally gets its old value.
  5. Some new functions have been added to retrieve system information: _MCF_get_page_size() , _MCF_get_processor_count(), _MCF_get_active_processor_mask().
  6. A new header <mcfgthread/cxx11.hpp> has been added, which contains reference implementations of C++11 std::once_flag, std::mutex, std::timed_mutex, std::recursive_mutex, std::recursive_timed_mutex, std::conditon_variable and std::thread. This header is a drop-in replacement for toolchains that lack standard threading support, such as GCC with the win32 thread model.
    instead of zero. This is an ABI break if code checks for success by comparing the result with zero.
  7. C11 functions are now 'true' functions with file scope.
  8. When creating a thread, if no user-defined data should be requested by passing a size of zero to _MCF_thread_new(), _MCF_thread_get_data() now returns a null pointer on the new thread. Specifically, this behavior is now consistent with the main thread.

Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.3-ga.3..v1.4-ga.1

v1.4 Beta Released

14 Dec 14:55
Compare
Choose a tag to compare
v1.4 Beta Released Pre-release
Pre-release

This major release contains the following changes since v1.3-ga.3:

  1. A new function _MCF_thread_new_aligned() has been introduced for allocating aligned user-defined data.
  2. A new function _MCF_tls_key_get_destructor() has been added, which gets the destructor of a TLS key.
  3. It is now possible to manage the reference count of a TLS key with _MCF_tls_key_get_ref() and _MCF_tls_key_drop_ref().
  4. A new function _MCF_tls_xset() has been added, which sets a new value and optionally gets its old value.
  5. Some new functions have been added to retrieve system information: _MCF_get_page_size() , _MCF_get_processor_count(), _MCF_get_active_processor_mask().
  6. A new header <mcfgthread/cxx11.hpp> has been added, which contains reference implementations of C++11 std::once_flag, std::mutex, std::timed_mutex, std::recursive_mutex, std::recursive_timed_mutex, std::conditon_variable and std::thread. This header is a drop-in replacement for toolchains that lack standard threading support, such as GCC with the win32 thread model.
    instead of zero. This is an ABI break if code checks for success by comparing the result with zero.
  7. C11 functions are now 'true' functions with file scope.
  8. When creating a thread, if no user-defined data should be requested by passing a size of zero to _MCF_thread_new(), _MCF_thread_get_data() now returns a null pointer on the new thread. Specifically, this behavior is now consistent with the main thread.

Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.3-ga.3..v1.4-beta.1