Skip to content

9.60 Release

Latest
Compare
Choose a tag to compare
@jfriesne jfriesne released this 19 Jan 23:23
· 15 commits to master since this release

9.60 - Released 1/19/2025

  • Added a PreallocatedItemSlotsCount class to MuscleSupport.h
    which can be used to explicitly specify how many item-slots
    a container's constructor should preallocate space for.
  • Added constructors to the Queue, Hashtable, and String classes
    that take a PreallocatedItemSlotsCount as an argument.
  • Added a GetUnmangledSymbolName() utility function to
    util/MiscUtilityFunctions.h, for easier stack trace reading.
  • When debug or trace output is enabled, the deadlock finder
    will now capture stack traces and print them out as part of
    its detected-deadlock output.
  • Added a copy constructor to the ICallbackSubscriber class.
  • Added an UnlockEarly() method to the SpinLockGuard, MutexGuard,
    ReadOnlyMutexGuard, and ReadWriteMutexGuard classes.
  • Added DECLARE_NAMED_MUTEXGUARD, DECLARE_NAMED_READONLY_MUTEXGUARD,
    DECLARE_NAMED_READWRITE_MUTEXGUARD and DECLARE_NAMED_SPINLOCKGUARD
    macros.
  • Added CalculateChecksum() methods to the QueryFilter classes.
  • Added CalculateChecksum() methods to the Queue, Hashtable, ConstRef,
    StringMatcher, Tuple, and Void classes.
  • Added equality-test operators and an IsEqualTo() virtual method
    to the QueryFilter classes.
  • Added an OutputPrinter convenience class (in util/OutputPrinter.h)
    for code that wants to print to a FILE or a String or to the Log
    without having to write three different implementations.
  • Added a CalculatePODChecksums() convenience function for summing
    multiple checksums together.
  • Updated various PrintToStream() methods to take an optional
    OutputPrinter object rather than a (FILE *).
  • String::Arg(T* t) now expands to string returned by String::Arg(*t),
    or to an empty String if t is NULL.
  • Renamed all PrintToStream() methods to Print(), as they no longer
    necessarily are printing to a stream.
  • Tweaked Snooze64() to handle long snooze times a bit better.
  • Simplified the EmscriptenWebSocket callback API.
  • Replaced overloaded_preprocessor_macro.h with conditional
    usage of the comma-swallowing operator (##VA_ARGS).
  • Simplified mutex-Locking code via MutexGuards where possible.
  • Replaced CalculateChecksumForFloat() and CalculateChecksumForDouble()
    with a general/templatized CalculatePODChecksum() method.
  • Removed LogHexBytes() since PrintHexBytes() can now do the same thing.
  • Updated the muscle-by-example programs to use an OutputPrinter in
    their PrintExampleDescription( functions.
  • The deadlock finder no longer warns about inconsistent
    locking orders that consist entirely of shared/read-only locks.
  • The deadlock finder no longer considers TryLock() calls at
    the end of a locking-sequence to be significant, as they
    can't affect the deadlocking behavior of the app.
  • Fixed capitalization of Emscripten callback method names.
  • Fixed some build warnings under MSVC.
  • Updated the MutexLockRecordLog and MutexLockSequencesRecord
    classes so they are properly initialized via a constructor
    and placement-new, rather than an ad-hoc Initialize() method.