Add more wasi definitions for libstd#4747
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 |
tgross35
left a comment
There was a problem hiding this comment.
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.
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.
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.
I like the idea of using a more representative type internally, though, so I've switched to that.
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. (backport <rust-lang#4747>) (cherry picked from commit 702efb9)
(backport <rust-lang#4747>) (cherry picked from commit 3fb070e)
(backport <rust-lang#4747>) (cherry picked from commit 06a5ca2)
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. (backport <rust-lang#4747>) (cherry picked from commit 702efb9)
(backport <rust-lang#4747>) (cherry picked from commit 3fb070e)
(backport <rust-lang#4747>) (cherry picked from commit 06a5ca2)
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. (backport <#4747>) (cherry picked from commit 702efb9)
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/