Releases: lhmouse/mcfgthread
v1.9 General Avalibity Released
This major release contains the following changes since v1.8-ga.4:
- A new readers-write mutex, namely
_MCF_shared_mutex
, has been implemented as a replacement ofpthread_relock_t
andSRWLOCK
. It is provided for feature completeness and is not as optimized as WindowsSRWLOCK
. C++ wrappers are also provided by including cxx11.hpp in C++14 mode. - Microsoft Visual Studio passes
/EHsc
to the CL compiler by default (which is not default for CL however), assuming thatextern "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. _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.__MCF_runtime_failure()
now displays a message box.- The maximum supported alignment value by
_MCF_thread_new_aligned()
has been decreased from 256MiB to 1MiB. - 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
This major release contains the following changes since v1.8-ga.4:
- A new readers-write mutex, namely
_MCF_shared_mutex
, has been implemented as a replacement ofpthread_relock_t
andSRWLOCK
. It is provided for feature completeness and is not as optimized as WindowsSRWLOCK
. C++ wrappers are also provided by including cxx11.hpp in C++14 mode. - Microsoft Visual Studio passes
/EHsc
to the CL compiler by default (which is not default for CL however), assuming thatextern "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. _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.__MCF_runtime_failure()
now displays a message box.- The maximum supported alignment value by
_MCF_thread_new_aligned()
has been decreased from 256MiB to 1MiB. - 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
This minor release contains the following changes since v1.8-ga.3:
- 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.
- A few headers have constructions that caused warnings or errors when compiled with
-std=c89
. This has been fixed. - 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.
- The internal function
do_call_once_seh_take_over()
was mistakenly exported from the static library. It is no longer exported. - 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.
- 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
This minor release contains the following changes since v1.8-ga.2:
- Defunct ARM32 code has been removed.
- 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
This minor release contains the following changes since v1.8-ga:
- 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 ofnoexcept
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.
- When invoked from command prompt as CL.EXE,
Full Changelog: v1.8-ga...v1.8-ga.2
v1.8 General Availability Released
This major release contains the following changes since v1.7-ga.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. - The accuracy of
_MCF_tick_count()
has been improved on Windows 10. - 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
This major release contains the following changes since v1.7-ga.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. - The accuracy of
_MCF_tick_count()
has been improved on Windows 10. - 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
This major release contains the following changes since v1.6-ga.1:
- The build system has been changed from autotools to Meson. Please read README.md about how to install and use Meson.
- 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.
- 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
This major release contains the following changes since v1.5-ga.2:
- A compatibility manifest has been added to the DLL, declaring compatibility with Windows 7+.
- 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
This major release contains the following changes since v1.5-ga.2:
- A compatibility manifest has been added to the DLL, declaring compatibility with Windows 7+.
- 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