Releases: eclipse-score/communication
v0.2.0
Module Name: communication
Release Tag:
Origin Release Tag:
Release Commit Hash:
Release Date:
Overview
The communication module provides a generic communication frontend with an IPC binding for use in the S-CORE project.
The module is available as a Bazel module in the S-CORE Bazel registry: https://github.com/eclipse-score/bazel_registry/tree/main/modules/score_communication
Disclaimer
This release is not intended for production use, as it does not include a safety argumentation or a completed safety assessment.
The work products compiled in the safety package are created with care according to the S-CORE process. However, as a non-profit, open-source organization, the project cannot assume any liability for its content.
For details on the features, see https://eclipse-score.github.io/score/main/features/communication/index.html
Improvements
- lola Methods: Added UniqueMethodIdentifier, MethodType enum, basic acceptance tests, and signature variation tests; migrated Skeleton/Proxy to use UniqueMethodIdentifier; initialized InArgs and return values on creation
- Fields (Get/Set): Added Get/Set API to ProxyField and SkeletonField, FieldOnlyConstructorEnabler to SkeletonField/SkeletonMethod/ProxyMethod variants, and SetHandler support for SkeletonField (skeleton-side implementation is WIP)
- Generic Skeleton: Introduced a PoC implementation of Generic Skeleton for Events with initial partial restart handling, a refined interface, alignment/over-aligned-type guards, and a new README
- lola Refactoring: Extracted TransactionLogIndex, skeleton shared memory functionality, and shared_data_structures into separate targets; removed EventDataControlCompositeImpl, EventSubscriptionControlImpl, and HasAsilBSupport; use ScopeExit for method registration guards
- message_passing: Use pulses for zero-notify messages
- mw/com: Migrated score::cpp::optional to std::optional, use MeyerSingleton for static Runtime initialization, ResultBlank consistently; renamed process_identifier → application_id; removed dependency on score_logging
- New Rust COM API Library: Introduced a fully reworked Rust COM API (//score/mw/com/impl/rust/com-api) with:
- Backend-independent architecture: A standalone backend crate enabling seamless switching of runtime backends without changes to user applications
- Registry-based FFI layer: A flexible foreign-function interface for C++/Rust interop
- MW::COM-enabled runtime (lola-runtime): Backend support for the COM module
- Async FindService and async Receive APIs, unsubscribe support, Interface declarative macro, CommData/Reloc derive macros, error enum optimizations via thiserror, Rust doc tests, and full API documentation
- C++/Rust memory validation integration tests, architecture/sequence diagrams
- Toolchain: Added score_gcc_aarch64_toolchain, missing compiler warning options, and always-on colored build output
- CI/CD: Added GCC toolchain integration example, enforced formatting, made Coverage Report a required merge-queue check, restricted workflow permissions, optimized Bazel cache to merge-queue only
- Documentation: Merged SETUP.md into CONTRIBUTING.md, moved Sphinx docs to docs/sphinx/, added Docker prerequisite and formatter instructions to README, updated QNX instructions
Bug Fixes
- mw/com: Fixed race condition in TimeoutSupervisor, fixed correct construction of shared memory path, fixed method resource cleanup, fixed failing SkeletonField tests, fixed move semantics in mw/com/impl
- lola: Fixed callback registration in SkeletonEvent, fixed misnamed variable, asserted valid base address instead of casting, changed unreachable branch to a precondition
- SampleAllocateePtr: Fixed null dereference crash and missing mock deleters in tests
- Generic Skeleton: Fixed shared memory storage application, alignment issues, and layering violations
- Rust COM-API: Fixed Clippy/rustfmt warnings, added error handling for set/unset receive handler
- InstanceSpecifier: Fixed deprecated InstanceSpecifier::Create usage
- mw/com: Fixed race condition, restored mp2 log level mapping
- CI: Fixed typos in QNX workflow names/job names, fixed ASan ODR violation, fixed broken FTA includes in safety analysis
⚠️ Known Limitations / Work in Progress
- Rust COM API migration: The old Rust APIs for communication are deprecated. Consumers are requested to adopt the new Rust COM API library. See //score/mw/com/impl/rust/com-api for details.
- Method handler signature is not final: The current handler signature for a method ReturnType(InArgType1, InArgType2, ...) is ReturnType(InArgType1&, InArgType2&, ...). The final signature will be void(ReturnType&, const InArgType1&, const InArgType2&, ...) to avoid an unnecessary copy.
- Proxy method selection via config not yet implemented: Currently, the consumer/proxy side must pass the list of method names it intends to use as a string list in Proxy::Create(). In the final implementation this will be read from mw_com_config.json.
- Methods are not fully tested: General functionality works, but edge cases have not been covered yet.
- Field Get/Set skeleton-side implementation is WIP: ProxyField and SkeletonField APIs (signatures) are final, but the skeleton-side implementation is incomplete. Configuration of Get/Set availability via mw_com_config.json is also not yet implemented.
Compatibility
x86_64-unknown-linux-gnuusing score_toolchains_gccx86_64-unknown-linux-gnuusing toolchains_llvmx86_64-unknown-nto-qnx800using score_toolchains_qnxaarch64-unknown-nto-qnx800using score_toolchains_qnx
Performed Verification
- Unit test execution on host with all supported toolchains
- Build on supported target platforms (QNX8 x86_64 and QNX8 aarch64)
- Thread sanitized unit test execution
- Address and UB sanitized unit test execution
- Leak sanitized unit test execution
Known Issues
Upgrade Instructions
Backward compatibility with the previous release is not guaranteed.
Contact Information
For any questions or support, please raise an issue/discussion.
v0.1.4
Module Name: communication
Release Tag: v0.1.4
Origin Release Tag: v0.1.2
Release Commit Hash: 484f046
Release Date: 2026-03-09
Overview
The communication module provides a generic communication frontend with an IPC binding for use in the S-CORE project.
The module is available as a Bazel module in the S-CORE Bazel registry: https://github.com/eclipse-score/bazel_registry/tree/main/modules/score_communication
Disclaimer
This release is not intended for production use, as it does not include a safety argumentation or a completed safety assessment.
The work products compiled in the safety package are created with care according to the S-CORE process. However, as a non-profit, open-source organization, the project cannot assume any liability for its content.
For details on the features, see https://eclipse-score.github.io/score/main/features/communication/index.html
Improvements
- (Partial) migration to new S-CORE toolchain
- Rust API macros were optimized and error reporting improved
- Rust support for QNX builds
- Support for clang-tidy linting
- Support for CodeQL analysis
- Preliminary support for methods
- Removal of message passing 1.0 (please use message passing 2.0)
- Improved logging in message passing 2.0 via callback injection
- Enabled integration tests in CI
- Integrated mw::service frontend with stubbed backend (introduction to unblock ConfigDaemon - please do not yet use for other use cases)
- API documentation based on Doxygen and Sphinx with documentation available at https://score-communication.readthedocs.io/en/latest/
- Alow injection of a tracing library
- Improved CI setup and test infrastructure to decrease flakiness
Bug Fixes
Compatibility
x86_64-unknown-linux-gnuusing bazel_cpp_toolchainsx86_64-unknown-linux-gnuusing toolchains_llvm or gcc_toolchainx86_64-unknown-nto-qnx800using bazel_cpp_toolchainsaarch64-unknown-nto-qnx800using bazel_cpp_toolchains
Performed Verification
- Unit test execution on host with all supported toolchains
- Build on supported target platforms (QNX8 x86_64 and QNX8 aarch64)
- Thread sanitized unit test execution
- Address and UB sanitized unit/integration test execution
- Leak sanitized unit/integration test execution
Known Issues
- Thread sanitized integration tests experience flakiness that is likely introduced by the framework.
Upgrade Instructions
Backward compatibility with the previous release is not guaranteed.
Contact Information
For any questions or support, please raise an issue/discussion.
v0.1.3
- Enabled various code quality tools
- Extension of the Rust API (expect further extensive work on this API)
- Support explicit setting of application id in configuration (with fallback to PID)
Full Changelog: v0.1.2...v0.1.3
Caution
This release was not agreed on with the maintainers of the communication module. It was created by a committer from the S-CORE project without following our release workflow. This workflow would have prevented this release.
Please avoid using this release. We do not provide any safety guarantees. We take this case very seriously and work on both organisational and technical measures to prevent this in the future.
v0.1.2
Module Name: communication
Release Tag: v0.1.2
Origin Release Tag: v0.1.1
Release Commit Hash: d5414f7
Release Date: 2025-12-19
Overview
The communication module provides a generic communication frontend with an IPC binding for use in the S-CORE project.
This release is meant for integration with the S-CORE 0.5 Beta Release.
The module is available as a Bazel module in the S-CORE Bazel registry: https://github.com/eclipse-score/bazel_registry/tree/main/modules/score_communication
Disclaimer
This release is not intended for production use, as it does not include a safety argumentation or a completed safety assessment.
The work products compiled in the safety package are created with care according to the S-CORE process. However, as a non-profit, open-source organization, the project cannot assume any liability for its content.
For details on the features, see https://eclipse-score.github.io/score/main/features/communication/index.html
Improvements
- Enabled various code quality tools.
- Extension of the Rust API (expect further extensive work on this API)
- Support explicit setting of application id in configuration (with fallback to PID)
Full Changelog: v0.1.1...v0.1.2
Bug Fixes
Compatibility
x86_64-unknown-linux-gnuusing score_toolchains_gccx86_64-unknown-linux-gnuusing toolchains_llvmx86_64-unknown-nto-qnx800using score_toolchains_qnxaarch64-unknown-nto-qnx800using score_toolchains_qnx
Performed Verification
- Unit test execution on host with all supported toolchains
- Build on supported target platforms (QNX8 x86_64 and QNX8 aarch64)
- Thread sanitized unit test execution
- Address and UB sanitized unit test execution
- Leak sanitized unit test execution
Known Issues
General Issues
- Safety package is incomplete due to missing documentation and verification.
- Coverage infrastructure is in beta stage. Results are therefore without any guarantee of correctness.
- TRLC reports are in beta stage. Results are therefore without any guarantee of correctness.
LLVM Toolchain
- The toolchain uses a non-hermetic sysroot. Hence, compilation may fail on hosts with an incompatible libstdc++ (
QNX 8 Toolchain (x86_64 and AArch64)
- Unit tests are not currently executed on QNX 8 SDP.
Upgrade Instructions
Backward compatibility with the previous release is not guaranteed.
Contact Information
For any questions or support, please raise an issue/discussion.