about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorChris Denton <chris@chrisdenton.dev>2025-04-21 18:53:16 +0000
committerGitHub <noreply@github.com>2025-04-21 18:53:16 +0000
commit5779843edac746718fead4eeeb505ef7bae8aef0 (patch)
tree9f88b6d938dc64df61d3ad8b90667597f1a120bb /compiler/rustc_codegen_llvm/src
parent1ca5e4f1c1a4682b06db61abc0ce5d6244571329 (diff)
parentc1f0498e656665df438178bfd39ce75e321f191f (diff)
downloadrust-5779843edac746718fead4eeeb505ef7bae8aef0.tar.gz
rust-5779843edac746718fead4eeeb505ef7bae8aef0.zip
Rollup merge of #139711 - thaliaarchi:hermit-args, r=jhpratt
Hermit: Unify `std::env::args` with Unix

The only differences between these implementations of `std::env::args` are that Unix uses relaxed ordering, but Hermit uses acquire/release, and Unix truncates `argv` at the first null pointer, but Hermit doesn't. Since Hermit aims for Unix compatibility, unify it with Unix.

The atomic orderings were established in https://github.com/rust-lang/rust/pull/74006 (cc `@euclio)` for Unix and https://github.com/rust-lang/rust/pull/100579 (cc `@joboet)` for Hermit and, before those, they used mutexes and non-atomic statics. I think the difference in orderings is simply from them being changed at different times. The commented explanation for using acquire/release for Hermit is “to broadcast writes by the OS”. I'm not experienced enough with atomics to accurately judge, but I think acquire/release is stronger than needed. Either way, they should match.

Truncating at the first null pointer seems desirable, though I don't know whether it is necessary in practice on Hermit.

cc `@mkroening` `@stlankes` for Hermit
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions