Skip to content

v0.2.11

Choose a tag to compare

@github-actions github-actions released this 18 Aug 13:11
d6f4b39

Module Name: baselibs
Release Tag: v0.2.11
Origin Release Tag: v0.2.10
Release Commit Hash: d6f4b39
Release Date: 2026-08-18

Overview

The baselibs module provides a selection of basic C++ utility libraries for common use in the S-CORE project.

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/baselibs/index.html

Notable Changes

Completed migration: score/memory/shared moved to the https://github.com/eclipse-score/communication

Following the preparatory work announced in v0.2.10, the shared-memory implementation has now been moved out of this repository. score/memory/shared is fully migrated to score_communication; only thin migration shims remain at the previous //score/memory/shared:* labels for compatibility. Update your Bazel dependencies to score_communication and adjust include paths/namespaces accordingly. #424 #421

Breaking changes & deprecations

  • datetime_converter is now deprecated and will be removed in a future release. The implementation has had multiple correctness issues (most recently incorrect handling of leap seconds) and limited adoption; if you need this functionality, prefer relying directly on POSIX/libc time APIs. #483
  • analysis/tracing: ServiceInstanceElement::element_id switched from score::cpp::variant to std::variant, continuing the interface migration started in v0.2.10. Update call sites and any code that pattern-matches on the old variant type. #415
  • containers_rust ABI types (InlineVec, InlineQueue, InlineOption, InlineResult) dropped their T: Copy bound to support nested/movable payloads (e.g. InlineVec<InlineString<..>>). Since Rust forbids Copy + Drop, these types are no longer Copy; they implement Clone when their payload does. Memory layout (#[repr(C)]/#[repr(transparent)]) is unchanged. #432

New features

  • result: new Rust FFI bindings (result_rs crate) let Rust code interoperate with score::Result<T>/score::result::Error across the language boundary and convert them into Rust's own Result. Companion libcpp/libcpp_derive crates model ABI-dependent C++ standard-library types (currently std::string_view and std::variant) with layout tests. #403
  • New score/language/rust/memres Rust crate plus a C++ FFI layer let Rust code create and own score::cpp::pmr::memory_resource instances and pass them to C++, so allocations can be controlled across the language boundary, including a hermetic (no heap-fallback) mode. #406
  • language/futurecpp was synced with the latest upstream release: score::cpp::jthread and the internal thread pool/cpu_context gained a priority_hint thread attribute. The score::cpp::variant was reimplemented as a thin wrapper around std::variant and now implicitly converts to and from std::variant; score::cpp::optional (already std::optional-backed) gained a matching implicit conversion to std::optional. Both ease migration to the std:: equivalents. #466
  • examples/integration: added a score::Result usage demo and score_bazel_cpp_toolchains support. #411 (closes #363)

Bug fixes

  • memory: DataTypeSizeInfo now enforces alignof(std::max_align_t) as the maximum supported alignment; constructing it with a larger alignment now triggers a contract violation instead of silently accepting an unsupported over-aligned type. #470
  • Rust: fixed a memory leak in score::thread's JoinInner::join(), where the result Arc was dropped via mem::forget without being read back first. Address/Undefined-Behavior/Leak sanitizer coverage (--config=asan_ubsan_lsan) was also extended to Rust builds, which had previously only covered C++. #429
  • json/vajson: FromFile no longer parses directly off the file stream buffer, whose seek-based backtracking triggered an lseek/read syscall per seek (especially costly on QNX); it now buffers the file into memory first, like FromBuffer does, for about a 25% runtime improvement. #431

Compatibility

The following platforms are supported using the bazel_cpp_toolchains:

  • x86_64-unknown-linux-gnu
  • aarch64-unknown-linux-gnu
  • x86_64-unknown-nto-qnx800
  • aarch64-unknown-nto-qnx800

Performed Verification

  • Build on all supported platforms
  • Unit test execution on all supported platforms (some test failures are expected on AArch64 and QNX targets).
  • Address and undefined behavior sanitized unit test execution
  • Leak sanitized unit test execution

Report: https://github.com/eclipse-score/baselibs/actions/runs/32123154514

Upgrade Instructions

Backward compatibility with the previous release is not guaranteed.

Contact Information

For any questions or support, please contact the Base Libs Feature Team (https://github.com/orgs/eclipse-score/discussions/1223) or raise an issue/discussion.

What's Changed

Full Changelog: v0.2.10...v0.2.11