Releases: lhmouse/mcfgthread
v1.2 Beta Released
This release contains the following changes since v1.1:
- An
inline
specifier has been added to_MCF_thread_self(void)
, which was missing. - A few mixed declarations and statements, which are allowed in C99 and C++ but not in C89, have been rectified, so they compile in GNU C89.
- In order to improve readability, inline function definitions in headers have been moved to the end.
- Some hacks, which used to pass empty lists of arguments to variadic macros, have been removed and will not effect warnings any more.
Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.1-ga.2..v1.2-beta.1
v1.1 General Availablity Released
This release contains the following changes since v1.0:
- Experimental support for C11 threads has been added via the header <mcfgthread/c11.h>.
- Support for GCC 5 has been dropped. GCC 6 is required to build and use mcfgthread.
_MCF_thread_self_tid()
has been made inline, which makes recursive mutexes more efficient.- An issue that might cause compiler errors with Clang has been fixed.
Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.0-ga.2..v1.1-ga
v1.1 Beta Has Come with C11 Threads
This release contains the following changes:
- Experimental support for C11 threads has been added via the header <mcfgthread/c11.h>.
- Support for GCC 5 has been dropped. GCC 6 is required to build and use mcfgthread.
_MCF_thread_self_tid()
has been made inline, which makes recursive mutexes more efficient.
Full Changelog: https://github.com/lhmouse/mcfgthread/compare/v1.0-ga.2..v1.1-beta
v1.0 General Availability 2 Released
This revision has addressed the following issues:
- A typo in comments in
<mcfgthread/thread.h>
has been fixed. - Linking against the static library for x86 with GCC default libraries no longer ends up in undefined references.
v1.0 General Availability Released
Thank you for your interest. As always, we are moving forward to make the world a better place.
Pre-built toolchains, including GCC and GDB, are available at https://gcc-mcf.lhmouse.com/.
The x86 build has been tested on the following platforms:
- Windows 7 (x86_64, native)
- Windows 10 (x86_64, native)
The x64 build has been tested on the following platforms:
- Windows 7 (x86_64, native)
- Windows 10 (x86_64, native)
- Wine 4.0 (x86_64, cross-built from Debian Buster)
- Wine 7.9 (x86_64, cross-built from Linux Mint 20.3)
Second v1.0 Release Candidate Available
This is the second and hopefully the final release candidate from the releases/v1.0
branch. This revision contains the following updates:
- Pre-compiled headers are now correctly built and used for static libraries.
__gthread_*
functions now return-1
upon errors, instead of returning a POSIX error number.- A typo in
__gthread_equal
has been fixed. _MCF_sleep()
is now responsive to Ctrl-C in consoles.
Full Changelog: v1.0-rc...v1.0-rc.2
v1.0 Release Candidate Available
This revision contains the following changes:
- The library can now be built without errors using Clang.
- Pre-compiled headers are now working when building the static library, instead of being ignored silently.
- Clock functions have been optimized a little.
The branch releases/v1.0 has been created for this tag.
Full Changelog: v1.0-beta.10...v1.0-rc
v1.0-beta.10
This revision contains no feature, but the following improvements:
- The
__MCF_STATIC_ASSERT()
macro is now functional in C++. - Semaphore and event should no longer cause compiler errors if compiled as C++98.
- x86 builds without optimization enabled no longer end up with an undefined reference to
__udivdi3()
. - When building the library, pre-compiled headers are now enabled by default, which can be disabled by passing
--disable-pch
toconfigure
. - New bundled import libraries for KERNELBASE.DLL and NTDLL.DLL have been added:
- mcfgthread can now be built without the mingw-w64 CRT.
- The DLL is now linked against KERNELBASE.DLL instead of KERNEL32.DLL, and calls to Windows APIs are a bit more efficient.
If there are no severe bugs or other blockers, this revision will be the first release candidate for v1.0.
Enjoy.
Full Changelog: v1.0-beta.9...v1.0-beta.10
v1.0-beta.9
This revision contains the following changes:
- Two new synchronization primitives,
_MCF_event
and_MCF_sem
, have been added:- The
_MCF_event
primitive can be used to implementstd::atomic_flag
; read event.h for details. - The
_MCF_sem
primitive is an anonymous semaphore.
- The
- Exceptions thrown from condition variable callbacks are now explicitly disallowed. Previously such exceptions used to lead to undefined behavior, but now they result in calls to
std::terminate()
instead. - A tiny wrapper function
_MCF_cond_signal(cond)
has been added, which is equivalent to_MCF_cond_signal_some(cond, 1)
.
Full Changelog: v1.0-beta.8...v1.0-beta.9
v1.0-beta.8
This revision contains the following changes:
- Atomic functions have been refactored to avoid a GCC optimization bug. This has improved performance a little by allowing dead memory stores to be optimized out, while has also reduced binary size by ~2KiB. These new atomic functions are public APIs, denoted by a single leading underscore in their names.
__MCF_ALWAYS_INLINE
functions now have external linkage (thestatic
specifier has been removed) to prevent warnings when they are called fromextern inline
functions.
Full Changelog: v1.0-beta.7...v1.0-beta.8