Skip to content

Releases: lhmouse/mcfgthread

v1.9 General Avalibity Released

01 Nov 09:20
Compare
Choose a tag to compare

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

  1. A new readers-write mutex, namely _MCF_shared_mutex, has been implemented as a replacement of pthread_relock_t and SRWLOCK. It is provided for feature completeness and is not as optimized as Windows SRWLOCK. C++ wrappers are also provided by including cxx11.hpp in C++14 mode.
  2. Microsoft Visual Studio passes /EHsc to the CL compiler by default (which is not default for CL however), assuming that extern "C" functions can't throw C++ exceptions. This used to cause misoptimization when headers were used with MSVC. For MSVC these functions have been marked explicitly potential to throw C++ exceptions.
  3. _MCF_thread_self() is no longer allowed to return a null pointer, eliminating checks for null values on the caller side. If it needs to allocate the thread control structure but there is no enough memory, a static emergency structure which is pre-allocated at process startup is returned. If it is in use by another thread, the call blocks until it is freed.
  4. __MCF_runtime_failure() now displays a message box.
  5. The maximum supported alignment value by _MCF_thread_new_aligned() has been decreased from 256MiB to 1MiB.
  6. A few issues when building with link-time optimization (LTO) have been fixed.

Full Changelog: v1.8-ga.4...v1.9-ga.1

v1.9 Beta Released

19 Oct 02:05
Compare
Choose a tag to compare
v1.9 Beta Released Pre-release
Pre-release

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

  1. A new readers-write mutex, namely _MCF_shared_mutex, has been implemented as a replacement of pthread_relock_t and SRWLOCK. It is provided for feature completeness and is not as optimized as Windows SRWLOCK. C++ wrappers are also provided by including cxx11.hpp in C++14 mode.
  2. Microsoft Visual Studio passes /EHsc to the CL compiler by default (which is not default for CL however), assuming that extern "C" functions can't throw C++ exceptions. This used to cause misoptimization when headers were used with MSVC. For MSVC these fucntions have been marked explicitly potential to throw C++ exceptions.
  3. _MCF_thread_self() is no longer allowed to return a null pointer, eliminating checks for null values on the caller side. If it needs to allocate the thread control structure but there is no enough memory, a static emergency structure which is pre-allocated at process startup is returned. If it is in use by another thread, the call blocks until it is freed.
  4. __MCF_runtime_failure() now displays a message box.
  5. The maximum supported alignment value by _MCF_thread_new_aligned() has been decreased from 256MiB to 1MiB.
  6. A few issues when building with link-time optimization (LTO) have been fixed.

Full Changelog: v1.8-ga.4...v1.9-beta

v1.8 General Availability 4 Released

09 Sep 06:13
Compare
Choose a tag to compare

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

  1. Previously, some inline functions in headers are still inlined when optimizing for size, causing code size to undesirably grow. This has been fixed by conditionally disabling fast paths when optimizing for size.
  2. A few headers have constructions that caused warnings or errors when compiled with -std=c89. This has been fixed.
  3. It is now possible to build mcfgthread in a Cygwin or MSYS2 MSYS shell.
    • Note: Only the DLL is functional. The static library requires special support from mingw-w64 CRT which does not exist in the Cygwin or MSYS2 CRT.
    • Some test programs hang due to unknown reasons.
  4. The internal function do_call_once_seh_take_over() was mistakenly exported from the static library. It is no longer exported.
  5. When cross-building GCC from scratch, it is required to build mcfgthread before the mingw-w64 CRT. Meson will no longer check for a working linker for cross setups, as there can't be one.
  6. A new library, libmcfgthread-minimal-1.dll, has been introduced.
    • It lacks gthread, libcxx or c11 routines, and is therefore much smaller than the main library.
    • This library is provided only as a DLL and not as a static library.
    • It is otherwise binary-compatible with the main library. A program can actually link against both.

Full Changelog: v1.8-ga.3...v1.8-ga.4

v1.8 General Availability 3 Released

01 Aug 05:29
Compare
Choose a tag to compare

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

  1. Defunct ARM32 code has been removed.
  2. The GCC Runtime Library Exception has been applied. This means that, under most circumstances, you can now distribute EXEs or DLLs which link to mcfgthread (either statically or dynamically) without effecting an LGPL violation.
    • If you have a copy of mcfgthread that does not have this exception, you are free (!) to apply it yourself, and redistribute the copy as such.

Full Changelog: v1.8-ga.2...v1.8-ga.3

v1.8 General Availability 2 Released

15 Jun 07:14
Compare
Choose a tag to compare

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

  1. Some issues about using the headers with MSVC have been fixed:
    • When invoked from command prompt as CL.EXE, /EHc is not turned on by default, and the over-extensive use of noexcept used to cause compiler errors.
    • When invoked from a Visual Studio project where /EHsc is default, __MCF_gthr_once() used to be erroneously assumed to never throw an exception, and might result in an failure if an exception was thrown.

Full Changelog: v1.8-ga...v1.8-ga.2

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