Skip to content

v0.6.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Nov 12:37
c5efd74

Module Name: communication
Release Tag: v0.6.0
Origin Release Tag: v0.5.0
Release Commit Hash: c5efd74
Release Date: 2026-11-02

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

Runtime / API

  • Removed the deprecated GenericProxyEvent::GetSampleSize(); use GetDataTypeSizeInfo().Size() instead. Requirements, FTA and AoU artifacts were updated accordingly. (#997)
  • Removed noexcept from GenericSkeleton::StopOfferService(), GenericSkeletonEvent::Send() and GenericSkeletonEvent::Notify() and further functions that can propagate exceptions (MISRA RULE-18-5-1). (#1232)
  • Removed the deprecated aggregate Bazel target //score/memory/shared:types (it pulled in the unmaintained :map target); depend on the specific score/memory/shared sub-targets instead. Also removed the obsolete WORKSPACE file; the repository is now Bzlmod-only. (#1487)
  • Added a FlatBuffers-based configuration parsing strategy that loads the mw::com configuration from a binary FlatBuffers file into the impl::Configuration model (generated types moved to configuration::fbs, optional scalars declared as nullable, schema-update guide added). (#1270)
  • Added an implementation of the mw::service stub (APIs, backends, tests and Bazel targets). (#1153)
  • Added the SOME/IP binding stack base as a separate split of the SOME/IP binding (element FQ ids, event data storage, etc.). (#1159, #1374)

Build, dependencies and CI

  • Upgraded Bazel (8.8.2), score_tooling (3.0.1), score_bazel_cpp_toolchains, baselibs, gcc toolchain rules, score_itf, ferrocene toolchain builder (1.3.1) and other dependencies; vulnerable Python/Rust packages updated. (#1496, #1383, #1492, #1453, #1470, #1396, #1249, #1454, #1465)
  • score_cpp_policies and trlc are now regular (non-dev) bazel_deps so that consumers no longer fail with No repository visible as '@score_cpp_policies'. (#1508, #1509, #1474)

Documentation, requirements and safety artifacts

  • Many new FTA diagrams for the safety sentinel (Subscribe/Unsubscribe, SetReceiveHandler, SkeletonEvent Send/Allocate, sample counting, memory/resource handling, FindService, misused APIs, etc.) and linked failure modes; new safety measure for "service is found but does not exist". (#1297, #1307, #1280, #1282, #1283, #1284, #1286, #1362, #1332, #1349, #1365, #1143)
  • Restructured safety sentinel design (units/components, split proxy/skeleton docs) and declared dependable_element / architectural design targets for memory/shared. (#1281, #1309, #1366, #1367, #1393, #1414, #1466, #1354)
  • Adapted mw::com feature requirements and AoUs. (#1090, #1099, #1385)
  • E2E design proposals (error handling public API, responsibility allocation) and E2E error-handling sample. (#1148, #1241, #1291)
  • Tutorial chapters 1–11 migrated to robust Sphinx literalinclude markers; broken links fixed; README/CONTRIBUTING improvements; readthedocs config removed. (#1467, #1477, #1480, #1482, #1483, #1455, #1450, #1512, #1364, #1476)

Bug Fixes

  • Gateway: fixed unexpected termination of the GatewayApplication when a service offer is stopped; the destination-side skeleton is no longer reused and is reset each time. (#1130)
  • Fixed multiple OfferService() calls on a skeleton: an already offered service is no longer offered again (integration test extended). (#1149)
  • Methods: the message-passing service now returns success after replying kSkeletonAlreadyDestroyed on an expired method scope, and the test mock now exercises the success path. (#1422)

Compatibility

Performed Verification

  • Unit test execution on host with all supported toolchains
  • Build and test on QNX8 x86_64
  • Thread sanitized unit test execution
  • Address, undefined-behavior, and leak sanitized unit test execution
  • Static analysis / linting (clang-tidy, clippy, ruff) via the Aspect CLI, with findings uploaded to GitHub Code Scanning
  • CodeQL MISRA C++ compliance analysis on both Linux and QNX (--config=qnx), merged into a single compliance report
  • Code coverage report generation (llvm-cov) across the C++ test suite
  • Documentation build and packaging (Sphinx) for the release version

Known Issues

Build / ecosystem compatibility

  • Compilation with Bazel 9+ fails (#694).
  • Compilation with rules_python 2+ is broken (#695); rules_python is still a propagated (non-dev) dependency (#278).
  • Toolchain resolution / dependency version mismatch on latest main (#336).
  • Active downstream patch: score_baselibs is patched with a QNX8 poll workaround (third_party/score_baselibs/restore_qnx8_poll_workaround.patch, see bazel_cpp_toolchains#68). It applies via single_version_override, i.e. only when communication is the root module; consumers must apply an equivalent patch themselves.
  • Rust unit-test targets are not built/tested on QNX (#1278, #794).

Runtime / API

  • LoLa: destruction of a subscribed proxy can abort in TransactionLogNode::Reset() (#1430).
  • LoLa: the first GetNewSamples() after Subscribe() may return samples sent before the subscription (#1429).
  • A provider cannot tell whether SetReceiveHandler() was handled (#1488); sending events may block (#1433).
  • File descriptors are not opened with CLOEXEC (#1064).
  • Missing Create functions for generic service elements (#1520) and mocking support for GenericSkeleton* (#1375).
  • Gateway: multi-VM topology and VM restart/recovery handling are not yet implemented (#1141, #1140).

Quality / tooling

  • Numerous integration tests are flaky (label flaky-test, e.g. #1519, #1518); QNX guest kernel panics during boot can cause flaky SSH setup failures (#1513).
  • CodeQL loses location information for some findings (#1104); buildifier setup in CI misses some issues (#1236); API surface lock does not record enum values (#1472).

Upgrade Instructions

Backward compatibility with the previous release is not guaranteed.

Public API changes

(from score/mw/com/api_surface.lock.json, v0.5.0..v0.6.0)

Added: none.

Removed:

  • GenericProxyEvent::GetSampleSize() (deprecated) – use GetDataTypeSizeInfo().Size() (#997).

Signature changes:

  • GenericSkeleton::StopOfferService(), GenericSkeletonEvent::Send(SampleAllocateePtr<void>) and GenericSkeletonEvent::Notify() are no longer noexcept. Callers relying on noexcept (e.g. static_assert/noexcept operator or noexcept wrappers) must handle possible exceptions (#1232).

Build changes (non-API)

  • //score/memory/shared:types was removed; depend on specific sub-targets (:offset_ptr, :vector, :string, ...) (#1487).
  • Consumers now receive score_cpp_policies and trlc as transitive dependencies (#1508, #1509).

Contact Information

For any questions or support, please raise an issue/discussion.