Skip to content

Version 6.1.0: Flexible aliasing, mingw compatibility, CMake improvements

Compare
Choose a tag to compare
@eyalroz eyalroz released this 17 Oct 12:00
· 29 commits to master since this release

Dear users: Your feedback from building and using the library in a wide variety of environments is what allows me to make safer and more portable releases. Please email me or post an issue if you notice a bug or unexpected behavior.

Changes since v6.0.0:

Bug fixes

Compatibility

  • #130 : _vsprintf() renamed to avoid clash with msys/mingw headers
  • #132 : Now avoiding ssize_t declaration conflict with mingw
  • #129 : Differentiating the printf and gnu_printf function format attribute, due to msys2 "sensibilities"
  • #144 : Removed redundant extern "C" which is disliked by Apple clang 13

Other bug fixes

  • #126 : Dropped gratuitous parentheses in the definition of ATTR_PRINTF for non-GNUC compiler,

Build configuration

  • #142 : Use CMake's export() and install the resulting exported targets
  • #139 : Repository can be used with CMake's FetchContent mechanism (using the Craig Scott approach).

Other changes

  • #141 Now supporting two forms of aliasing of standard library functions:
    • hard aliasing (supported since v5.0.0, in this repository): The compiled library exposes printf(), sprintf() etc. rather than printf_(), sprintf_() etc.
    • soft aliasing (supported before v5.0.0, in mpaland's repository): The compiled library exposes printf_(), sprintf_() etc. and does not clas with the standard library; when including its headers, macros replace printf_ with printf_, sprintf with sprintf_ etc.
      The hard-aliasing is more robust and less error-prone - but for some people it's imperative for the exported symbols to differ from the standard library's. So, the CMake configuration now has three possible values for the aliasing option (the two modes + no-aliasing, which is the default).
  • #140 _vsprintf() now avoids reading past the end of the format string even if it is malfored
  • #137 : Now using proper C prototypes (e.g. int foo(void) rather than int foo()).
  • #145 : Standard header inclusion re-arrange

Caveats

  • Still no special handling for denormals.