Skip to content

Releases: orchetect/swift-osc

3.0.0

14 May 23:36

Choose a tag to compare

SwiftOSC 3.0.0

Note

This repository has been renamed swift-osc.
Please updated your dependencies to point to the new URL: https://github.com/orchetect/swift-osc

This release marks a few major structural changes and improvements to be more modular and extensible going forward:

  • The library has been renamed to SwiftOSC (package name swift-osc)
  • The core target (previously OSCKitCore) has been split out into its own swift-osc-core repository
  • I/O class API has now been unified using new protocols vended by swift-osc-core, with implementations available as interchangeable network I/O backend repositories
    • The existing network I/O backend that used CocoaAsyncSocket has been split out into its own swift-osc-io-cocoa extension repository
    • A new network I/O backend using SwiftNIO has been built in its own swift-osc-io-nio extension repository1 and is now the default I/O backend, which brings cross-platform support to Linux and Android

Issues, Discussions, and Example Code

The main swift-osc repository will continue to host issues, discussions, and example code in one place.

Documentation

Documentation is now hosted online at SwiftPackageIndex. The main swift-osc repo offers a general getting started guide, whereas and the swift-osc-core docs covers all of the core types and I/O API. Links can be found in both repo README files.

Use Cases

To use the library:

  • with the default I/O backend:
    • use swift-osc as a dependency and import SwiftOSC
  • with one of the alternative network I/O backends2:
    • use the respective I/O extension directly as a dependency instead
  • with your own network I/O implementation:
    • use swift-osc-core as a dependency and import SwiftOSCCore
    • optionally also import SwiftOSCIOCore to use the I/O protocols and related free functionality provided

Release Notes

For release notes summarizing all new features, fixes, improvements, and changes, see the release notes for each repository for all intermediary releases that form the SwiftOSC 3.0.0 release:

Footnotes

  1. Thanks to @The-Wolfson for the PR

  2. Currently two network I/O backends are available: CocoaAsyncSocket and SwiftNIO

2.2.0

06 Apr 05:55

Choose a tag to compare

New

  • Added Linux support for OSCKitCore target
  • Added Android support for OSCKitCore target (#63)

Fixed

  • Fixed OSC time tags issue in locales with daylight savings time (#62)

Maintenance

  • Refactored internal data utilities to swift-data-parsing dependency
  • Removed .swift-version file which was causing build failures when using the swiftly toolchain manager

2.1.2

06 Apr 05:52

Choose a tag to compare

New

  • OSCUDPServer: Added isPortReuseEnabled property (#57)

Thanks @dsmurfin for submitting the pull requests.

2.1.1

31 Dec 20:50
3855c3f

Choose a tag to compare

New

  • OSCTCPServer: Added isStarted property (#55)
  • OSCTCPServer: framingMode property is now public (#56)
  • OSCTCPClient: framingMode property is now public (#56)

Thanks @dsmurfin for submitting the pull requests.

2.1.0

20 Dec 08:13
4f8f0d5

Choose a tag to compare

Note

This release may introduce very minor code-breaking changes if using OSCAddressSpace. See this issue comment for details.

New

  • OSCAddressSpace: Custom method ID type may be used in place of the default UUID (#53)

Maintenance

  • Added Method IDs (Custom ID Type) example project
  • Updated documentation
  • Added documentation build script and readme for publishing online documentation

2.0.1

27 Nov 23:45

Choose a tag to compare

Maintenance

  • Migrated SwiftASCII dependency to swift-ascii

2.0.0

05 Oct 10:25

Choose a tag to compare

Note

This release contains various minor API changes, as well as bug fixes and other refinements. As such, it has gained a major version number bump to version 2.

A summary of the main changes can be found below.

  • OSCKitCore
    • OSCObject protocol has been removed since the only two concrete types that can possibly conform are OSCBundle or OSCMessage.
      • The protocol has been replaced a new OSCPacket enum that contains two strongly-typed cases containing either an OSCBundle or OSCMessage.
    • OSCPacket and OSCBundle: Both have a new messages property that returns an array of OSCMessages contained within the packet or bundle.
    • OSCAddressSpace: Converted class into an actor
    • OSCAddressSpace: Added new unregister(methodID:) method
    • OSCEncodeError and OSCDecodeError: Now have more idiomatic error cases
    • Throwing methods that throw a strongly-typed error are now marked as such in the method signature
  • OSCKit
    • OSCUDPServer: init: Passing nil or 0 for port parameter will now cause a random available port number to be used
      • This also fixes a bug where the localPort property was not updated if a random port was assigned
    • OSCUDPClient: init: Passing nil or 0 for localPort parameter will now cause a random available port number to be used
    • OSCTCPServer: init: Passing nil or 0 for port parameter will now cause a random available port number to be used

1.4.1

05 Oct 03:00
9476d5d

Choose a tag to compare

Fixes

  • Fixed bug where TCP SLIP decoding might fail when parsing certain byte sequences

1.4.0

10 Sep 06:01
7b5ede4

Choose a tag to compare

New

  • The OSCKitCore target now has Linux support (thanks @lhoward for the PR)

Maintenance

  • Added Linux platform to CI pipeline

1.3.0

26 Jul 21:20
67dbb97

Choose a tag to compare

New

  • TCP client and server classes have been added: OSCTCPClient & OSCTCPServer
    • supporting OSC 1.0 (PLH) and OSC 1.1 (SLIP) framing modes
    • connection/disconnection notification handler
    • optionally constrain communication to a specific network interface
  • A new TCP Client and Server example project has been added
  • The existing UDP classes now also gain an interface property to optionally constrain communication to a specific network interface

Fixes

  • Fixed bug in OSC value parser where a crash could happen in rare cases

Changes

  • OSCClient class has been renamed OSCUDPClient to disambiguate from the new TCP classes
  • OSCServer class has been renamed OSCUDPServer to disambiguate from the new TCP classes
  • OSCSocket class has been renamed OSCUDPSocket to disambiguate from the new TCP classes
  • Some class properties have been renamed for better clarity or consistency.