Skip to content

Conversation

@elfenpiff
Copy link
Contributor

Notes for Reviewer

Pre-Review Checklist for the PR Author

  • Add sensible notes for the reviewer
  • PR title is short, expressive and meaningful
  • Consider switching the PR to a draft (Convert to draft)
    • as draft PR, the CI will be skipped for pushes
  • Relevant issues are linked in the References section
  • Branch follows the naming format (iox2-123-introduce-posix-ipc-example)
  • Commits messages are according to this guideline
    • Commit messages have the issue ID ([#123] Add posix ipc example)
    • Keep in mind to use the same email that was used to sign the Eclipse Contributor Agreement
  • Tests follow the best practice for testing
  • Changelog updated in the unreleased section including API breaking changes
  • Assign PR to reviewer
  • All checks have passed (except task-list-completed)

PR Reviewer Reminders

  • Commits are properly organized and messages are according to the guideline
  • Unit tests have been written for new behavior
  • Public API is documented
  • PR title describes the changes

References

Closes #1324

@elfenpiff elfenpiff requested a review from elBoberido January 27, 2026 10:41
@elfenpiff elfenpiff self-assigned this Jan 27, 2026
@codecov
Copy link

codecov bot commented Jan 27, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.85%. Comparing base (03b09c5) to head (cbde9fe).
⚠️ Report is 60 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1325      +/-   ##
==========================================
- Coverage   77.86%   77.85%   -0.02%     
==========================================
  Files         405      405              
  Lines       38759    38759              
  Branches     1256     1256              
==========================================
- Hits        30179    30175       -4     
- Misses       7547     7551       +4     
  Partials     1033     1033              
Flag Coverage Δ
CPP 68.04% <ø> (ø)
Rust 77.70% <ø> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
iceoryx2-pal/concurrency-sync/src/atomic.rs 96.48% <ø> (ø)

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment on lines +111 to +115
#[cfg(all(not(all(test, loom, feature = "std")), not(target_has_atomic = "64")))]
#[deprecated(
since = "0.0.1",
note = "This platform does not support native atomic 64-bit operations! iceoryx2 uses a 64-bit atomic based on spinlocks that cannot guarantee lock-free operations. A crash in one process may cause a deadlock in another process."
)]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I strongly advice not to do this. All modern (newer than 30 years) CPU architectures not meant for microcontroller support 8 byte CAS also on 32 bit. For uCs, using a spin-lock will lead to deadlocks in common use cases, even if nothing goes wrong. For example, queues are often used to pass data from interrupt service routines to the main loop. iceoryx2 would be ideal for this use case. But with the spin-lock, this can deadlock when a subscriber takes samples in the main loop while a publisher publishes data in the ISR. The warning also does not give any hint that this can happen, because there are no processes on uCs. For anything that can run a process, we already support 8 byte CAS on 32 bit. But even for those use cases, as a user I have no clue what this means. I'm only using publish-subscribe and there is no warning about that, so I'm fine, right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build failure for targets that don't support 64 bit atomic

2 participants