Skip to content
This repository has been archived by the owner on Aug 31, 2023. It is now read-only.

Weekly merge #55

Merged
merged 22 commits into from
Aug 18, 2023
Merged

Weekly merge #55

merged 22 commits into from
Aug 18, 2023

Conversation

dhil
Copy link

@dhil dhil commented Aug 18, 2023

No description provided.

alexcrichton and others added 22 commits August 11, 2023 22:29
* Add support for vector in DataValueExt::int()

Fixes bytecodealliance#6827

* Replace `if` with `match`

* Enable interpreter test for simd ineg

Issue bytecodealliance#6827

* Format code with `cargo fmt`

and also improve comment
…e#6839)

* Docs: Remove unneeded command in WASI-tutorial.md

The `cat /tmp/somewhere.txt` command in the example using --dir=$PWD is not needed. The error message should be after the first command anyway since it should be the one creating the message.

It looks like a copy/paste error since the previous example showed the same `cat` command a successful copy.

* Docs: Update error messages in WASI-tutorial.md.

The error messages appear to have changed since this document was originally written.
* Update RELEASES.md

* Update RELEASES.md
…#6833)

Not all file descriptors can get registered with epoll, for example
files on Linux or `/dev/null` on macOS return errors. In these
situations the fallback of the worker thread implementation is used
instead.
…e#6845)

Rename `crates/wasi/src/preview2/preview1/mod.rs` to
`crates/wasi/src/preview2/preview1.rs`, as there are no other files in
the `preview1` directory.
…alliance#6841)

This commit prepares for the introduction of float support to Winch. Initially,
I intended to include this change as part of the original change supporting
floats, but that change is already sizable enough.

This modification simplifies the Assembler and MacroAssembler interfaces, as
well as the interaction and responsibilities between them, by:

* Eliminating the `Operand` abstraction, which didn't offer a substantial
benefit over simply using the MacroAssembler's `RegImm` and `Address`
abstractions as operands where necessary. This approach also reduces the number
of conversions required prior to emission.

* Shifting the instruction dispatch responsibility solely to the MacroAssembler,
rather than having this responsibility shared across both abstractions. This was
always the original intention behind the MacroAssembler. As a result, function
definitions at the Assembler layer become simpler.

This change also introduces richer type information for immediates, which
results in better instruction selection in some cases, and it's also needed to
support floats.
…e#6806)

* rename wasi-cli-base to wasi-cli, delete `preview` package, import wasi-cli

wasi-cli import is sum of
WebAssembly/wasi-cli#19 and
WebAssembly/wasi-cli#20

* wasi impl: change bindgen arguments and mod paths from cli_base to cli

* correct name of wasi-cli deps dir to just `deps/cli/`

it turns out this isnt semantically meaningful, since the package name
is in the document itself now, but lets be consistient

* track whether stdio isatty in ctx, and impl the cli/terminal-* interfaces

* rebase fixup

* wasi wits: define the reactor adapter's world

* component adapter: fixes

* test-programs/command-tests: fix renaming cli_base to cli

* component adapter: fix manually-defined export and import names

* test harness fixes

* preview1 component adapter: fill in isatty detection

* implement isatty in preview2-to-preview1 host adapter

* test-programs: cover both when stdio isatty and not

prtest:full

* split isatty test for regular file and stdio, detect host stdio is_terminal

CI environments vary - let the test runner make sure the host process's
stdio is in fact a terminal before asserting that the guest sees it is a
terminal.

* provide an is-terminal impl for all preview2's stdio types

which means making a newtype around Stdout and Stderr instead of using
a type alias there.

and then use the is-terminal impl to fill in the isatty field in the
builder when inheriting. if you need to override it you can always
builder.stdin(stdio::stdin(), your_own_idea_of_isatty)

* finally, rename IsATTY variants to Yes and No

* Fix the reference to IsATTY::No

* more forgotten renamings

---------

Co-authored-by: Trevor Elliott <telliott@fastly.com>
* CI: upgrade to qemu 8.0.4.

