All notable changes to the Sigmyne/xchange library will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Upcoming feature release, possibly around 1 August 2026.
- Now installing
xmutex.hcontaining portable mutex macros.
-
CMake install to skip
.gitignoreinexamples/. -
Makefiledoc install to match CMake. -
CMake export targets from build-directory (for dependent builds)
-
examples/Makefileto work standalone, withoutconfig.mk.
Maintenance release with improved portability (esp. Windows, MacOS, and BSD). It also enables ports to vcpkg and Homebrew (coming very soon...).
- #23: Removed unneeded includes of UNIX-specific
unistd.h(blocking portability).
-
#23: Portability to Windows, MacOS, and BSD.
-
#23: CMake build configuration, alongside the GNU make config.
-
#23: New GitHub Actions workflows for multi-platform checks.
-
#23: Use portable mutexes in
xlookup.c. -
#23:
xjsonerror/warning reporting viastaticfunctions instead of niche macros that Windows does not support. -
#23:
xGetAsLongAtIndex()andxGetAsDoubleAtIndex()switch to setting errno toEINVALinstead ofENOSR, as the latter is not defined on BSD.
Maintenance release with minor code style improvements.
- #18: A few code style improvements, spotted by cppcheck.
Minor feature release with bug fixes.
-
#15:
xPrintFloat()printed an extra digit, which would appear as a 'rounding error' in decimal representations. -
#16: Width detection of platform-specific built-in integer types (i.e.,
short,int,long, andlong long). The previous implementation includedstdint.hwith__STDC_LIMIT_MACROSdefined. However, if the application source, then includedstdint.hbeforexchange.h, then the fixed-width integer limits were left undefined. As a result, we no longer rely onstdint.hproviding these limits.
xParseFloat()to parse floats without rounding errors that might result if parsing asdoubleand then casting asfloat.
Bug fix release.
-
Handling of serialized strings in
xClearField()andxCopyOfField(). -
Handling of heterogeneous arrays (type
X_FIELD) inxCopyOfField().
xDestroyLookupAndData()to destroy a lookup table including all the data that was referenced inside it.
xCreateField()to treatX_RAWtypes always as scalars, ignoring the dimensions provided.
Initial public release.