Skip to content

Add support for std::atomic<T> in Crubit.#1074

Open
copybara-service[bot] wants to merge 1 commit into
mainfrom
test_920404627
Open

Add support for std::atomic<T> in Crubit.#1074
copybara-service[bot] wants to merge 1 commit into
mainfrom
test_920404627

Conversation

@copybara-service
Copy link
Copy Markdown

@copybara-service copybara-service Bot commented May 24, 2026

Add support for std::atomic in Crubit.
Note that std::atomic and std::atomic intentionally fall back to opaque bindings. Rust's standard library does not provide an AtomicCLong. Because long is 32-bit on Windows LLP64 and 64-bit on Linux LP64, hardcoding it to AtomicI64 or AtomicI32 would cause stack corruption across the FFI boundary.
Consequently, std::atomic<size_t> will also become opaque on 64-bit Linux because Clang canonicalizes it to unsigned long. Users should prefer std::atomic<uintptr_t> or std::atomic<uint64_t> for cross-language atomics.

@google-cla
Copy link
Copy Markdown

google-cla Bot commented May 24, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@copybara-service copybara-service Bot force-pushed the test_920404627 branch 2 times, most recently from 063389e to 778416e Compare May 24, 2026 07:39
Note that std::atomic<long> and std::atomic<unsigned long> intentionally fall back to opaque bindings. Rust's standard library does not provide an `AtomicCLong`. Because `long` is 32-bit on Windows LLP64 and 64-bit on Linux LP64, hardcoding it to AtomicI64 or AtomicI32 would cause stack corruption across the FFI boundary.
Consequently, std::atomic<size_t> will also become opaque on 64-bit Linux because Clang canonicalizes it to `unsigned long`. Users should prefer std::atomic<uintptr_t> or std::atomic<uint64_t> for cross-language atomics.

PiperOrigin-RevId: 920404627
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.

0 participants