eclipse-iceoryx / eclipse-iceoryx/iceoryx2-csharp
Update iceoryx2 submodule from v0.8.1 to v0.9.1
- Dominant language
- C#
- Stars
- 31
- Forks
- 8
- PR merge metrics
- No merged PRs in 30d
Description
## Brief feature description
Bump the `iceoryx2` git submodule from its current pin `v0.8.1` (`adf3f51`) to **v0.9.1** (released 2026-05-27). Submodule path: `iceoryx2` (see `.gitmodules`). Release tag: https://github.com/eclipse-iceoryx/iceoryx2/releases/tag/v0.9.1
The update crosses **two** upstream releases — v0.9.0 (2026-05-18) and v0.9.1 (2026-05-27). Almost all of the API breakage lives in v0.9.0; v0.9.1 is mostly bugfixes plus one new feature.
## Detailed information
### What's in v0.9.1 (over v0.9.0)
**Features**
- [iceoryx2#1654] Introduce `AdaptiveWaitBehavior`
**Bugfixes** (selected — full list in the release notes)
- [iceoryx2#1650] Fix `NodeCreationFailure::InternalError` on concurrent node creation — directly relevant to the `WaitSet`/`ServiceDiscovery` concurrency hardening landed in #20.
- [iceoryx2#1660] Rework process alive detection to enable communication across docker containers.
- [iceoryx2#1670] Fix `SIGBUS` on cleanup with write-only shared memory with root.
- [iceoryx2#1681] Deactivate `cleanup_dead_nodes_on_open` for `send_dead_node_signal`.
### v0.9.0 breaking changes that touch this binding
The C# binding currently uses several surfaces that v0.9.0 renamed or removed. These are the concrete spots that will need work in this PR:
1. **`ServiceId` → `ServiceHash`.** The cbindgen-emitted `IOX2_SERVICE_ID_LENGTH` likely becomes `IOX2_SERVICE_HASH_LENGTH` (or similar). Sites to update:
- `src/Iceoryx2/Native/Iox2NativeMethods.cs:71` — `IOX2_SERVICE_ID_LENGTH` constant
- `src/Iceoryx2/Native/Iox2NativeMethods.cs:596` — `[MarshalAs(... SizeConst = IOX2_SERVICE_ID_LENGTH)]`
- `src/Iceoryx2/Node.cs:72,76,79,83` — manual marshal offsets in `Node.List()`
- `tests/Ffi/NativeStructSizesTests.cs` — the size-mirror tripwire row
2. **`NodeId` → `UniqueNodeId`.** Audit any `iox2_node_id_*` symbol usage in the `Node` bindings.
3. **`UnableToDeliverStrategy` → `BackpressureStrategy`**, with enum tags `Block`/`DiscardSample` → `RetryUntilDelivered`/`DiscardData`. Audit any QoS settings exposed by the binding for matching `iox2_unable_to_deliver_strategy_e` enum usage.
4. **`DegradationCallback` → `DegradationHandler`** (and signature change from port IDs to `DegradationCause` + `DegradationInfo`).
5. **`DegradationAction::Fail` → `DegradationAction::DegradeAndFail`.**
6. **`Node::remove_stale_resources` → `try_remove_stale_resources`** (plus new `blocking_remove_stale_resources`).
7. **`Config::global.service.creation_timeout` → `Config::global.node.creation_timeout`.**
8. **`iceoryx2_loggers` → `iceoryx2_bb_loggers`** (link-time rename; affects native lib build only, not C# code).
9. **`libc_platform` feature removed** (now default; build-flag change in any CMake/cargo wiring we maintain).
Rust MSRV bumps to 1.85.0 and Rust edition to 2024 — only matters for native build CI, not C# code.
### Plan of work for the PR
- [ ] Update `iceoryx2` submodule pin to the `v0.9.1` tag commit.
- [ ] Rebuild the native FFI to regenerate the cbindgen C header.
- [ ] Update `Iox2NativeMethods.cs` constants and struct sizes to match the new header. `NativeStructSizesTests` will fail loudly where sizes drifted — use that as the worklist.
- [ ] Apply the API renames (1–7 above) to the C# wrapper code.
- [ ] Update any examples/docs referencing renamed surfaces.
- [ ] Run the full test suite (net8/9/10).
## Use case
iceoryx2-csharp users get the v0.9.x bugfixes (notably the concurrent node-creation fix that complements the binding-side fixes in #20, and the docker-container alive-detection rework that enables cross-container IPC), the new `AdaptiveWaitBehavior` knob, and stay aligned with the upstream's current release line so future bumps don't accumulate cross-version breakage.
## Additional context
- #21 — Follow-up to auto-generate the constants/struct sizes from the C header. Doing that here would short-circuit step 3 entirely but is larger in scope; this issue assumes the current manual mirror.
- #12 / #20 — FFI testing infrastructure that gives us the tripwires (`NativeStructSizesTests`) to detect drift during this bump.
Contributor guide
Assessment
This issue has not been assessed yet.