Commit Graph

7806 Commits

Author SHA1 Message Date
Pat Hickey
d8f3a62b32 dont try to make a virtfs today. instead, delete virtfs example. 2021-01-29 17:27:05 -08:00
Pat Hickey
95ad13c82d wasi-common: break dep on system-interface by defining our own Advice enum 2021-01-29 17:03:08 -08:00
Pat Hickey
2e10e621c4 stub virtfs 2021-01-29 17:02:57 -08:00
Pat Hickey
897b4fb8ab wasictxbuilder: assert that stdio is provided 2021-01-29 15:48:55 -08:00
Pat Hickey
5ee605995d fix wasi example 2021-01-29 15:43:30 -08:00
Pat Hickey
2ad7565a65 update linking example 2021-01-29 15:39:29 -08:00
Pat Hickey
8ea42abb14 fix wasi-nn and wasi-crypto integrations for wasmtime-wiggle changes
the Rc<RefCell<ctx>> wrapping inside the wasmtime-generated bindings
was eliminated, and instead the caller of ::new(linker, ctx) is
required to wrap the ctx in Rc<RefCell<>>.

The Rc wrapping inside WasiCryptoCtx can be eliminated due to this
change.
2021-01-29 14:25:47 -08:00
Pat Hickey
b48e7fcc5d integrate with c-api 2021-01-29 14:09:44 -08:00
Pat Hickey
6a5d4b9993 docs 2021-01-29 13:31:30 -08:00
Pat Hickey
d3ba69d865 wasi-common no longer contains code derived from cloudabi-utils
the original C implementation was derived directly from cloudabi-utils.
that implementation is no longer in tree.

