Skip to content

Conversation

alexcrichton
Copy link
Member

This commit fills out definitions in libc for rust-lang/rust#147572 notably filling out some fs-related functions as well as many pthread-related functions. The pthread-related functions were not available originally with wasi-libc but nowadays are stubs for single-threaded behavior. The goal is to make wasi targets more "unix like" in libstd and have less WASI-specific code.

All sources for these definitions are taken from https://github.com/WebAssembly/wasi-libc/

This commit fills out definitions in libc for rust-lang/rust#147572
notably filling out some fs-related functions as well as many
pthread-related functions. The pthread-related functions were not
available originally with wasi-libc but nowadays are stubs for
single-threaded behavior. The goal is to make wasi targets more "unix
like" in libstd and have less WASI-specific code.
@alexcrichton
Copy link
Member Author

@rustbot label +stable-nominated

@rustbot rustbot added the stable-nominated This PR should be considered for cherry-pick to libc's stable release branch label Oct 14, 2025
Copy link
Contributor

@tgross35 tgross35 left a comment

Choose a reason for hiding this comment

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

This looks good to me, just a question about the arrays

src/wasi/mod.rs Outdated
Comment on lines 178 to 181
#[repr(align(4))]
pub struct pthread_attr_t {
size: [u8; 36],
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Is 64-bit wasi something we'll need to support? If so, maybe [c_ulong; if size_of::<c_long>() == 8 { 7 } else { 9 }] to account for that, and it's a bit easier to match up to the source anyway (assuming this is the right definition https://github.com/WebAssembly/wasi-libc/blob/6b45da5b05bc0edda355a6de46101d4b21631985/libc-top-half/musl/include/alltypes.h.in#L108). Same kind of thing for the others from that block.

Copy link
Member Author

Choose a reason for hiding this comment

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

Eventually, yes. For now though I don't think it's worth it. Currently there is no 64-bit WASI target (WebAssembly/component-model#22) so there's nothing to test against. I'm happy, however, to come around later and fix this once 64-bit targets do exist though!

Copy link
Member Author

Choose a reason for hiding this comment

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

I like the idea of using a more representative type internally, though, so I've switched to that.

Copy link
Contributor

@tgross35 tgross35 left a comment

Choose a reason for hiding this comment

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

Awesome, thanks!

@tgross35 tgross35 added this pull request to the merge queue Oct 16, 2025
Merged via the queue into rust-lang:main with commit 06a5ca2 Oct 16, 2025
50 of 52 checks passed
@alexcrichton alexcrichton deleted the moer-wasi branch October 16, 2025 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

O-wasi stable-nominated This PR should be considered for cherry-pick to libc's stable release branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants