Summary
This is a bug fix release that addresses a race condition that can occur in multi-threaded programs when memory management is enabled. In previous versions of the library memory management was enabled by default. This is no longer the case, and it must be enabled explicitly at configure time.
Explanation of bug: The global variables used for caching and reusing allocated structures and the functions that manipulate them do not currently protect critical sections to guarantee atomicity which can lead to failures in multithreaded programs. The current fix is to disable memory management by compiling with the _NO_MEMORY_MANAGEMENT_
directive such that the thread-unsafe code must be enabled explicitly. The unsafe code may be removed in future releases if performance evaluation determines that it is a legacy feature that no longer provides a tangible performance benefit. If it does provide a measurable benefit, a thread-safe fix will be implemented.
What's Changed
- include LICENSE_LGPL in the distribution archive by @mjg in #20
- few fixes to run test_builds.sh by @ether42 in #22
- enable NO_MEMORY_MANAGEMENT by default by @ether42 in #23
New Contributors
Full Changelog: v1.4.0...v1.4.1