Repository navigation
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(); useGetDataTypeSizeInfo().Size()instead. Requirements, FTA and AoU artifacts were updated accordingly. (#997) - Removed
noexceptfromGenericSkeleton::StopOfferService(),GenericSkeletonEvent::Send()andGenericSkeletonEvent::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:maptarget); depend on the specificscore/memory/sharedsub-targets instead. Also removed the obsoleteWORKSPACEfile; 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::Configurationmodel (generated types moved toconfiguration::fbs, optional scalars declared as nullable, schema-update guide added). (#1270) - Added an implementation of the
mw::servicestub (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_policiesandtrlcare now regular (non-dev)bazel_deps so that consumers no longer fail withNo 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 formemory/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
GatewayApplicationwhen 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
kSkeletonAlreadyDestroyedon an expired method scope, and the test mock now exercises the success path. (#1422)
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- Build system: 8.6 <= Bazel < 9.x, Bzlmod only (
.bazelversionis 8.8.2); minimum supported GCC is 12.
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_python2+ is broken (#695);rules_pythonis still a propagated (non-dev) dependency (#278). - Toolchain resolution / dependency version mismatch on latest main (#336).
- Active downstream patch:
score_baselibsis patched with a QNX8pollworkaround (third_party/score_baselibs/restore_qnx8_poll_workaround.patch, see bazel_cpp_toolchains#68). It applies viasingle_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()afterSubscribe()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
Createfunctions for generic service elements (#1520) and mocking support forGenericSkeleton*(#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) – useGetDataTypeSizeInfo().Size()(#997).
Signature changes:
GenericSkeleton::StopOfferService(),GenericSkeletonEvent::Send(SampleAllocateePtr<void>)andGenericSkeletonEvent::Notify()are no longernoexcept. Callers relying onnoexcept(e.g.static_assert/noexceptoperator or noexcept wrappers) must handle possible exceptions (#1232).
Build changes (non-API)
//score/memory/shared:typeswas removed; depend on specific sub-targets (:offset_ptr,:vector,:string, ...) (#1487).- Consumers now receive
score_cpp_policiesandtrlcas transitive dependencies (#1508, #1509).
Contact Information
For any questions or support, please raise an issue/discussion.