Commit Graph

6024 Commits

Author SHA1 Message Date
Andrew Brown
81df93e6a0 Translate WASM float comparisons to CLIF 2019-11-08 14:06:53 -08:00
Andrew Brown
d32301854d Add x86 SIMD implementation of float comparison 2019-11-08 14:06:53 -08:00
Andrew Brown
e5a36e2c61 Allow CLIF lexer to properly identify NaN and Inf keywords 2019-11-08 14:06:53 -08:00
Dan Gohman
0f4f9d7832 Use r# to escape strings which may be rust keywords.
This is a minor simplification, replacing a hardcoded list of keywords.
2019-11-08 22:48:57 +01:00
Nick Fitzgerald
c6bd7375f9 Merge pull request #525 from sunfishcode/cargo-keywords
Add a `keywords` field to Cargo.toml files.
2019-11-08 13:33:39 -08:00
Alex Crichton
cf0af20162 Move cache configuration documentation into book
Moves `CACHE_CONFIGURATION.md` into the `cli-cache.md` page of the
book. Additionally removes this from the release tarballs.
2019-11-08 13:29:01 -08:00
Dan Gohman
97d37e9369 Add a keywords field to Cargo.toml files. 2019-11-08 12:34:58 -08:00
Dan Gohman
85cfdd0bb1 Merge pull request #512 from sunfishcode/reorg
Reorganize the codebase
2019-11-08 11:42:43 -08:00
Dan Gohman
e017062da2 Fix a path in build-tarballs.sh. 2019-11-08 10:48:50 -08:00
Dan Gohman
9af562c1ff Update dependencies. 2019-11-08 10:48:50 -08:00
Dan Gohman
7ac115d632 Update publish-all.sh for new paths. 2019-11-08 10:41:21 -08:00
Dan Gohman
b158666f2b Reorganize tests.
- Move spec_testsuite and misc_testsuite under the tests directory.
 - Remove some redundant tests from filetests.
 - Move wat tests to wat/tests.
