oscpack Changelog

What's new in oscpack 1.1.0

Apr 9, 2013
  • Added support for arrays in messages (see OscUnitTests.cpp for example usage). (patch thanks to Tim Blechmann)
  • Fixed bugs relating to 64 bit usage (e.g. crashes in 64 bit builds on OS X).
  • Some member functions that previously used the "int" or "unsigned long" type for parameters or return values now use std::size_t (platform-defined) or osc_bundle_element_size_t (a.k.a. int32). This change was made to better support 64 bit platforms. See SVN revision 70 for details.
  • The previous point introduces a breaking change on Linux/x86_64 for callers of AsBlob() and AsBlobUnchecked(): The type of the second argument (the "size" argument) to ReceivedMessageArgument::AsBlob() and ReceivedMessageArgument::AsBlobUnchecked() has changed from unsigned long & to osc_bundle_element_size_t (an int32). You should declare your size argument variables as osc_bundle_element_size_t to avoid incompatibilities between 32 and 64 bit builds.
  • Note that oscpack does not support packets larger than 0x7FFFFFFC (see comments in class ReceivedPacket for details).
  • Oscpack defines an osc::Nil value used for sending the nil message argument value. This conflicts with Objective-C. Therefore osc::Nil is no longer defined in Obj-C++ code. There is now an osc::OscNil value, which should be preferred. osc::Nil is still available when writing C++. (fix thanks to openFrameworks)
  • Added UdpSocket::SetEnableBroadcast(). This needs to be called to enable sending to the broadcast address on some platforms (e.g. Mac OS X). (thanks to openFrameworks)
  • Added UdpSocket::SetAllowReuse(). This is useful for sharing sockets on some platforms (Mac?), and not so useful on other platforms. (thanks to openFrameworks)
  • Added IpEndpointName::IsMulticastAddress() (2010)
  • Cleaned up C++ header usage and std:: namespace usage to be more standards compliant (fixes issues on recent compilers such as clang and gcc4.6).
  • Improved host endianness detection. Should auto-detect endianness on most platforms now. (thanks to Tim Blechmann for help with this)
  • Fixed two memory leaks: (1) in OscPrintReceivedElements.cpp when printing time tag message arguments (thanks to Gwydion ap Dafydd). (2) in the posix SocketReceiveMultiplexer::Run() method if an exception was thrown while listening.
  • Fixed bug in posix SocketReceiveMultiplexer::Run() that would cause packets to stop being received if select() returned EINTR. (thanks to Björn Wöldecke)
  • Updated and improved Makefile to avoid redundant re-linking (thanks to Douglas Mandell)
  • Added CMakeLists.txt CMake build file (2010, thanks to David Doria)
  • Switched license to plain MIT license with non binding request for contribution of improvements (same as current PortAudio boilerplate). See LICENSE file.

New in oscpack 1.1.0 RC 1 (Mar 7, 2013)

  • Added support for arrays in messages (see OscUnitTests.cpp for example usage). (patch thanks to Tim Blechmann)
  • Fixed bugs relating to 64 bit usage (e.g. crashes in 64 bit builds on OS X).
  • Some member functions that previously used the "int" or "unsigned long" type for parameters or return values now use std::size_t (platform-defined) or osc_bundle_element_size_t (a.k.a. int32). This change was made to better support 64 bit platforms. See SVN revision 70 for details.
  • Note that oscpack does not support packets larger than 0x7FFFFFFC (see comments in class ReceivedPacket for details).
  • Oscpack defines an osc::Nil value used for sending the nil message argument value. This conflicts with Objective-C. Therefore osc::Nil is no longer defined in Obj-C++ code. There is now an osc::OscNil value should be preferred. osc::Nil is still available when writing C++. (fix thanks to oFx)
  • Added UdpSocket::SetEnableBroadcast() which needs to be called to enable sending to the broadcast address on some platforms (e.g. Mac OS X). (thanks to oFx)
  • Added UdpSocket::SetAllowReuse() which is useful for sharing sockets on some platforms (Mac?), and not so useful on other platforms. (thanks to oFx)
  • Added IpEndpointName::IsMulticastAddress() (2010)
  • Cleaned up C++ header usage and std:: namespace usage to be more standards compliant (fixes issues on recent compilers such as clang and gcc4.6).
  • Improved host endianness detection. Should auto-detect endianness on most platforms now. (thanks to Tim Blechmann for help with this)
  • Fixed a couple of memory leaks: One in OscPrintReceivedElements.cpp when printing time tag message arguments (thanks Gwydion ap Dafydd). The other in the posix SocketReceiveMultiplexer::Run() method if an exception was thrown while listening.
  • Added CMakeLists.txt cmake build file (2010, thanks David Doria)
  • Switched license to plain MIT license with non binding request for contribution of improvements (same as current PortAudio boilerplate). See LICENSE file.

New in oscpack 1.0.2 (Mar 18, 2010)

  • there are no longer any threads in oscpack. if you need to
  • set up an asynchronous listener you can create your own thread
  • and call Run on an instance of SocketReceiveMultiplexer or
  • UdpListeningReceiveSocket (see ip/UdpSocket.h) yourself.
  • host byte order is now used for network (IP) addresses
  • functions which used to take two parameters
  • now take an instance of IpEndpointName (see
  • ip/IpEndpointName.h) this class has a number of convenient
  • constructors for converting numbers and strings to internet
  • addresses. For example there is one which takes a string and
  • another that take the dotted address components as separate
  • parameters.
  • The UdpTransmitPort class, formerly in UdpTransmitPort.h, is
  • now called UdpTransmitSocket, which is simply a convenience
  • class derived from UdpSocket (see ip/UdpSocket.h). Where you
  • used to use the constructor UdpTransmitPort( address, port) now
  • you can use UdpTransmitSocket( IpEndpointName( address, port )
  • or you can any of the other possible ctors to IpEndpointName
  • see above). The Send() method is unchanged.
  • The packet listener base class is now located in
  • ip/PacketListener.h instead of PacketListenerPort.h. The ProcessPacket method now has an additional parameter indicating the remote endpoint