-
Notifications
You must be signed in to change notification settings - Fork 164
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
6.0: Fix WASI support #825
Conversation
This is necessary to get the `__wasilibc_get_environ` function declaration. (cherry picked from commit 243066f)
) C functions with `()` as parameter list can take any number of parameters. But WebAssembly requires static signature information for every function call, so we need to explicitly specify `(void)` to indicate that the function takes no parameters. (cherry picked from commit 8f34f38)
WASI does not define the EREMOTE error code. (cherry picked from commit 6bb5ff7)
This commit guards out the extended attributes and file system attributes related code on WASI as WASI does not support these features. Just return nothing or ignore the set request. (cherry picked from commit fab7195)
* Guard out user/group related code on WASI This change guards out the user/group related code on WASI, as WASI does not have the concept of users or groups. * Throw explicit unsupported error if trying to set user or group on WASI Instead of implicitly ignoring user-given values, we should throw exception to make it clear that those values cannot be set on WASI. (cherry picked from commit 0b3974d)
WASI does not surface the sticky bit and getuid, so we cannot check whether the file is actually deletable before attempting to delete it. (cherry picked from commit e90b6c3)
WASI doesn't have `sendfile`, so we need to implement the copy in user space with `read` and `write`. It's not as efficient as `sendfile`, but it's the best we can do. (cherry picked from commit 2a6afeb)
(cherry picked from commit aa68eeb)
* Add `import WASILibc` statements to libc import chains * Declare wasm32 arch as 32-bit environment * Switch to _pointerBitWidth for architecture checks This change switches the architecture checks in Data.swift to use the _pointerBitWidth instead of the arch() checks for consistency with newer platforms. (cherry picked from commit c82d167)
* Enable wasi-libc emulation features Those features require explicit macro definitions to be enabled, so add them to the package definition. Only affects WASI builds. * Prefer `TARGET_OS_WASI` over `__wasi__` And explain why we need definition checks for `signal.h` and `sys/mman.h` (cherry picked from commit c86692f)
@swift-ci test |
@kateinoigakukun is there anything else you'd like to cherry-pick here if possible, keeping changes at low risk? |
@swift-ci test |
@kateinoigakukun have you seen this failure on Linux before, or is this branch missing some Wasm-related commits from
|
Hmm, I haven't seen it. At least we haven't touched JSONEncoder stuff in WASI support changes. |
That failure was a regression caused by a change in SwiftPM, which was fixed on |
@swift-ci test |
@jmschonfeld No, the changes I made to SwiftPM are main branch only, there weren't cherry-picked to release/6.0 |
Worth noting though that it is currently using the incorrect path anyway, it's quite possible that the build plan changed here somehow. We should definitely cherry-pick the test fix, it's very safe. |
@swift-ci please test Linux platform |
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.
We don't have extra commits here that need to be merged back into main
, right?
No, this is only change I made and it's already on
|
Explanation: these patches restore support for WASI that was available in
swift-corelibs-foundation
before it was recored.Scope: Isolated to WASI codepaths.
Risk: Low due to isolated scope.
Testing: Tested manually for WASI, on CI with the existing test suite for other platforms.
Issue: rdar://133231577
Reviewer: @MaxDesiatov and @jmschonfeld