2019-11-08 10:31:44 -08:00
Dan Gohman
32a71c0645 Update the names of the git submodules. 2019-11-08 10:20:11 -08:00
Dan Gohman
58c5906f5c Fix a path to wasmtime Cargo.toml. 2019-11-08 10:00:08 -08:00
Dan Gohman
24218c960a Move CACHE_CONFIGURATION.md to the docs directory. 2019-11-08 09:56:02 -08:00
Dan Gohman
fff777d4c3 Tidy up the top-level directory by moving misc. scripts into a subdirectory. 2019-11-08 09:56:02 -08:00
Nick Fitzgerald
7e32fa2731 Try and assign directly to return registers; backtrack to use struct-return param (#1213)
* Try and assign directly to return registers; backtrack to use struct-return param

Rather than trying to count number of return registers that would be used by a
given set of return values, optimistically assign the return values to
registers. If we later find that we can't fit them all in registers, then
backtrack and introduce the use of a struct-return pointer parameter.

* Rename `rets2` and wrap it in an option so we avoid the clone for non-multi-value
2019-11-08 09:51:57 -08:00
Dan Gohman
a40e3b734a Update paths in cranelift-version.sh 2019-11-08 09:46:29 -08:00
Dan Gohman
31e1b1c383 Update the path to wasmtime-py. 2019-11-08 09:45:10 -08:00
Dan Gohman
9253e55321 Update the workflows for the wasmtime-api rename. 2019-11-08 09:41:34 -08:00
Dan Gohman
771e51c5c5 Fix the exclude path for wasi-misc-tests. 2019-11-08 09:37:31 -08:00
Dan Gohman
025867eb4a Merge pull request #522 from CraneStation/readme
Update README with Github Actions badge
2019-11-08 09:18:04 -08:00
Jakub Konka
d232561526 Update README with Github Actions badge 2019-11-08 18:15:40 +01:00
Sean Stangl
a06f2c87c2 Pass Encoding to compute_size() for runtime Encoding inspection. #1156
In some cases, compute_size() is used to choose between various different Encodings
before one has been assigned to an instruction. For x86, the REX.W bit is stored
in the Encoding. To share recipes between REX/non-REX, that bit must be inspected
by compute_size().
2019-11-08 09:08:07 -08:00
Dan Gohman
c3436ddcdf rustfmt 2019-11-08 09:06:55 -08:00
Dan Gohman
1903d66ca6 Update a path in .gitmodules. 2019-11-08 08:38:50 -08:00
Benjamin Bouvier
143cb01489 Do not align the stack frame for leaf functions not using the stack. 2019-11-08 17:20:20 +01:00
Benjamin Bouvier
1074c7675e Clear the old_signatures between functions' compilations. 2019-11-08 17:20:20 +01:00
Dan Gohman
b1f4e130cc Publish wasi-common and wasmtime-cli. 2019-11-08 06:43:07 -08:00
Dan Gohman
d9ca508f80 Rename wasmtime-api to wasmtime. 2019-11-08 06:43:07 -08:00
Dan Gohman
22641de629 Initial reorg.
This is largely the same as #305, but updated for the current tree.
2019-11-08 06:35:40 -08:00
Dan Gohman
2c69546a24 Merge pull request #502 from CraneStation/wasi-common
Merge wasi-common into wasmtime
2019-11-08 05:59:24 -08:00
Yury Delendik
3a8c2bbb82 Adds WASI support to markdown rust example. (#509)
* Adds WASI support to markdown rust example.

* Rename has_wasi -> find_wasi_module_name
2019-11-08 07:57:53 -06:00
Jakub Konka
4982878a95 Fix bug in fd_readdir impl on BSD
This commit fixes a subtle bug in `fd_readdir` implementation on
BSD-style nixes. In particular, the bug only resurfaced when testing in
release mode, and I can only assume it was due to a unlucky combination
of compiler optimizations and at first sight correct casting of `d_name`
pointer from `const* i8` to `const* u8`. This is now fixed by first
converting `d_name` to `std::str` by using `std::ffi::CStr::to_str`, and
then using the resultant `std::str` to copy the properly validated `u8`
contents into the Wasm buffer.

Furthermore, this commit fixes incorrect handling of the `readdir` loop
break condition. Although undocumented in BSD man pages, the signalling
is the same as on Linux where a null ptr returned by `readdir` signals
the end of the dir stream when the errno code has not changed since
before calling `readdir` inside a loop. Upon a fault such as an invalid
file descriptor, the errno *will* change after executing `readdir`.
2019-11-08 10:49:15 +01:00
Jakub Konka
ac40eff871 Fix compilation of integration tests 2019-11-08 06:58:05 +01:00
Jakub Konka
73f85f5c4b Merge branch 'master' into wasi-common 2019-11-08 06:53:18 +01:00
Dan Gohman
43b761ef5f Update the top-level README.md and embedding documentation. (#508)
* Update the top-level README.md and embedding documentation.

wasmtime-api is now the primary external API crate, so recommend that
instead of wasmtime-jit.

Also, enable wasmtime-api's C API by default, so that it shows up on
docs.rs, and to make it easier to use.

And, add basic embedding documentation and link to it from the
README.md. Credit to @yurydelendik for the content.

* Use the new wasm-c-api URL.

* Don't pass --features wasm-c-api, as it is now on by default.
2019-11-07 16:47:54 -08:00
Peter Huene
4ccf0fdfa3 Fix build errors in x86 unwind info when building no_std. (#1214)
This commit fixes the build errors in the unwind info implementation for
the x86 ABI by changing `byteorder` to build `no_std`.

This copies two simple functions from the `WriteBytesExt` trait so that
we can easily write to a `Vec<u8>` with a particular endianness.

Fixes #1203.
2019-11-07 16:41:32 -08:00
Dan Gohman
001272fa7d rustfmt 2019-11-07 16:28:57 -08:00
Alex Crichton
59b15eab13 Simplify #[test] generation for *.wast files (#507)
This commit simplifies the build script slightly for generating tests by
doing a few dull refactorings:

* Leaves formatting to `rustfmt`
* Extract bulk of code execution into a top-level shared `run_wast`
  function so each test is a one-liner
* Use `anyhow` for errors both in the script and in tests
2019-11-07 17:01:17 -06:00
Alex Crichton
2411831964 Ensure wasi-common tests always have an unreadable stdin
Some wasi-common tests assume that stdin is never ready to be read, but
on CI stdin is closed so it's always ready to be read. Work around this
by guaranteeing that wasi-common tests always have an unreadable stdin
pipe by creating our own pipe.
2019-11-07 14:57:43 -08:00
Alex Crichton
f579dac34f Run beta/nightly test on ubuntu, not macos (#506)
This commit switches the beta/nightly tests to happen on Ubuntu instead
of macOS. Turns out GitHub Actions has scheduling limitations on macOS
that limit repositories to 5 concurrent jobs per repository, so let's
reduce the load a bit by running more builds on Linux than mac.
2019-11-07 13:51:09 -08:00
Dan Gohman
6aabdaa038 Update lightbeam's "bench" tests to use wat. (#504)
The rest of lightbeam switched from `wabt` to `wat` already, this just
updates some of the tests which aren't enabled by default.
2019-11-07 13:33:48 -08:00
Dan Gohman
d896cc34c2 Remove an obsolete workaround. (#505)
We needed a workaround when using wabt on old Linux distros due to using
old versions of `strtof`. With the switch to `wat`, we no longer need
these workarounds.
2019-11-07 13:33:17 -08:00
Peter Huene
a6b150c9d1 Merge pull request #462 from peterhuene/windows-unwind
Implement registering JIT unwind information on Windows.
2019-11-07 10:35:25 -08:00
Yury Delendik
6632a7da37 [wasmtime-api] reduce examples complexity: hostref for store/engine (#489)
* reduce amount of store.clone()

* use HostRef Engine as ref / use Engine::default()
2019-11-07 11:39:23 -06:00
Alex Crichton
55eb06ecc2 Reformat with new stable rustfmt
Fixes CI!
2019-11-07 17:20:17 +01:00
Jakub Konka
cd1e54487c Merge wasi-common into wasmtime
This commit merges [CraneStation/wasi-common] repo as a subdir of
this repo while preserving **all** of git history. There is an
initiative to pull `wasi-common` into [CraneStation/wasmtime], and
[CraneStation/wasmtime] becoming a monorepo. This came about for
several reasons with a common theme of convenience, namely,
having a monorepo:
1. cleans up the problem of dependencies (as we have seen first
   hand with dependabot enabled, it can cause some grief)
2. completely removes the problem of syncing the closely dependent
   repos (e.g., updating `wasi-common` with say a bugfix generally
   implies creating a "sync" commit for pulling in the changes into
   the "parent" repo, in this case, `wasmtime`)
3. mainly for the two reasons above, makes publishing to crates.io
   easier
4. hopefully streamlines the process of getting the community
   involved in contributing to `wasi-common` as now everything
   is one place

[CraneStation/wasi-common]: https://github.com/CraneStation/wasi-common
[CraneStation/wasmtime]: https://github.com/CraneStation/wasmtime
2019-11-07 15:45:58 +01:00
Jakub Konka
3793fa3b09 Merge wasi-misc-tests repo as a subdir (#174)
* Initial checkin.

* Update to rust-lang libc.

* Add a .gitignore file.

* Factor out functions for cleaning up files and directories.

* Fix a typo in a comment.

* Print a "Success!" message if all tests passed.

* Factor out code for creating directories.

* Add wrappers around WASI functions.

These wrappers handle converting from &str to pointer+length and handle
unsafe.

* More refactoring.

* Refactor a fd_close helper.

* Move utility functions into a separate file.

* cargo update

* Add a basic test for random_get.

* Test that directories aren't resizable.

* Test clearing __WASI_RIGHT_PATH_FILESTAT_SET_SIZE.

Ensure that clearing __WASI_RIGHT_PATH_FILESTAT_SET_SIZE succeeds before
testing file truncation.

* cargo update

* Modularise tests for easier use with wasi-common crate

* Add a Code of Conduct and CONTRIBUTING.md.

* Fix typo

* Add testcase for fd_allocate

* Add positive test for fd_renumber

* Assert bufused in readlink_no_buffer testcase

* Add positive readlink testcase

* Add testcase for fd_seek and fd_tell

* Add fd_p{read, write} test

* Add README

* Add cases with trailing slashes to interesting_paths

* Split nofollow_errors testcase into two

* nofollow_errors now operators on symlinks to existing resources
* dangling_symlink covers danling symlinks tests

* Factor out a `create_file` helper function.

* Switch from the error crate to `std::io::Error::last_os_error()`.

* Use `create_file` in the readlink test too.

* Add a test for fd_filestat_set_*

* Minor refactoring

Add missing cleanup_file calls to file_pread_pwrite and
file_seek_tell.

* Add testcase for unbuffered fd_write; fixes #11

* Add testcase for path_rename

* Use the wasi crate.

Switch from depending on libc to depending on the new wasi crate to provide
the low-level WASI interfaces.

See also https://github.com/rust-lang/libc/pull/1461.

* Add a test for path_filestat_*

* Add a test for fd_readdir

* Use expect instead of unwrap

* Add a check for ino.

* Fix the build

* Don't assume a specific order of dirents

* Better test

* Test cookie value

* Fix file types

* Fix the test

* Fix the test

* Fix the test

* Cleanup

* Minor formatting tidying in README.md.

* Fix miscellaneous clippy warnings.

* Rename the crate to wasi-misc-tests.

* Update to wasi 0.7.0.

This switches from using the libc wasi bindings to using the wasi
crate's bindings. This eliminates a git dependency on libc, updates
to the new-style bindings which use Result where possible, and treats
functions that operate on raw file descriptors as unsafe.

* Add various tests for trailing-slash behavior.

* Sync new testcases with latest upstream

* Fix path_filestat testcase

* Add smoke test for fd_advise

This test is a true smoke test as it only tests whether issuing
an advise call to the host's kernel doesn't yield an error. The
consequence of issuing such a syscall is not tested.

* Check if CLOCK_MONOTONIC is actually monotonic

* Refactor the inequality assertions for more debuggable errors.

* Bump libc from 0.2.62 to 0.2.65

Bumps [libc](https://github.com/rust-lang/libc) from 0.2.62 to 0.2.65.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.62...0.2.65)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Fix compilation error

* Enable Actions and add rust.yml (#35)

* Enable Actions and add rust.yml

This commit enables Github Actions and adds corresponding configuration in rust.yml file.

* Update rust.yml

* Fix formatting

* Add empty .rustfmt.toml config file

* Add badge to README

* Update README

* Clean up Github Actions and README

* Add test case for `poll_oneoff` syscall (#38)

* Add test case for `poll_oneoff` syscall

This commit adds a test case for `poll_oneoff` syscall. In particular,
it builds on the excellent test use case provided by @dunnock in their
repo [poll_oneoff_tests] (thanks!), and tests:
* simple timeout
* stdin read with timeout
* fd read and fd write polls

[poll_oneoff_tests]: https://github.com/dunnock/poll_oneoff_tests

* Apply suggestions and negative test for bad fd

Co-authored-by: Maxim Vorobjov <maxim.vorobjov@gmail.com>

* Add smoke test for STDOUT/ERR readwrite poll

* Add comment on stdin/out/err

* Add a test for `*at`-style functions returning `ENOTDIR` when `dirfd` is not a dir.

* Remove misc_testsuite submodule

* Add "publish=false" to Cargo.toml; remove LICENSE
2019-11-07 13:58:57 +01:00
Adam C. Foltzer
ab3cd945bc Use new WasiCtxBuilder types from wasi-common (#490)
* use new `WasiCtxBuilder` types from wasi-common

* Update wasi-common deps
2019-11-07 12:25:43 +01:00