This should resolve a bug in qemu triggered by changes in bytecodealliance#6820
(see
[here](bytecodealliance#6820 (comment))).

* ci: Update QEMU patch for 8.0.2

---------

Co-authored-by: Afonso Bordado <afonsobordado@az8.co>
* attempt at inserting things where i think they might belong + questions

* entry hook + questions

* commented out all changes, doc comment errors

* fix doc comment

* libcalls build now!!!!

* initial check_malloc_exit setup

* WIP: load/store hooks

* hooks added + building

* added valgrind library

* made wasm-valgrind accessible in wasmtime

* check_malloc filled in...

* move valgrind_state to an appropriate part of instance

it works!!!!!

* yay it's working! (?) i think??

* stack tracing in progress

* errors + num bytes displayed

* initial valgrind configuration

* valgrind conditional some warnings fixed

* conditional compilation + CLI flag finished

* panic!() changed to bail!()

* started adding doc comments

* added memory grow hook + fixed access size handling

* removed test.wasm

* removed malloc_twice.wat

* doc comments in spec.rs

* pr feedback addressed

* ran cargo fmt

* addressing more feedback

* Remove fuzz crate from wmemcheck.

* Review feedback and test fix.

* add wasmtime-wmemcheck crate to publish allowlist.

* fix build without compiler features

* reorder crates in publish list

* Add trampolines for libcalls on s390x.

* Make wasmtime-wmemcheck dep an exact version requirement.

---------

Co-authored-by: iximeow <awortman@fastly.com>
Co-authored-by: Chris Fallin <chris@cfallin.org>
Co-authored-by: iximeow <git@iximeow.net>
* wasi-nn: refactor to allow `preview2` access

This change refactors the `wasmtime-wasi-nn` crate to allow access from
both `preview1` and `preview2` ABIs. Though the `wasi-nn` specification
has included a WIT description for some time, here we use some in-tree
files until WebAssembly/wasi-nn#38 is landed.
The `preview2` code is not exercised anywhere yet: ideally this would be
wired up once component model `resource`s are fully implemented in
Wasmtime.

prtest:full

* wasi-nn: use `preview1` linkage

prtest:full

* review: rename `preview*` to `wit*`

This is based on @pchickey's [comments] on ABI naming.

[comments]: https://bytecodealliance.zulipchat.com/#narrow/stream/266558-wasi-nn/topic/wasi-nn.20.2B.20preview2/near/383368292

* review: update README

* fix: remove broken doc links

* fix: replace typo `wit` with `gen`

* review: use `wit` types everywhere

This removes the crate-specific types in order to use the WIT-generated
types throughout the crate. The main effect of this is that the crate
no longer optionally includes `wasmtime` with the `component-model`
feature--now that is required.

* review: move `BackendKind` conversion into `witx.rs`

* review: remove `<'a>`

* review: use `tracing` crate instead of `eprintln!`
This change removes the temporary `*.wit` files and bumps the `spec`
directory to the latest [wasi-nn] commit. This is now possible because
the upstream `spec` repository has all of the updated WIT and WITX bits.
The `load_by_name` implementations are left as TODOs for now and will be
included in a subsequent PR.

One other change is a refactoring: we wrap up some types--`Graph` and
`ExecutionContext`--to avoid passing around `Box<dyn ...>`. This
simplifies some of the code but should not change behavior.

Run all tests: prtest:full

[wasi-nn]: https://github.com/WebAssembly/wasi-nn.
* wmemcheck: update docs.

This PR expands the documentation for the Wasm memchecker (`wmemcheck`)
feature significantly, and also links it from the top-level
documentation hierarchy.

* Add syntax/language annotations to quotation sections to keep mdbook happy.
* stream wit definition eliminates stream-error

In WebAssembly/wasi-io#38 we got review feedback
to eliminate the stream-error in favor of the empty error in wit
`result<a>`.

This means we cant use trappable error anymore, and therefore leads to
all this other unsightly transformation of the streams trait definition
and all its call sites.

We'll fix the wasmtime-wit-bindgen macro to support this case better in
the future, but rn we gotta stay synchronized with upstream

On the upside this showed us that the host stream trait design doesnt
differentiate between a runtime and a trapping error, so lets fix that
next

introduce a StreamRuntimeError, use it in filesystem streams

and fix an incorrect error transformation in the filesystem read impl

fill in fixmes for distinguishing a stream runtime error

delete outdated fixmes: downcast is now guaranteed by child resource tracking

* dont try to detect rustix io error - just call all read/write errors runtime

I don't think we should trap on any of the errors possible here,
reporting them as failures is sufficient
* feat: align wasi-http with component linker

* feat(wasi-http): allow bidirectional stream

* feat(wasi-http): clean up children when dropping resource

* chore: update based on feedback

* chore: replace wasi http context references

* chore: fix logical issue with outgoing body stream

* chore: use thread-safe reference-counting pointer

* chore: cleanup resources using table

* fix(wasi-preview1-component-adapter): sync command extended wit

* fix(wasi-preview1-component-adapter): sync command extended wit

* fix(wasmtime-wasi): sync wit for http types

* chore: refactor using wasmtime-wasi crate

fix(wasi-http): misconfiguration in wasmtime linkers

chore: keep streams details

chore: fix wasi http tests

* chore: use pollable from wasmtime-wasi

* chore: update wasi http linker for module

* chore: update test programs for wasi http

* fix(wasi-http): ensure proper errors are surfaced

* chore: split wasi http tests into individual files

* chore: ensure protocol error is mapped correctly

* chore: disable temporarily wasi http in wasmtime cli

* chore: comment out wasi http in wasmtime cli

* chore(ci): ensure wit definitions in sync

* feat(wasi-http): generate async host binding

* chore: make wasi http tests async

* chore: update ci workflow based on suggestion

Co-authored-by: Pat Hickey <pat@moreproductive.org>

* feat(wasmtime-wasi): update logging world to latest

* feat(wasmtime): update proxy world to latest

* feat(wasmtime-wasi): add back command extended world

* fix(wasi-http): sync wit definitions

* chore: update tests with latest wit definitions

* Update src/commands/run.rs

* Update src/commands/run.rs

* Update src/commands/run.rs

* Update src/commands/run.rs

* Update src/commands/run.rs

* Update src/commands/run.rs

* Update src/commands/run.rs

* Update src/commands/run.rs

* Update src/commands/run.rs

* chore: fix formatting

* Ignore flaky test

* chore: fix compilation error for riscv64 arch

* Avoid `cp -T` on macos

Adding prtest:full to ensure that we've seen a successful build before
queuing.

* Don't build the wasi-http test programs for the native target

* Debug the wit consistency check

* Update streams.wit in wasi-http

* Mark the component outbound_request_post test flaky

* Disable flaky wasi-http-tests on windows only

* Use diff instead of rm/cp/git diff

* Disable more tests on windows

---------

Co-authored-by: Eduardo Rodrigues <eduardomourar@users.noreply.github.com>
Co-authored-by: Pat Hickey <pat@moreproductive.org>
Co-authored-by: Trevor Elliott <telliott@fastly.com>
* Add splat simplify opt for iadd, isub, imul, ineg & iabs

* Add splat simplify opt for smulhi & hmulhi

* Add splat simplify opt for band, bor & bxor

* Add splat simplify opt for a few more ops

namely, popcnt, smin, umin, smax, umax, sadd_sat, uadd_sat, ssub_sat & usub_sat

* Add splat simplify opt for bnot

* Add splat simplify opt for shift and rotate ops

and avg_round as well

* Remove splat simplify opt for certain ops

because they don't support scalars.

* Add lane_type to splat opts for shift/rotate

Some of the wasmtime spec tests were failing without this

* Remove splat simplify opt for avg_round

because it doesn't support scalars.
@dhil dhil merged commit 3ddcced into effect-handlers:typed-continuations Aug 18, 2023
4 checks passed
@dhil dhil deleted the weekly-merge branch August 18, 2023 13:06
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.