- Allow
dyntypes asWaitSetattachments #1285 - Propagate user headers in publish-subscribe samples in the reference tunnel implementation #1289
- Add source
NodeIdto request and response header #1308 - Introduce
RelocatableOptionandRelocatableDurationwhich areZeroCopySend#1312 - Enable users to pull in iceoryx2 as a Bazel module/dependency #1263
- Add missing C++ APIs to access messaging pattern specific static config #1353
- Implement
core::error::Errorforbb::posixerror enums #1362 - Add
thread_scopeasstd::thread::scopecounterpart #1373 - Add minimal Python event-based communication example and end-to-end test #1376
- Add
iox2 service hzcommand with rolling-rate statistics and timeout support #1383 - Release Python GIL (detach thread from python runtime) in blocking functions
like
listener.blocking_wait_one()#1421 - Implement C++20 'source_location' based on compiler source location builtins
and use it for better
ExpectedandOptionalmessages on contract violations #1496 - Enable override of preallocated data chunks for sender ports #1551
- Add
ZeroableandPlainOldDataWithoutPaddingderive macros that generate the trait impl and enforce all invariants (#[repr(C)], no padding, field bounds) at compile time #1547 - Enhance degradation handler and add unable to deliver handler #1573
- Enable all tests for 32 bit after
#1567fixed the unaligned pointer access #262 - Publisher, Client, Server no longer deadlocks with UnableToDeliveryStrategy::Block when the other side disconnects #314
- Update
set_log_level_Xdocs and mention that iceoryx2 filters even for external frameworks #620 - Remove timed and blocking send from
UnixDatagramSenderblocking block; these calls do not work on all supported platforms and were only used in the tests; the try send methods are used instead #698 - Map the sender datasegment always as read-only #906
- Remove default implementation of
ZeroCopySendfromOptionandDuration#1312 - Bump wheel from 0.45.1 to 0.46.3 in /iceoryx2-ffi/python #1316
- Fix Python type translation for integer types (32-bit) #1333
- Fix GCC 9 build failure #1342
- Bump cryptography from 45.0.7 to 46.0.5 in /iceoryx2-ffi/python #1348
- Fix memory order in queue guards and index queue #1356
- Bump shellexpand from 3.1.1 to 3.1.2 in Rust and Bazel #1365
- Feature flags
tracingandlogwere broken becausestdunconditionally enabledconsole;console,logandtracingare now exposed as top-level feature aliases in theiceoryx2crate #1369 - Resources cannot always be cleaned up with
dev_permissionsfeature flag #1370 - Add
update_connectionto Python bindings #1380 - Add
Config::setup_global_config_from_fileto C++ bindings #1395 - Fix pointer provenance in
RelocatablePtr#1405 - Bump keccak from 0.1.5 to 0.1.6 in Rust and Bazel #1416
- Bump black formatter from 25.1.0 to 26.3.1 in /iceoryx2-ffi/python #1431
- Output log entries with single write in console logger #1432
- Bump lz4_flex from 0.11.3 to 0.11.6 in Rust and Bazel #1444
- Fix libc dependency version #1447
- Fix FreeBSD build #1455
- Fix cleanup of resizable data segments #1463
- Bump rustls-webpki from 0.103.8 to 0.103.10 in Rust and Bazel #1471
- Fix deadlock in POSIX barrier in macOS #1474
- Fix
SIGPIPEinlocal::Serviceevents triggered by thesocketpair#1477 - Bump requests from 2.32.5 to 2.33.0 in iceoryx2-ffi/python #1486
- Bump cryptography from 46.0.5 to 46.0.6 in /iceoryx2-ffi/python #1499
- Make
UniqueSystemIdunique accross docker containers and pid namespaces by introducinggethostpid()in the platform. #1518 - Bump cryptography from 46.0.6 to 46.0.7 in /iceoryx2-ffi/python #1515
- Bump pytest from 8.4.1 to 9.0.3 in /iceoryx2-ffi/python #1515
- Bump rand from 0.8.5 to 0.8.6 in Rust and Bazel #1515
- Bump rustls-webpki from 0.103.10 to 0.103.13 in Rust and Bazel #1515
- Fix build error in
iceoryx2-pal-posixwith bindgen #1560 - Fix alignment of the
variantalternatives #1567
- Remove clippy workaround #223
- Remove rule suppression in clang-tidy #280
- Remove support for Bazel Workspaces #1263
- Adjust test names to naming convention #1273
- Move character output abstraction into their own crate #1300
- Move
iceoryx2-loggerscrate into building blocks asiceoryx2-bb-loggers#1300 - Replace
lazy_staticdependency withLazyLockfromstdinstdbuilds or a custom minimal spin-based implementation forno_stdbuilds #1321 - Remove
autooption from Bazel feature flags and align defaults with CMake #1326 - Remove
posixfeature and usecfgswitch based on target instead #1327 CleanupStateimplementsZeroCopySend#1331- Ignore warnings from bindgen generated files with bazel build #1345
- Set Rust minimum required version (MSRV) to version 1.85.0 #1359
- Upgrade Rust Edition to 2024 #1359
- Use
libcconstants in linux platform instead of hardcoded values #1388 - Update
inventorycrate and removedisallowed_typessuppression from tests #1492 - Rename
ServiceIdintoServiceHash#1508 - Rename
NodeIdintoUniqueNodeId#1534 - Move conformance test macros into
iceoryx2-bb-testing-macrosand rename#[conformance_test_module]to#[conformance_tests]#1540 - Move tunnel crates into services architecture layer #1552
- Add custom test framework that supports
no_stdtesting #1300 - Add
no_stdtests foriceoryx2and crates below it in the architecture #1300 - Add CI check for
stdfeature propagation #1300 - Enable clippy for the whole workspace and all targets #1355
- Add
justscripts for some common maintenance tasks #1408
- Removed
libc_platformfeature, platforms that support the cratelibcwill now automatically use it #1374
-
Loggers have been moved into
iceoryx2-bb-loggersthus manually linking to them needs to be adjusted accordingly.// old extern crate iceoryx2_loggers; use iceoryx2_log::*; set_log_level(LogLevel::Info); info!("some log message") // new extern crate iceoryx2_bb_loggers; use iceoryx2_log::*; set_log_level(LogLevel::Info); info!("some log message")
-
Building with
libcis now default on platforms that support it# old cargo build --features iceoryx2/libc_platform # new cargo build
-
ServiceIdwas renamed toServiceHash.// old use iceoryx2::*; let node = NodeBuilder::new().create::<ipc::Service>()?; let service = node .service_builder(&"My/Funk/ServiceName".try_into()?) .publish_subscribe::<TransmissionData>() .open_or_create()?; service.service_id(); // now service_hash() // new use iceoryx2::*; let node = NodeBuilder::new().create::<ipc::Service>()?; let service = node .service_builder(&"My/Funk/ServiceName".try_into()?) .publish_subscribe::<TransmissionData>() .open_or_create()?; service.service_hash();
-
NodeIdwas renamed toUniqueNodeId.// old use iceoryx2::*; let node = NodeBuilder::new().create::<ipc::Service>()?; let id: NodeId = node.id(); // new use iceoryx2::*; let node = NodeBuilder::new().create::<ipc::Service>()?; let id: UniqueNodeId = node.id();
-
The
#[conformance_test_module]macro has been renamed to#[conformance_tests]// old #[allow(clippy::module_inception)] #[conformance_test_module] pub mod my_module { // ... } // new #[allow(clippy::module_inception)] #[conformance_tests] pub mod my_module { // ... }
-
The crates for the
iceoryx2tunnel have been moved into theservicesarchitecture layer and have been renamed accordingly.// old use iceoryx2_tunnel::{Config, Tunnel}; // new use iceoryx2_services_tunnel::{Config, Tunnel};
-
The
UnableToDeliveryStrategyenum tags are renamed to fromBlockandDiscardSampletoRetryUntilDeliveredandDiscardData.// old service .publisher_builder() .unable_to_deliver_strategy(UnableToDeliverStrategy::Block) .create()?; // new service .publisher_builder() .unable_to_deliver_strategy(UnableToDeliverStrategy::RetryUntilDelivered) .create()?;
-
The
DegradationCallbackwas renamed toDegradationHandler, as well as its setters and the parameter changed from port IDs toDegradationCauseandDegradationInfo/// old pub_sub_service .publisher_builder() .set_degradation_callback(|sender_port_id, receiver_port_id| /* ... */) .create()? pub_sub_service .subscriber_builder() .set_degradation_callback(|sender_port_id, receiver_port_id| /* ... */) .create()? request_response_service .client_builder() .set_request_degradation_callback(|sender_port_id, receiver_port_id| /* ... */) .set_response_degradation_callback(|sender_port_id, receiver_port_id| /* ... */) .create()? request_response_service .server_builder() .set_request_degradation_callback(|sender_port_id, receiver_port_id| /* ... */) .set_response_degradation_callback(|sender_port_id, receiver_port_id| /* ... */) .create()? /// new pub_sub_service .publisher_builder() .set_degradation_handler(|cause, info| /* ... */) .create()? pub_sub_service .subscriber_builder() .set_degradation_handler(|cause, info| /* ... */) .create()? request_response_service .client_builder() .set_request_degradation_handler(|cause, info| /* ... */) .set_response_degradation_handler(/* ... */) .create()? request_response_service .server_builder() .set_request_degradation_handler(|cause, info|/* ... */) .set_response_degradation_handler(|cause, info|/* ... */) .create()?
-
The
DegradationAction::Failwas renamed toDegradationAction::DegradeAndFail.// old service .publisher_builder() .set_degradation_callback(|_, _| DegradationAction::Fail) .create()?; // new service .publisher_builder() .set_degradation_handler(|_, _| DegradationAction::DegradeAndFail) .create()?;