acfoltzer's initial Rust implementation included a path_open function
that was ported from cloudabi-utils. this rewrite of wasi-common has
completely delegated all path lookup functionality to cap-std (in the
cap-std-sync impls), and cap-std itself has a completely re-designed
method of path resolution.
2021-01-29 13:28:13 -08:00
Pat Hickey
d5fdd835ab port bench-api 2021-01-29 13:25:06 -08:00
Pat Hickey
8b285ec2e7 make wasmtime_wasi::Wasi a struct which does both snapshots! 2021-01-29 13:23:04 -08:00
Pat Hickey
11821e5bfd Merge remote-tracking branch 'origin/main' into pch/wasi_common_cap_std 2021-01-29 12:38:13 -08:00
Pat Hickey
e498888732 hook run command up to both wasi snapshots
sharing the same context! at long last
2021-01-29 12:29:30 -08:00
Pat Hickey
70f8288ec9 wasmtime-wiggle: take an Rc<RefCell<ctx>> instead of construct one
so that if users wish to share a ctx between modules they may!
2021-01-29 12:18:21 -08:00
Pat Hickey
c8e76b11ba wasmtime-wasi: support both snapshots 2021-01-29 12:11:38 -08:00
Pat Hickey
d738a4a588 preview 0: copy bodies of read, write, and poll_oneoff from snapshot 1 2021-01-29 12:07:21 -08:00
Nick Fitzgerald
a4eaefc670 Merge pull request #2623 from alexcrichton/update-some-deps
Update some wasm-tools dependencies
2021-01-29 10:53:18 -08:00
Benjamin Bouvier
2275519cb1 cranelift x64: use the POPCNT instruction for Popcount when it's available; 2021-01-29 19:41:01 +01:00
Benjamin Bouvier
6bf6612d96 cranelift x64: use the TZCNT instruction for Ctz when it's available; 2021-01-29 19:41:01 +01:00
Benjamin Bouvier
d3acd9a283 cranelift x64: use the LZCNT instruction for Clz when it's available; 2021-01-29 19:41:01 +01:00
Alex Crichton
f1d922dc2d Update some wasm-tools dependencies
Mostly focused around some small bugfixes and improvements related to
module-linking fuzzing.
2021-01-29 10:04:36 -08:00
Chris Fallin
b1b078e2bc Merge pull request #2621 from kaseyc/nop
Replace MachInst::gen_zero_len_nop with gen_nop(0)
2021-01-29 09:01:36 -08:00
Alex Crichton
0e41861662 Implement limiting WebAssembly execution with fuel (#2611)
* Consume fuel during function execution

This commit adds codegen infrastructure necessary to instrument wasm
code to consume fuel as it executes. Currently nothing is really done
with the fuel, but that'll come in later commits.

The focus of this commit is to implement the codegen infrastructure
necessary to consume fuel and account for fuel consumed correctly.

* Periodically check remaining fuel in wasm JIT code

This commit enables wasm code to periodically check to see if fuel has
run out. When fuel runs out an intrinsic is called which can do what it
needs to do in the result of fuel running out. For now a trap is thrown
to have at least some semantics in synchronous stores, but another
planned use for this feature is for asynchronous stores to periodically
yield back to the host based on fuel running out.

Checks for remaining fuel happen in the same locations as interrupt
checks, which is to say the start of the function as well as loop
headers.

* Improve codegen by caching `*const VMInterrupts`

The location of the shared interrupt value and fuel value is through a
double-indirection on the vmctx (load through the vmctx and then load
through that pointer). The second pointer in this chain, however, never
changes, so we can alter codegen to account for this and remove some
extraneous load instructions and hopefully reduce some register
pressure even maybe.

* Add tests fuel can abort infinite loops

* More fuzzing with fuel

Use fuel to time out modules in addition to time, using fuzz input to
figure out which.

* Update docs on trapping instructions

* Fix doc links

* Fix a fuzz test

* Change setting fuel to adding fuel

* Fix a doc link

* Squelch some rustdoc warnings
2021-01-29 08:57:17 -06:00
Amanieu d'Antras
78f312799e Optimize EntityList::extend and add EntityList::from_iter 2021-01-29 14:09:52 +01:00
Kasey Carrothers
99be82c866 Replace MachInst::gen_zero_len_nop with gen_nop(0) 2021-01-29 01:15:08 -08:00
Chris Fallin
ac60ad6c9a Merge pull request #2614 from kaseyc/nop
Avoid creating 0-sized nops in x64's gen_nop().
2021-01-28 21:37:39 -08:00
Kasey Carrothers
f76a9d436e Clean up handling of NOPs in the x64 backend.
1. Restricts max nop size to 15 instead of 16.
2. Fixes an edge case where gen_nop() would return a zero sized intruction on multiples of 16.
3. Clarifies the documentation of the gen_nop interface to state that returning zero is allowed when preferred_size is zero.
2021-01-28 20:45:00 -08:00
Johnnie Birch
cbd7a6a80e Add sse41 lowering for rounding x64 2021-01-28 17:37:17 -08:00
Pat Hickey
ef2cb7b6b7 nearly have snapshot 0 implemented... 2021-01-28 17:00:31 -08:00
Pat Hickey
9bd89abc0c rename everything c2 related to the "real" names 2021-01-28 15:34:03 -08:00
Pat Hickey
47fec44c10 move wasi-c2 into wasi-common 2021-01-28 15:15:50 -08:00
Pat Hickey
dd005208b6 delete wasi-common, yanix, winx 2021-01-28 15:13:45 -08:00
Pat Hickey
d628677fae move test failures into ignores in build.rs 2021-01-28 15:07:48 -08:00
Pat Hickey
1d057af64d notes 2021-01-28 13:20:52 -08:00
Pat Hickey
201a888d92 dirty fuckin' dangles boys
fuck you shorsey
2021-01-28 13:02:48 -08:00
Pat Hickey
11b8222033 missed a dangling symlink 2021-01-28 12:59:44 -08:00
Pat Hickey
34ad8df169 dangling directories are a windows thing 2021-01-28 12:58:41 -08:00
Pat Hickey
4801ea04a1 cool 2021-01-28 12:36:50 -08:00
Pat Hickey
0cedc17246 another one bites the dust 2021-01-28 12:35:13 -08:00
Pat Hickey
79e8f17486 bum bum bum 2021-01-28 12:30:37 -08:00
Pat Hickey
dae022b17f woo 2021-01-28 12:29:30 -08:00
Pat Hickey
1196e216e9 fix macro by denying trailing slashes. also other stuff 2021-01-28 12:23:48 -08:00
Pat Hickey
20e9169cc7 fd_allocate: put meat of test behind a guard 2021-01-28 11:43:42 -08:00
Nick Fitzgerald
d1c1cb6a25 bench-api: receive working directory as an argument
Rather than implicitly use the current working directory.
2021-01-28 11:43:06 -08:00
Pat Hickey
f7403acb6f fd_advise test: set size via fd_filestat_set_size and fd_allocate 2021-01-28 11:42:30 -08:00
Pat Hickey
e758318fee wire env variables through test runner to TESTCONFIG 2021-01-28 11:34:18 -08:00
Pat Hickey
bbbe168ca1 ctx: i guess we need environment variables! 2021-01-28 11:34:00 -08:00
Pat Hickey
7ffe3c72c5 config is lazy_static to amoritze it 2021-01-28 11:20:02 -08:00
Nick Fitzgerald
be1ac15beb Merge pull request #2617 from alexcrichton/limit-tables-and-memeories
Add knobs to limit memories/tables in a `Store`
2021-01-28 10:20:33 -08:00