9.61 - Released 2/3/2025
- Added AppendChars() PrependChars(), and InsertChars() methods to
the String class, for efficient concatenation of partial strings. - Added WithInsert() and WithInsertedWord() methods to the String class.
- Added StrStartsWith(), StrEndsWith(), StrStartsWithIgnoreCase(), and
StrEndsWithIgnoreCase() helper functions. - Added a String pseudo-copy-constructor that also takes an argument
for how much additional preallocated buffer space to allocate. - Added an io_status_t constructor that takes a (const char *) argument.
- Added a muscle_pid_t typedef to MuscleSupport.h.
- Added MUSCLE_THREAD_LOCAL_OR_STATIC macro to ThreadLocalStorage.h.
- The string returned by io_status_t::GetDescription() now contains
the number of bytes written by the operation, on success.
- Changed the argument ISignalHandler::SignalReceived() and
SignalMultiplexer::CallSignalHandlers() from (int) to
(const SignalEventInfo &). - Removed the 4096-char restriction for OutputPrinter::printf().
- Refactored String::Append*() and String::Prepend*() to be simple
inline wrappers around String::Insert*(), to reduce code size. - Changed the last argument of WithAppend() and WithPrepend() to
specify a character-count instead of a string-repetition-count. - Replaced ChildProcessDataIO::DidChildProcessCrash() with the
more-informative method GetChildProcessExitCode(). - OutputPrinter::printf() and friends now handle calls with more
than one line of text in them correctly. - Fixed compiler warning for muscleStrcpy() and muscleStrncpy().