Commit Graph

5819 Commits

Author SHA1 Message Date
Marcin Mielniczuk
e731965fbb Implement fd_filestat_set_size using libstd 2019-08-08 18:41:41 +02:00
Marcin Mielniczuk
92c2b563fc Reuse errno_from_ioerror to simplify error handling 2019-08-08 18:22:58 +02:00
Jakub Konka
e18175c556 path_get refactor and implementation of missing path_ hostcalls on Windows (#41)
* Move path_get outside of sys module

* Add implementation of readlinkat

* Clean up path_open; use OpenOptions as much as possible

* Enable close_preopen test

* Implement path_create_directory; fix path_open

* Refactor path concatenation onto a descriptor

* Implement path_remove_directory

* Implement path_unlink_file

* Rewrite path_open using specific access mask

* Fix error mapping when unlinking file

* Fix readlinkat to pass nofollow_errors testcase

* Clean up winerror to WASI conversion

* Spoof creating dangling symlinks on windows (hacky!)

* Add positive testcase for readlink

* Implement path_readlink (for nonzero buffers for now)

* Clean up

* Add Symlink struct immitating *nix symlink

* Fix path_readlink

* Augment interesting_paths testcase with trailing slashes example

* Encapsulate path_get return value as PathGet struct

* Remove dangling symlink emulation

* Extract dangling symlinks into its own testcase

This way, we can re-enable nofollow_errors testcase
on Windows also.

* Return __WASI_ENOTCAPABLE if user lacks perms to symlink
2019-08-08 17:06:01 +02:00
Till Schneidereit
1491f31531 Don't publish the Windows installer's wixpdb file (#263)
This file is only useful for debugging the installer itself, which our users really shouldn't need to do.
2019-08-08 13:29:34 +02:00
bjorn3
e6e274a3aa Add bugpoint command
Add the command `cargo run --release bugpoint crash.clif 2>/dev/null` to reduce test cases.
2019-08-08 11:40:41 +02:00
Jakub Konka
085d700cdc Bump wasi-common rev 2019-08-08 11:06:27 +02:00
Adam C. Foltzer
73670aab43 Return a WasmResult from ModuleEnvironment methods (#886)
* [wasm] return a WasmResult from `declare_table_elements`

This method in particular needs to accommodate failure because any table index other than zero is
currently invalid.

* [wasm] additional failure handling improvements

- Adds `WasmResult<()>` as the return type for most of the `ModuleEnvironment` methods that
previously returned nothing.

- Replaces some panics with `WasmError::Unsupported` now that the methods can return a result.

- Adds a `wasm_unsupported!()` macro for early returns with a formatted unsupported message.
2019-08-07 13:23:32 -07:00
Yury Delendik
9263b9df40 Add public Compiler::get_published_trampoline (#243) 2019-08-07 11:48:40 -07:00
Till Schneidereit
ecc9816870 Win installer (#245)
Add a basic Windows msi installer for the `wasmtime` and `wasm2obj` executables. They're also added to the PATH so they can be used in default shells.
2019-08-07 16:03:36 +02:00
Till Schneidereit
2c4e14d361 Don't run CI for 'dev' tag, to avoid endless CI loops 2019-08-07 15:59:05 +02:00
Till Schneidereit
53fda72ce7 Also do dev releases when merging into dev tag branch (#260) 2019-08-07 14:48:38 +02:00
Till Schneidereit
f2a65f1f7a Fix updating github release (#259) 2019-08-07 13:52:53 +02:00
Jakub Konka
8ea7a983d8 Make fd_write unbuffered; fixes CraneStation/wasmtime#255 2019-08-07 04:44:48 -07:00
Artur Jamro
b10f8cf322 Partial hashing of module for faster caching (#221)
* Simple module compilation cache

* Fix base64 encoding bug

* Use warn! everywhere in cache system

* Remove unused import

* Temporary workaround for long path on Windows

* Remove unused import for non-windows builds

* Add command line argument to enable cache system + apply minor review feedback

* Initial implementation of partial module hashing

* Proper module hashing for the cache

* Use newer version of cranelift
2019-08-06 17:19:26 -07:00
Artur Jamro
17d676ecbc Allow colons in Windows host paths (#235) 2019-08-06 16:44:26 -07:00
Till Schneidereit
ef1890ae92 Fix updating github release (#257) 2019-08-06 23:54:17 +02:00
Till Schneidereit
45c280511d Delete old GitHub 'dev' release when creating a new one (#256) 2019-08-06 22:32:31 +02:00
Yury Delendik
5fc2d827b7 Update cranelift requirement from 0.37.0 to 0.38.0 (#254)
closes #248, closes #249, closes #250, closes #251, closes #252
2019-08-06 14:49:28 -05:00
Yury Delendik
00b8d019c9 Bump version to 0.38.0 (#894) 2019-08-06 14:41:13 -05:00
Alex Crichton
8ce68732f6 Compile Windows releases with a static CRT (#247)
This commit compiles all Rust code for the Windows release with
`-Ctarget-feature=+crt-static`. This is targeted at increasing the
binary compatibility of the binaries built to not rely on DLLs that
aren't always installed on Windows. Notably this statically links the C
runtime (notably used by the C++ code) and means that the final binary
relies on fewer dlls.

This in theory means that the binaries are only limited by the number of
APIs they use from Windows. Note that this also matches how we build
releases of Rust for MSVC.
2019-08-06 19:27:02 +02:00
Alex Crichton
3e2344c90b Set MACOSX_DEPLOYMENT_TARGET for macOS releases (#246)
* Set MACOSX_DEPLOYMENT_TARGET for macOS releases

This is an effort to ideally produce "more portable" binaries for the
releases we publish to GitHub. Currently the way macOS works is that
you're generally only guaranteed to work on the same platform you built
on and later (although it may sometimes work on older platforms). By
configuring this environment variable it should be possible to lower the
binary compatibility requirement, allowing running binaries on older OS
releases than the build machine is running.

I've chosen 10.9 here since it seems to be the lowest that "just works",
but there's no particular reason other than that for choosing this. Rust
itself chooses 10.8 (I think) for the compiler and 10.7 for the standard
library. This decision is largely driven by the C++ code from wabt-sys
which has more requirements about binary compatibility than Rust code
does.

Note that I don't actually have older macOS machines to test on as well,
but I can at least confirm that this does affect the build process!

* Comment the env var added
2019-08-06 19:25:04 +02:00
Alex Crichton
0616062f4f Refactor Azure Pipelines config and tweak releases (#244)
* Refactor Azure Pipelines config and tweak releases

* Extract out doc/rustfmt jobs into their own separate builders. Helps
  avoiding having to skip tons of steps and can get failing results more
  quickly.

* Extract out Rust installation logic to a dedicated template.

* Separate out the build/test job matrices, where one matrix runs tests
  and another runs a full build

* Refactor release directory structure to follow a convention where
  `foo.tar.gz` extracts to a folder called `foo` and follow unix-like
  conventions and copy over the license/readme files into the release
  tarballs.

* Swap order of build/test
2019-08-06 18:27:31 +02:00
Till Schneidereit
95bcc63ff8 Rename 'master' release to 'dev' (#242) 2019-08-06 16:02:13 +02:00
Till Schneidereit
41f88745c4 Update log and libc crates (#240)
* Update log crate

* Update libc crate
2019-08-06 09:01:52 -05:00
Yury Delendik
29b32b3062 Serialize ValueLabel and StackSlots (#888) 2019-08-05 08:31:00 -05:00
David Lattimore
383ce584ae Fix an assertion that wasn't doing what it said 2019-08-05 15:22:10 +02:00
Jef
e6a8f19315 Fix miscompilations and other nasty errors 2019-08-05 14:01:48 +02:00
Jakub Konka
5159f93d37 Add Azure Pipelines badge to README (#241) 2019-08-03 22:44:40 +02:00
Till Schneidereit
265bc318ca Publish release bundles to CraneStation/wasmtime (#239) 2019-08-03 17:15:33 +02:00
dependabot-preview[bot]
39654ea175 Update hashbrown requirement from 0.1.8 to 0.5.0 (#206)
Updates the requirements on [hashbrown](https://github.com/rust-lang/hashbrown) to permit the latest version.
- [Release notes](https://github.com/rust-lang/hashbrown/releases)
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/hashbrown/compare/v0.1.8...v0.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-03 16:50:05 +02:00
Till Schneidereit
a988443422 Set up CI and releases with Azure Pipelines (#237)
This Azure Pipelines setup compiles and tests Wasmtime for Linux, macOS, and Windows.

If the CI run was triggered by a new tag being created, a new release for that tag is created with a changelog relative to the last tag release and archives of the builds for all platforms.

If the CI run was triggered by new commits landing on `master`, the release `latest-master` is updated with a new changelog relative to the last tag release and archives of the new builds for all platforms.

Note: This PR also contains changes to disable a bunch of tests on Windows, which are failing due to issues with signal handling.
2019-08-03 13:41:10 +02:00
Nicolas B. Pierron
bc1b56f739 Rename data to inst_data in binemit generated code. 2019-08-02 19:34:18 +02:00
Nicolas B. Pierron
c903735ea8 Shrink: Factor accesses of instruction data 2019-08-02 19:34:18 +02:00
Nicolas B. Pierron
3585ee34b0 Uses divert.apply for all instruction within binemit. 2019-08-02 19:34:18 +02:00
Nicolas B. Pierron
ad71715304 Factor out func.dfg[inst] accesses in binemit. 2019-08-02 19:34:18 +02:00
Benjamin Bouvier
627ba24b59 Simplify jump table instructions and add missing conversion;
This makes non-legalized jump table instructions operate on operands with
pointer-sized types. This means we need to extend smaller types into the
pointer-sized operand, when the two don't match.
2019-08-02 18:39:39 +02:00
Jakub Konka
6797db66a2 Add cargo doc and apply cargo fmt to stable only 2019-08-02 14:15:31 +02:00
Jakub Konka
3e68834938 Remove Travis conf and redundant scripts 2019-08-02 12:17:42 +02:00
Jakub Konka
7bd8d5be98 Update CI status in README 2019-08-02 11:54:16 +02:00
Till Schneidereit
fd787c2c99 Merge pull request #49 from kubkon/azure
Add azure pipelines definition
2019-08-02 11:12:15 +02:00
Jakub Konka
a2b99bb74c Add azure pipelines definition 2019-08-02 10:47:33 +02:00
Jakub Konka
3125dc4a79 Update readlink_no_buffer testcase 2019-08-02 10:43:15 +02:00
Yury Delendik
0bc9d1fe6f Update cranelift to 0.37.0 (#236)
Closed #228, #227, #226, #225, #224
2019-08-01 20:46:34 -05:00
Dan Gohman
1bdec4ca36 Remove cranelift-native dependency from wasmtime-wast. (#216) 2019-08-01 12:21:43 -05:00
Nicolas B. Pierron
f0d7438728 Properly legalize with empty jump tables. 2019-08-01 13:47:28 +02:00
iximeow
6e57e3f8f3 preopt: use replaced arg after having replaced BinaryImm
when replacing BinaryImm, we use the prior arg, but later use the arg
that was replaced when writing an alias if we can determine the new op
is actually equivalent to a simple copy
2019-08-01 11:00:37 +02:00
dependabot-preview[bot]
320ad7d4b3 Update bindgen requirement from 0.50.0 to 0.51.0 (#222)
Updates the requirements on [bindgen](https://github.com/rust-lang/rust-bindgen) to permit the latest version.
- [Release notes](https://github.com/rust-lang/rust-bindgen/releases)
- [Changelog](https://github.com/rust-lang/rust-bindgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/rust-bindgen/compare/v0.50.0...v0.51.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-31 11:40:10 -05:00
Benjamin Bouvier
057d4f6e3c Simple preopt: Fold (imm OP x) into (OP_IMM x imm) whenever possible; 2019-07-31 17:42:05 +02:00
Benjamin Bouvier
23ac723d4c Simple preopt: fold instructions using simple algebraic identities; 2019-07-31 17:42:05 +02:00
Benjamin Bouvier
2fef2eef67 Simple preopt: try to fold right-shift of left-shift into an extended move; 2019-07-31 17:42:05 +02:00