Releases: PADL/SwiftOCA
Releases Β· PADL/SwiftOCA
0.5.0
Features
- controller-side JSON is now returned in human readable form
- all device backends support configurable logging
- support for datagram domain sockets
- optional message (PDU) tracing
Performance improvements
- controller message batching (disabled by default)
- device response PDU coalescing
- property key path caching
- fewer allocations when encoding messages
- fast path on subscription notifications if
OcaGrouperunused - don't create unnecessary subtasks when notifying subscribers
Other
- force datagram client to wait for packet from device
- ensure devices always send
KeepAliveimmediately on connection open - fix some issues with controller
KeepAlivehandling - fix hang in controller after timeout
- ensure datagram timeout at least twice heartbeat time
- remove
SetActiveNetworkSettingsMethod(does not exist) - fix
GetPortClockMapEntrymethodID - allow controllers to indicate if they support locking
- elide unnecessary locks in connection monitor
- some API changes
- more tests
0.4.5
- change OcaModelGUID modelCode to a 4-tuple of OcaUint8, per spec
- improved DNS-SD device registration and de-registration
- support for Appleβs Network framework in addition to io_uring, CoreFoundation and FlyingSocks backends (client-side only)
- support for OcaDataset and related APIs (currently with a file/JSON-based backend, but SQLite will be added in the future)
- support for remote peer-to-peer OcaGrouper members
- fix incorrectly OcaMediaClock3 method signatures; now complies with standard
- no longer crashes with Swift 6.2 prerelease
- cache property and method lookups to improve performance
- various other sundry fixes
0.4.1
Serialisation improvements
Improvements since 0.3.5:
- use new native encoder/decoder for all PDU encapsulation
- nse new native encoder/decoder for metering packets
- use
FoundationEssentialsin lieu ofFoundationwhere possible getRoleMap()helper API onOcaBlock- more tests
The serialisation improvements can increase performance / reduce CPU load by 10x in some cases.
ISE 2025!
May as well make a release for ISE (even though it's over now).
- add
onControllerExpiry()method to device delegate - update
ClassRegistrywith some missing object classes - add
asyncMap()method toArray2D - support for Observation framework on Darwin, instead of Combine
- add
OcaTemperatureSensor - refactor JSON serialisation support in SwiftOCADevice
0.3.0
0.2.6
Things fixed in this release:
- support for Android SDK
- UDP controller and device support on Darwin with FlyingSocks
- use FoundationEssentials if available, where possible
- refresh subscriptions on reconnect (this code had been accidentally disabled)
- perform subscription removal and refresh in parallel using a task group
- reduce actor hopping in controller monitor task
- don't close connection on unknownPduType/invalidHandle errors
0.2.1
SwiftOCA 0.2.0
- indentation is now 2 spaces
- use new
SocketAddresspackage for handling socket addresses OcaAudioLevelSensorOcaPropertyIDand friends now conform toExpressibleByStringLiteral- new CoreFoundation backend supports both controllers and devices
- represent subscriptions internally as
Setrather thanNSSet
SwiftOCA 0.1.9
- test Unix domain socket endpoint in example app
- update
swift-async-algorithmsto 1.0.0 - allow third-party controllers to subclass OCA classes
- fix some more concurrency warnings
- rename
OcaObjectSearchResultFlagstoOcaActionObjectSearchResultFlagsper latest AES70 spec - new
Ocp1ConnectionStatetype for interrogating controller connection state OcaCounterNotifierstub implementation- correct OCP.1 connection prefix for domain sockets