This is the first minor release and includes breaking changes to wire formats,
public API types, and default behaviors to bring the stack into compliance with the
SOME/IP and SOME/IP-SD specifications.
Breaking Changes
- SD minor version widened to 32-bit:
ServiceEntry::minor_version_andServiceInstance::minor_versionchanged fromuint8_ttouint32_t;get_minor_version()/set_minor_version()signatures updated accordingly (#245, #251) - SD ConfigurationOption length field corrected: Wire-format length now includes the Reserved byte per spec; messages serialized by v0.0.x are not wire-compatible with v0.1.0 (#246, #251)
- SD unknown-option skip corrected: Skip logic uses
3 + leninstead of4 + len, fixing option-array parsing for messages containing unknown options (#247, #251) - Serialization
serialize_arraywrites byte count: Length prefix now encodes total byte length instead of element count per SOME/IP spec; existing serialized payloads are not backward-compatible (#249, #251) - Serialization
uint64endianness made portable: 64-bit ser/des uses explicit MSB-first byte layout instead of unconditional byte-swap; changes wire bytes on big-endian targets (#250, #251) - E2E default profile name:
E2EConfig::profile_namedefault changed from"standard"to"basic"to match the registered profile name; code relying on the old default will silently fail to find a profile (#248, #251) E2ECRC::calculate_crcreturn type: Changed fromuint32_ttostd::optional<uint32_t>to signal invalidcrc_typeinstead of returning 0 (#251)- TP segment offset widened to 32-bit:
TpSegmentHeader::segment_offsetchanged fromuint16_ttouint32_t;TpReassemblyBuffersegment methods updated to match (#251) - Constructors made
explicit:ServiceEntry,EventGroupEntry,SdEntry,SdOption,ServiceInstance,EventSubscription,EventNotification,EventGroupSubscription, andEventGroupconstructors are nowexplicit— implicit conversions from integers will no longer compile (#251) - Copy/move deleted on core types:
SdEntry,SdOption,E2EProfile,E2EProtection,E2EProfileRegistry,ITransport,ITransportListener,UdpTransport, andSessionManagerare now non-copyable and non-movable (#251)
Added
- Shared Library Packaging: Build shared
libopensomeip.soand split RPM into base, devel, and static sub-packages (#216) - Version Single Source of Truth: Make the
VERSIONfile the authoritative version reference for all build and packaging artifacts (#213) - Path-Based CI Filtering: Implement path-based workflow filtering to skip irrelevant CI jobs on documentation-only or scoped changes (#202)
- MISRA-Aligned Quality Gate: Add MISRA-aligned clang-tidy quality gate to CI for automotive-grade static analysis (#223)
- RTOS Test Coverage: Increase RTOS test coverage with shared E2E and TP suites across FreeRTOS, ThreadX, and Zephyr (#218)
- CI Caching: Cache CMake FetchContent, Zephyr SDK/workspace, ARM toolchain, pip packages, Renode binary, and ccache across CI jobs (#200, #201, #203, #204, #205, #206)
- SD Session ID Counter:
SdSessionIdCounterclass andSdMessage::get/set_session_id()for per-message session tracking per SOME/IP-SD spec (#251) - SD IPv4 Endpoint protocol field:
IPv4EndpointOption::get/set_protocol()to specify L4 protocol (default UDP) (#251) - SD Server event-group selection:
SdServer::offer_service()accepts expliciteventgroup_idsparameter (#251) - Event publisher/subscriber endpoint APIs:
EventPublisher::set_default_client_endpoint(),EventSubscriber::set_default_endpoint(), andEventSubscriber::set_endpoint_resolver()(#251) - TCP Magic Cookie support: Periodic magic-cookie keep-alives with
TcpTransportConfig::magic_cookie_enabled/interval;TcpTransport::is_magic_cookie(),make_magic_cookie_client(),make_magic_cookie_server()(#251) - TCP stream parsing made public:
TcpTransport::parse_message_from_buffer()exposed for external use (#251) - 15 new regression tests: Dedicated tests for each spec-compliance fix across SD, serialization, and E2E (#251)
Fixed
- Spec Compliance (6 bugs): SD minor version truncation, ConfigurationOption length off-by-one, unknown option skip off-by-one, E2E profile name mismatch,
serialize_arrayelement-vs-byte count,uint64endianness — all with regression tests (#245, #246, #247, #248, #249, #250, #251) - Coverity CI: Repair Coverity Scan CI download URL and upgrade to Node.js 24 actions (#240, #241)
- SD Interop: Correct IPv4 option wire format for SOME/IP-SD interoperability (#239)
- Stale Code Removal: Remove stale vsomeip interop stubs and inflated conformance claims (#237)
- Transport Safety: Eliminate TOCTOU race on transport
listener_pointer; usestd::atomic<ITransportListener*>(#214) - Code Quality: Resolve all remaining clang-tidy violations — threshold reduced to 0 across 9 remediation batches (#222, #225, #227, #228, #229, #230, #231, #232, #234, #236)
- CI Compatibility: Support Fedora container jobs on fork PRs (#183)
Changed
- CI Architecture: Trim CI matrix — Fedora, Renode skip, reporting cleanup (#212); extract Python 3.12 installation to a reusable composite action (#215)
- Documentation: Convert PlantUML diagrams to Mermaid and add PAL architecture diagram (#220); rewrite TEST_REPORTING.md to reflect current CI reporting architecture (#217)