Skip to content

Releases: eclipse-score/communication

v0.2.0

21 Apr 20:32
99e4593

Choose a tag to compare

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

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

09 Mar 11:49

Choose a tag to compare

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

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

23 Feb 06:36

Choose a tag to compare

v0.1.3 Pre-release
Pre-release
  • 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

19 Dec 14:31

Choose a tag to compare

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

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.

v0.1.1

07 Nov 08:28

Choose a tag to compare

v0.1.1 Pre-release
Pre-release
raise module version

v0.1.0

05 Nov 15:19

Choose a tag to compare

v0.1.0 Pre-release
Pre-release
update to newer baselibs version