Skip to content

Releases: lhmouse/mcfgthread

v1.1 General Availablity Released

12 Aug 09:57
Compare
Choose a tag to compare

This release contains the following changes since v1.0:

  1. Experimental support for C11 threads has been added via the header <mcfgthread/c11.h>.
  2. Support for GCC 5 has been dropped. GCC 6 is required to build and use mcfgthread.
  3. _MCF_thread_self_tid() has been made inline, which makes recursive mutexes more efficient.
  4. 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

18 Jul 12:21
Compare
Choose a tag to compare

This release contains the following changes:

  1. Experimental support for C11 threads has been added via the header <mcfgthread/c11.h>.
  2. Support for GCC 5 has been dropped. GCC 6 is required to build and use mcfgthread.
  3. _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

20 Jun 16:13
Compare
Choose a tag to compare

This revision has addressed the following issues:

  1. A typo in comments in <mcfgthread/thread.h> has been fixed.
  2. Linking against the static library for x86 with GCC default libraries no longer ends up in undefined references.

v1.0 General Availability Released

29 May 03:47
Compare
Choose a tag to compare

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

27 May 17:04
Compare
Choose a tag to compare
Pre-release

This is the second and hopefully the final release candidate from the releases/v1.0 branch. This revision contains the following updates:

  1. Pre-compiled headers are now correctly built and used for static libraries.
  2. __gthread_* functions now return -1 upon errors, instead of returning a POSIX error number.
  3. A typo in __gthread_equal has been fixed.
  4. _MCF_sleep() is now responsive to Ctrl-C in consoles.

Full Changelog: v1.0-rc...v1.0-rc.2

v1.0 Release Candidate Available

20 May 04:36
Compare
Choose a tag to compare
Pre-release

This revision contains the following changes:

  1. The library can now be built without errors using Clang.
  2. Pre-compiled headers are now working when building the static library, instead of being ignored silently.
  3. 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

15 May 13:35
Compare
Choose a tag to compare
v1.0-beta.10 Pre-release
Pre-release

This revision contains no feature, but the following improvements:

  1. The __MCF_STATIC_ASSERT() macro is now functional in C++.
  2. Semaphore and event should no longer cause compiler errors if compiled as C++98.
  3. x86 builds without optimization enabled no longer end up with an undefined reference to __udivdi3().
  4. When building the library, pre-compiled headers are now enabled by default, which can be disabled by passing --disable-pch to configure.
  5. 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

13 May 05:04
Compare
Choose a tag to compare
v1.0-beta.9 Pre-release
Pre-release

This revision contains the following changes:

  1. Two new synchronization primitives, _MCF_event and _MCF_sem, have been added:
    • The _MCF_event primitive can be used to implement std::atomic_flag; read event.h for details.
    • The _MCF_sem primitive is an anonymous semaphore.
  2. 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.
  3. 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

07 May 14:49
Compare
Choose a tag to compare
v1.0-beta.8 Pre-release
Pre-release

This revision contains the following changes:

  1. 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.
  2. __MCF_ALWAYS_INLINE functions now have external linkage (the static specifier has been removed) to prevent warnings when they are called from extern inline functions.

Full Changelog: v1.0-beta.7...v1.0-beta.8

v1.0-beta.7

06 May 06:07
Compare
Choose a tag to compare
v1.0-beta.7 Pre-release
Pre-release

This revision contains the following changes:

  1. Some functions have been optimized to reduce code size, which unfortunately does not always work due to a GCC bug. Clang is not suffering from this issue.
  2. __gthread_join() and __gthread_detach() now detect non-joinable threads and fail accordingly, instead of decrementing the reference count blindly and causing undefined behavior. This is an ABI break if your program is linked against mcfgthread without optimization enabled. Upgrading is suggested, as soon as possible.

Full Changelog: v1.0-beta.6...v1.0-beta.7