9.40 Release
9.40 - Released 6/24/2024
- Added a MUSCLE_STATIC_ASSERT_ARRAY_LENGTH macro to support/MuscleSupport.h
so that array declarations can error out at compile time if they don't
contain the expected number of values. - Added a DECLARE_LABELLED_BITCHORD_FLAGS_TYPE macro to support/BitChord.h
so that BitChord::ToString() can return human-readable bit-labels if desired. - Added GetBitLabel() and ParseBitLabel() methods to the BitChord class.
- DefaultConsoleLogger now checks for a MUSCLE_LOG_TO_STDERR environment
variable on startup, and if one is present, it will force all Log()
and LogTime() output to stderr. This is useful in cases where the
parsing of the "logtostderr" command line argument doesn't happen
soon enough to prevent all output to stdout. - Added GetCenter() and CenterTo() methods to the Rect class.
- Added | operators to the Rect class that take a Point as an argument.
- Added a Rect::IsRational() method.
- Renamed the non-const x() and y() methods of the Point class to
SetX()/SetY(), to better match the style of the other classes. - Added GetX() and GetY() methods to the point class, for consistency.
- Renamed Rect::Width() to Rect::GetWidth()
- Renamed Rect::Height() to Rect::GetHeight()
- Renamed Rect::IntegerWidth() to Rect::GetWidthAsInteger()
- Renamed Rect::IntegerHeight() to Rect::GetHeightAsInteger()
- Updated PointerAndBits.h to disable tagged-pointers on 32-bit systems,
since we can't guarantee that a heap-pointer's high bit won't be
legitimately set for heap objects on those systems. - Changed the windows implementation of muscleSprintf() to use the
templated inline function used on other OS's, as the old macro-based
implementation wasn't playing nice with explicit namespaces prefixes. - Changed the implementation of muscleFopen() to use inline functions
instead of macros for better namespace behavior. - Changed the implementation of muscleStrcpy() to use templates
to enforce memory-safery, instead of just being a macro. - Added a work-around to Hashtable.h to avoid a spurious compile-time
error regarding std::atomic under MSVC2017 and earlier. - Fixed handling of the head=numbytes argument in the snoopsharedmem tool.