-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Add more wasi definitions for libstd #4747
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
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.
@rustbot label +stable-nominated |
There was a problem hiding this 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
#[repr(align(4))] | ||
pub struct pthread_attr_t { | ||
size: [u8; 36], | ||
} |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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!
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thanks!
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/