Skip to content

Releases: jfriesne/muscle

v6.83 release

03 May 21:55
Compare
Choose a tag to compare

6.83 Released 5/3/2018

  • Rewrote the String::*IgnoreCase() methods to be more efficient
    (they no longer call ToLowerCase()).
  • Added Strcasestr() and StrcasestrEx() helper-functions to
    String.{cpp,h}.
  • Added a vc++14 sub-directory to the muscle-by-example\examples
    folder. It contains a .sln, .vcxproj files, and a BUILD_ALL.bat
    file, so that the "MUSCLE by Example" programs can be built
    using Visual Studio 2015 (or higher).
  • Added some missing .c and .cpp files to the the Visual
    Studio projects in the vc++14 folder so that the
    muscle-by-example example programs can all link.
  • Improved the DOxygen-documentation and code-formatting in
    String.{cpp,h} a bit.
  • Modified several of the muscle-by-example example programs so
    that they will compile and run even when C++11 support isn't
    enabled.
  • The Windows implementation of GetSystemPath() no longer calls
    PathRemoveFileSpecA(), which means programs including
    GetSystemPath() will no longer need to link to Shlwapi.lib.
  • Added a TimeSetupSystem class (part of CompleteSetupSystem)
    so that GetRunTime64() doesn't have to demand-calculate
    clock-frequencies on its first call.

v6.82 release

25 Apr 17:54
Compare
Choose a tag to compare

6.82 Released 4/25/2018

  • tests/Makefile-mt no longer tries to compile testreflectsession
    except when executing on an OS that testreflectsession supports.
  • Did some minor editing and re-arranging of the "MUSCLE by Example" pages.
  • Replaced a number of tags in the MkDocs with URLs
  • Removed private-inheritance of CountedObject from all the classes
    that had it -- now they include a CountedObject private member
    variable instead. This was done only because all that private
    inheritance was cluttering up the DOxygen inheritance graphs.
  • Added a DECLARE_COUNTED_OBJECT macro to CountedObject.h so that
    any potential memory-overhead of CountedObjects can be eliminated
    in cases where object-counting is not desired.
  • Removed support for the -DMUSCLE_AVOID_OBJECT_COUNTING and added
    a -DMUSCLE_ENABLE_OBJECT_COUNTING macro in its place. (That is,
    the CountedObject class is now disabled-by-default and must be
    explicitly enabled in order to use it)
  • Added "MUSCLE by Example" documentation for MiscUtilityFunctions.{cpp,h}
  • Changed a number of tags in the MUSCLE-by-Example MkDocs source
    into [urls] so that the methods they mention can be quickly reviewed.
  • server/Makefile now specifies libmuscle.a after the main() .o file.
  • Fixed some gcc warnings in the tests folder (per Mika's suggestions)
  • UnparseFile() wasn't quoting keywords with spaces properly. Fixed.
  • Fixed the dependencies in the "MUSCLE by Example" examples' Makefiles.

v6.81 release

11 Apr 17:32
Compare
Choose a tag to compare

6.81 Released 4/11/2018

  • Added a "StorageReflectSession Message Types" section
    to the "MUSCLE by Example" mkdocs pages
  • Added a graphviz diagram to reflectserver.md
  • Added an "xcode" sub-directory that contains a muscle.xcodeproj
    project that compiles MUSCLE (contributed by Ruurd Adema)
  • Added an if-test to TarFileWriter::WriteOctalASCII() to
    avoid a spurious warning from gcc under Windows (reported by Mika)
  • muscled and admin now link to libmuscle.a instead of directly
    to the .o files.
  • Changed the first parameter of ConvertReturnValueToMuscleSemantics()
    from (int) to (long) in order to avoid compiler warnings.
  • Merged in a number of patches from Ruurd Adema that fix compiler
    warnings and errors in DOxygen comments. (Thanks Ruurd!)
  • muscle/server/Makefile was inappropriately including muscled.o
    in the libmuscle.a library. Fixed.
  • muscle/server/Makefile was specifying certain build-flags twice. Fixed.
  • Fixed a bug where the new item added by the zero-arguments
    versions of Queue::AddTail() and Queue::AddHead()
    was not being reliably default-initialized.
  • Added a note to the zero-argument Queue::AddTailAndGet()
    and Queue::AddHeadAndGet() methods' documentation that for
    POD ItemTypes, the value they return a pointer to may not
    be in an initialized state.

v6.80 release

02 Apr 22:03
Compare
Choose a tag to compare

6.80 Released 4/2/2018

  • Added the html/muscle-by-example tour MkDocs-source sub-directory.
  • Added ReadFrom() and WriteTo() methods to the PacketDataIO API
    (as convenient alternatives to calling SetPacketDestination()
    and/or GetSourceOfLastReadPacket())
  • PlainTextMessageIOGateway now properly supports packet-based I/O.
  • MessageIOGateway, PlainTextMessageIOGateway, and
    RawDataMessageIOGateway all now support a
    PR_NAME_PACKET_REMOTE_LOCATION field which can be used to
    determine a UDP packet's source and/or destination when the
    gateway is being used in conjunction with a PacketDataIO.
  • Added a GetFieldTypeForName(const String &) convenience method to
    the Message class.
  • Added an IPAddress(const String &) constructor.
  • Added a GetPrettyTypeCodeString() function to Message.h, that returns
    a String object (instead of writing into a char[] buf), because really.
  • Added the IHostNameResolver interface, and the PutHostNameResolver(),
    RemoveHostNameResolver(), and ClearHostNameResolvers() functions,
    so that programs can add their own custom back-end functionality
    to the GetHostByName() function if they want to.
  • Added a GetHostByNameNative() function that does hostname lookup
    without any IHostNameResolver callbacks.
  • Added a Set() method to the IPAddressAndPort class.
  • Changed UDPSocketDataIO::Write()'s multi-target behavior to
    try to send to all targets even if some of the sends fail.
  • Moved SeekableDataIO and PacketDataIO subclasses into their
    own separate header files.
  • Updated test/testudp.cpp to support PlainTextMessageIOGateway also.
  • Fixed hexterm.vcproj to include some .cpp files that were missing.
  • muscled and libmuscle.a are now compiled without the
    DMUSCLE_SINGLE_THREAD_ONLY and DMUSCLE_ENABLE_MEMORY_TRACKING
    flags, so that libmuscle.a can be used as-is in more projects.
  • The PRINT_CALLS_PER_SECOND macro in TimeUtilityFunctions.h was
    broken, and printed more often than it was supposed to. Fixed.
  • Fixed a bug in SysLog.cpp's log-rotator code that could cause
    it to delete log-files prematurely under certain circumstances.
  • Fixed a bug that could cause Message::FindData(fn, B_ANY_TYPE, ...)
    to crash.
  • Added a number of additional .cpp files to the libmuscle.a
    file generated in the server folder.
  • Fixed an out-of-date comment in StdinDataIO.h
  • Half-specified numeric-range clauses in StringMatcher strings
    weren't being matched correctly. Fixed.
  • The default value of the (launchBits) argument in some of the
    ChildProcessDataIO::System() methods was set incorrectly. Fixed.

6.72 release

05 Jan 19:42
Compare
Choose a tag to compare

6.72 Released 1/5/2018

  • MUSCLE_AVOID_CPLUSPLUS11 will now be #defined automatically
    inside MuscleSupport.h if it wasn't explicitly specified AND
    the __cplusplus preprocessor token is defined to a value
    smaller than 201100.
  • Added a muscleClearArray() templated convenience functions to
    MuscleSupport.h
  • Fixed a deprecation warning for kSCNetworkInterfaceTypePPTP in
    NetworkUtilityFunctions.cpp (MacOS/X only)
  • AtomicCounter.h and Mutex.h will now use the corresponding
    C++11 APIs in their internal implementation unless
    MUSCLE_AVOID_CPLUSPLUS11 is defined.
  • Added logic to detect XCode versions before 8.0 and auto-enable
    MUSCLE_AVOID_CPLUSPLUS11_THREAD_LOCAL_KEYWORD when they are
    detected, since XCode's clang++ didn't support the thread_local
    keyword before XCode 8.0.
  • Fixed compile error in AtomicCounter.h if C++11 was enabled
    and also MUSCLE_SINGLE_THREAD_ONLY was defined.

6.71 release

03 Nov 23:04
Compare
Choose a tag to compare

6.71 Release 11/3/2017

  • Added a GetFieldType() method to the MessageFieldNameIterator
    class, for convenience.
  • Added a 'writeToStdout' argument to StdinDataIO's constructor so
    that StdinDataIO can optionally Write() data to stdout as well.
    (The argument defaults to false, for backwards compatibility)
  • SanitySetupSystem now verifies that sizeof(void*)'s value
    corresponds correctly to the presence/absence of the
    MUSCLE_64_BIT_PLATFORM macro, and panics if it doesn't.
  • Added constructors to MultiQueryFilter (and its subclasses)
    that take a std::initializer_list of child ConstQueryFilterRef's,
    for convenience. (requires C++11 or later to use)
  • CMakeLists.txt now includes the files in the dataio subdirectory
    as part of muscle.lib (except for SSLSocketDataIO.cpp, to avoid
    creating a hard-coded OpenSSL dependency)
  • Removed the 32-bit-specific implementation of CalculateHashCode64();
    now the 64-bit is used on both 32-bit and 64-bit CPUs so that
    the function will give the same results regardless of platform.

6.70 release

17 Oct 17:07
Compare
Choose a tag to compare

6.70 Released 10/17/2017

  • The ReflectServer class, if a DetectNetworkConfigChanges session
    is attached to it, will now automatically disconnect any non-local
    TCP connections just before the local computer goes to sleep, in
    order to avoid saddling any communicating peers with a moribund
    TCP connection. It will reconnect them, if possible, after the
    computer re-awakes.
  • The DetectNetworkConfigChangesSession constructor now takes
    an optional argument indicating whether or not its presence
    should enable the behavior described in the previous bullet-point.
    Defaults to true, but can be explicitly set false if you don't want
    the new behavior for some reason.
  • Added a back-end for the Thread class that uses C++11's std::thread
  • Added a back-end for the Mutex class that uses C++11's std::recursive_mutex
  • Added a back-end for the ThreadLocalStorage class that uses
    C++11's thread_local keyword.
  • Added a CMakeLists.txt file to the root directory, for those who
    prefer to compile a basic MUSCLE library and muscled using cmake
    (e.g. "cd muscle; mkdir _build; cd _build; cmake ..; make")
  • Added a IsSelfAssigned() convenience method to the IPAddress class.
  • Added FindFirstSessionOfType() and FindSessionsOfType() convenience
    methods to the ReflectServer class.
  • Moved the INetworkConfigChangesTarget interface out of
    DetectNetworkConfigChanges.h and into its own separate header file.
  • MUSCLE now requires a C++11 compiler by default. If you want to
    compile MUSCLE using an older (pre-C++11) compiler, you'll need to
    explicitly add -DMUSCLE_AVOID_CPLUSPLUS11 to your compile-flags.
  • MuscleSupport.h now automatically defines -DMUSCLE_USE_CPLUSPLUS11_THREADS
    if neither MUSCLE_AVOID_CPLUSPLUS11 nor MUSCLE_AVOID_CPLUSPLUS11_THREADS
    has been defined.
  • Checks for -DMUSCLE_USE_CPLUSPLUS11 have been removed, because
    C++11 is now the default compiler level. C++11-specific code is
    now guarded by #ifndef MUSCLE_AVOID_CPLUSPLUS11 instead.
  • Removed the "borland" subdirectory since it's obsolete.
  • Removed the deprecated SetReflectToSelf() and GetReflectToSelf()
    methods from the DumbReflectSession class.

6.62 release

14 Sep 20:30
Compare
Choose a tag to compare

6.62 Released 9/14/2017

  • Moved constructor-arguments in the .cpp files to separate lines,
    for better diff-ability when they are modified.
  • Removed the overrides of String::StartsWith() that took an
    offset parameter, since it doesn't really make sense to check
    for a prefix with an offset.
  • Fixed some warnings flagged by clang++'s -Weverything option
  • Lots of miscellaneous Doxygen header-comment fixes and cleanup
  • Added a DoxyTemplates.h header file to serve as a repository
    of common class-member definitions, to avoid repetitive boilerplate.
  • Modified String::operator==() to call memcmp() rather than strcmp()
  • Improved portablereflectclient's string parsing a little.
  • Added "const" tag to several operators in the IPAddress class
    that were supposed to have it, but didn't.

6.61 release

21 Jul 20:03
Compare
Choose a tag to compare

6.61 Released 7/21/2017

  • Added a WithInterfaceIndex() convenience method to the IPAddress
    class (for consistency with the IPAddressAndPort class's API)
  • Fixed a sign-casting error in ParseHumanReadableSignedTimeIntervalString()
    under Windows. Thanks to Mika Lindqvist for reporting this error.
  • Fixed potential crash in GetSystemPath() under MacOS/X.
  • Fixed the MCRASH macro to explicitly specify muscle::Crash()
    rather than just Crash(), so that it will work when called from
    other namespaces.

6.60 release

22 Jun 20:38
Compare
Choose a tag to compare

6.60 Released 6/22/2017

  • Added SetPriority() and GetPriority() methods to the Thread
    class, to allow specification of the CPU-priority a Thread
    should run at.
  • SimulatedMulticastDataIO's unicast-ping-packets now contain
    location information about other members of the group, so that
    even if some packets get dropped, there is a good chance that
    all members will end up knowing about of all other members anyway.
  • Added define MUSCLE_CONSTEXPR that expands to constexpr iff
    MUSCLE_ENABLE_CPLUSPLUS11 is defined, or expands to nothing otherwise.
  • Some static methods in IPAddress and IPAddressAndPort are now
    tagged with MUSCLE_CONSTEXPR so that they can be evaluated
    at compile-time, if necessary.
  • Added an optional (roundUp) argument to the
    GetHumanReadableTimeIntervalString() functions.
  • Added SetPacketSendDestination() and GetPacketSendDestination()
    virtual methods to the DataIO class.
  • Added a ProxyDataIO class that passes through all calls
    verbatim to its held child DataIO object
    o Renamed XorDataIO to XorProxyDataIO, and made it a subclass
    of ProxyDataIO.
    o Renamed PacketizedDataIO to PacketizedProxyDataIO, and made it
    a subclass of ProxyDataIO.
    o Modified the UDPSocketDataIO class to contain the above two
    virtual methods instead of SetSendDestination() and
    GetSendDestination()
    o Renamed the GetSendDestinations() and SetSendDestinations()
    methods in UDPSocketDataIO to SetPacketSentDestinations() and
    GetPacketSendDestinations(), respectively.
    o Added a GetPacketSendDestination() method implementation to the
    SimulatedMulticastDataIO class.
    o Removed the GetInternalQThread() virtual method from the
    Thread class, since there is now a more general (non-Qt-specific)
    mechanism in the Thread class that can be used instead.
    o Rewrote SimulatedMulticastDataIO to be simpler and more robust;
    in particular it now only creates two UDP sockets instead of four.
    o Removed the FailoverDataIO class, since it didn't seem useful.
    o Renamed DataIO::GetPacketMaximumSize() to GetMaximuPacketSize()
    o Split the DataIO class into separate classes: DataIO for
    basic Read()/Write()-only I/O, SeekableDataIO for file-style
    I/O where the current-seek-position can be Seek()'d, and
    PacketDataIO for UDP-style packet-based I/O with explicit
    source and destination IP addresses.
    o Modified the various DataIO subclasses as necessary so that
    they now subclass from the appropriate interface.