Commit Graph

301 Commits

Author SHA1 Message Date
Lachlan Sneff
57e24c957c
Merge branch 'master' into feature/remove-call-protected 2019-04-12 12:44:59 -07:00
Mark McCaskey
d507253372 update crate version numbers to 0.3.0 2019-04-12 12:19:46 -07:00
Lachlan Sneff
e8d5f01276
Merge branch 'master' into feature/remove-call-protected 2019-04-12 10:38:04 -07:00
Lachlan Sneff
d8c6f76846 Redesign the interface between the runtime and the backends.
This removes the ProtectedCaller and FuncResolver traits, simplifying call implementations and improving dynamic call throughput.
2019-04-11 18:01:54 -07:00
Syrus
94fac3dd8b Updated version to 0.3.0 🎉 2019-04-11 17:19:39 -07:00
Lachlan Sneff
a100b2a72e feature cfg away singlepass and llvm backends in cli 2019-04-11 15:31:02 -07:00
Lachlan Sneff
688b6cae26
Merge branch 'master' into feature/nightly-release 2019-04-11 14:36:18 -07:00
Syrus
d67bfdb2c5 Renamed dynasm backend to singlepass 2019-04-11 12:44:03 -07:00
Lachlan Sneff
c898439817 Add well placed unwind(allowed) attribute 2019-04-11 12:07:54 -07:00
Syrus
71aaf2d3f8 Updated cargo 2019-04-11 11:40:23 -07:00
Syrus
e5fc3b49b8 Create releases with dynasm 2019-04-06 13:23:16 -07:00
Mackenzie Clark
7cea2c28a1 update lockfile for zbox fix 2019-04-05 11:15:44 -07:00
Brandon Fish
5fd0ee810b Update Cargo.lock for Cranelift 0.3.0 2019-04-04 10:23:28 -05:00
Mark McCaskey
03b529d3d1
Merge branch 'master' into add-validate 2019-04-03 21:35:23 -07:00
Mark McCaskey
bda5b19098 update wasm-parser dep; use it for validation 2019-04-03 17:21:57 -07:00
Mackenzie Clark
e9e7a33317 fix warnings and let it build on windows 2019-04-03 16:50:15 -07:00
Mark McCaskey
d164c7a93b update wasi Cargo.toml 2019-04-01 17:21:48 -07:00
Mark McCaskey
2dd7ec8b72 fix it up 2019-04-01 16:36:41 -07:00
Lachlan Sneff
ce35e5794f Change ValueType trait and add basic fs 2019-04-01 15:52:35 -07:00
Lachlan Sneff
c12c7d558c Merge branch 'feature/wasi-fs' into feature/wasi 2019-04-01 15:17:13 -07:00
Mark McCaskey
88212d356f implement random_get() 2019-03-29 13:06:06 -07:00
Mark McCaskey
48d34d9522 improve calling of platform-specific code and impl linux clock calls 2019-03-29 11:38:48 -07:00
Lachlan Sneff
48b5918895 Merge branch 'master' into feature/wasi-fs 2019-03-29 11:09:04 -07:00
Mark McCaskey
bc863fcf0c hook up wasi to wasmer 2019-03-28 12:19:23 -07:00
Mackenzie Clark
09642c92db revert changes to emscripten 2019-03-28 11:55:01 -07:00
Mark McCaskey
b7254ce1f5 add stubs and dispatch 2019-03-28 11:54:22 -07:00
Mackenzie Clark
5294eb6b0d merge and respond to feedback 2019-03-28 11:41:45 -07:00
Mark McCaskey
9c58bed344 add support for symbol maps 2019-03-26 16:41:40 -07:00
Mackenzie Clark
7c9e537443 refactor everything 2019-03-25 19:44:12 -07:00
Mark McCaskey
1ce29e788f add syscalls for sqlite3 2019-03-25 11:12:34 -07:00
Mackenzie Clark
0666a5375b add missing hashbrown dependency for dynasm 2019-03-24 17:30:10 -07:00
Mackenzie Clark
0091264b65 get it building with zbox fork 2019-03-24 16:38:45 -07:00
Mackenzie Clark
e5951ce56d Merge branch 'master'
Conflicts:
	Cargo.lock
	Cargo.toml
	lib/emscripten/Cargo.toml
	lib/emscripten/src/syscalls/unix.rs
	lib/runtime-core/Cargo.toml
2019-03-23 00:27:55 -07:00
Mackenzie Clark
9ed593d7b6 wip enchanced vfs 2019-03-21 08:55:57 -07:00
Brandon Fish
e5d67c9705 Add dynasm feature to emscripten tests 2019-03-13 20:16:07 -05:00
Mackenzie Clark
c1e0d325e3 switch to zbox 2019-03-13 14:23:55 -07:00
Brandon Fish
68181acc74 Add dynasm to spectests 2019-03-12 21:14:50 -05:00
Brandon Fish
557be77338 Merge branch 'master' into feature/dynasm-backend 2019-03-12 20:58:22 -05:00
Mackenzie Clark
f014a05304 create runtime abi crate and vfs implementation 2019-03-12 10:40:52 -07:00
Syrus
e591cd0607 Use wasmerio fork of inkwell 2019-03-11 10:03:40 -07:00
Lachlan Sneff
17eada53f3
feat(runtime) Get ready for tiering (#257)
* Add local_function field to context

* Add local call indirection to llvm

* local call indirection

* Fix  vm test

* Fix cranelift local call indirection

* Fix unwinding on nightly
2019-03-08 15:15:16 -08:00
Syrus
3a4325c5a3 Only use llvm in non windows envs 2019-03-07 18:26:29 -08:00
Brandon Fish
1957ddef53 Run emscripten tests with both compilers 2019-03-06 21:36:46 -06:00
Lachlan Sneff
9f589de031 Reset Cargo.lock 2019-03-06 13:53:06 -08:00
Lachlan Sneff
e3e91c628b
Merge branch 'master' into feature/llvm-backend 2019-03-06 13:47:15 -08:00
Ivan Enderlin
365d00979b chore(runtime-c-api) Update the Cargo.lock file. 2019-03-06 11:03:38 +01:00
Lachlan Sneff
039ebdcf75 Fix merge errors and update llvm to use the new runtime error type. 2019-03-04 13:10:28 -08:00
Lachlan Sneff
4e198bca8b merge upstream/master into wasmer-private/feature/llvm-backend 2019-03-04 13:03:32 -08:00
Lachlan Sneff
caf2205936 Add a signal handler for macos and linux.
Implementation Notes:
- To avoid setjmp, longjmp, and the mess that those create, we instead set the interrupting
    context of the signal handler to return into the `throw_trap` routine. To my surprise,
    this actually works. The stack ends up getting unwound normally and the memory-oob error
    is caught by the trampoline.
2019-03-02 17:00:05 -08:00
Brandon Fish
b80252e165 Setup the spectests lib to use llvm-backend 2019-02-28 23:02:03 -06:00
Lachlan Sneff
6a20676fa9 Actually unmap the code after it's done being used 2019-02-28 17:20:18 -08:00
Lachlan Sneff
359ac5abec Connect part of the llvm backend to the runtime 2019-02-28 13:18:00 -08:00
Lachlan Sneff
d4ae5cdd40 Get function addresses from llvm-compiled code 2019-02-28 12:31:39 -08:00
Lachlan Sneff
5d77769381 Hopefully finish the memory manager implementation for llvm RuntimeDyLd 2019-02-27 17:21:20 -08:00
Syrus
60f8f15db3 Updated version to 0.2.1 2019-02-27 17:20:49 -08:00
Lachlan Sneff
4f833876e0 Start work on object loader using llvm's RuntimeDyld api. 2019-02-25 18:08:06 -08:00
Syrus
2d49d58665 Use blake2b (simd) version instead of blake2 2019-02-25 17:43:25 -08:00
Syrus
e7d08712b5 Use blake2 hashing algorithm 2019-02-25 17:37:33 -08:00
Syrus
53c8603464 Updated crates version to 0.2.0 2019-02-25 13:33:33 -08:00
Syrus Akbary
c5c967da00 Added parallel compilation (#209) 2019-02-25 12:03:48 -08:00
losfair
e9c0325784 Update dependencies 2019-02-24 00:51:47 +08:00
Mackenzie Clark
82eef13f41
Create a grow error and refactor grow impl to return result (#191) 2019-02-22 22:18:59 -08:00
Lachlan Sneff
2a913f5663 Implement table, partial call_indirect 2019-02-22 17:34:55 -08:00
Lachlan Sneff
df03d00e74 Merge upstream/master into feature/llvm-feature 2019-02-22 14:14:46 -08:00
Lachlan Sneff
4042cff914 Change hashing algorithm from sha1 to meowhash 2019-02-22 13:02:28 -08:00
Mackenzie Clark
70ba4ec466
Merge branch 'master' into feature/benchmarks 2019-02-22 12:14:11 -08:00
Lachlan Sneff
17901f992a Add benchmark runner and nginx compile vs. load bench 2019-02-22 12:07:07 -08:00
Mackenzie Clark
a6d72bdec9
more emscripten stubs and urandom hack (#199) 2019-02-22 10:42:38 -08:00
Lachlan Sneff
696fd8fce3 Update api again and change SerializedCache to Artifact 2019-02-21 17:07:04 -08:00
Lachlan Sneff
2234f357b7
Merge branch 'master' into feature/cache-rework 2019-02-21 11:54:57 -08:00
Lachlan Sneff
7fa818ea06 Finalize new cache api 2019-02-21 11:47:28 -08:00
Brandon Fish
2ed6e82354 Merge branch 'master' into feature/c-api 2019-02-17 17:20:47 -06:00
David McNeil
a9b1c6c85e Fix emscripten environment (#172)
Dynamically determine abortOnCannotGrowMemory and add
_emscripten_get_heap_size and _emscripten_resize_heap
2019-02-16 15:01:01 -07:00
Brandon Fish
768a2fae18 Merge branch 'master' into feature/c-api 2019-02-15 19:12:30 -06:00
Lachlan Sneff
108973dabe Start producing object files with llvm 2019-02-15 16:02:20 -08:00
Lachlan Sneff
73b4f7d337 Implement memory and global operations 2019-02-14 18:08:20 -08:00
Lachlan Sneff
2d87f64f82 Merge master into feature/llvm-backend 2019-02-14 15:47:28 -08:00
Lachlan Sneff
8827830aba implement load* and store* instructions 2019-02-14 15:13:58 -08:00
Mackenzie Clark
6a1fdb7f91
add windows exception handling in C (#175) 2019-02-14 09:58:33 -08:00
losfair
8d8db4aa09 Starting integration. 2019-02-14 00:53:36 +08:00
Lachlan Sneff
5ee19e55a5 Add some branching instructions 2019-02-11 19:34:04 -08:00
losfair
af19f5c097 Update dependencies. 2019-02-12 00:51:26 +08:00
Lachlan Sneff
327e3a4a1a Implement many wasm instructions 2019-02-09 15:53:40 -08:00
Brandon Fish
c3707efa08 Update for merge from master 2019-02-09 13:09:54 -06:00
losfair
9649219578 Initial work on WebAssembly parser for Dynasm backend. 2019-02-08 23:56:14 +08:00
Lachlan Sneff
8d2c1956d7
Fix runtime error catching (#157) 2019-02-07 14:44:28 -08:00
Mackenzie Clark
ce03e4464c fill unsetenv for windows (#150)
* fill unsetenv

* update usage of read_string_from_wasm

* convert helper to return String

* correct usage of helper fn, cargo fmt, and check in lock file change
2019-02-07 10:51:19 -08:00
Mackenzie Clark
4ab8bd69be
install errno on all platforms (#152) 2019-02-07 10:02:41 -08:00
Lachlan Sneff
8fe9b7eac2
Add caching. (#134)
* Allow a module to have a different signature registry than the process-specific

* Add core ability to build compiled code caches

* Remove timing printouts

* Serialize/Deserialize memories to reduce copies

* Work more on api

* Relocate local functions relatively before external functions

* Fix incorrect definition in test

* merge errors caused by merge

* Fix emscripten compile

* Fix review comments
2019-02-06 16:26:45 -08:00
Mackenzie Clark
7bd609fd58
memory fixes for windows (#138) 2019-02-05 16:07:55 -08:00
Syrus
9370588b86 Merge branch 'master' into fix/emscripten-translate 2019-01-31 14:00:00 -08:00
Brandon Fish
30caeb0810 Merge branch 'master' into fix/emscripten-translate 2019-01-29 23:07:32 -06:00
Brandon Fish
9f206399de Merge branch 'master' into feature/move-spectests-to-own-lib 2019-01-29 19:04:10 -06:00
Brandon Fish
3d62fc88ca Move spectests to their own library 2019-01-29 16:58:16 -06:00
Lachlan Sneff
5aa7d71ede
Merge branch 'master' into feature/improve-importing 2019-01-29 10:28:18 -08:00
Lachlan Sneff
19242a413f Get table imports working 2019-01-29 10:16:39 -08:00
Brandon Fish
2245c920ed Merge branch 'master' into fix/emscripten-translate 2019-01-27 13:21:44 -06:00
Lachlan Sneff
e4686e67c4 Add importable memories and dynamic memories 2019-01-25 15:28:54 -08:00
Syrus
29a3af11fc Updated lib crate versions 2019-01-25 10:38:31 -08:00
Syrus
4a8eacb370 Simplified storage of emscripten globals data 2019-01-24 16:45:06 -08:00
Syrus
788ba75982 Updated main Cargo witht he proper dependencies 2019-01-24 14:04:25 -08:00
Syrus
87d02d8399 Updated runtime and runtime-core versions 2019-01-24 13:45:25 -08:00
Lachlan Sneff
a20627964c
Improve runtime docs and add readme (#118)
* Add crate-level documentation

* add runtime readme

* Fix lint
2019-01-24 10:51:20 -08:00
Lachlan Sneff
ab65477d1f
Refine the runtime api and document the exposed items (#115)
* private module, remove unused method, docs on compile_with

* refine runtime api and document exposed items

* Fix integration test build

* Fix lint
2019-01-23 12:34:15 -08:00
Lachlan Sneff
38b0fbf3c5
Generate trampolines to call exported functions instead of using libffi (#108)
* remove codegen.rs

* Add export trampolines and remove libffi

* Remove unused extern crates
2019-01-22 15:00:27 -08:00
Brandon Fish
74875ed554 Library restructure (#104)
* Move wasmer-runtime to wasmer-runtime-core

* Add the runtime library

* Fix issue with macros using wasmer_runtime, fmt

* Make default compiler dependency optional

* Add instantiate and validate functions
2019-01-22 11:02:06 -08:00
Lachlan Sneff
69fd93937c merge vm_refactor_trap_handling into vm_refactor 2019-01-21 13:53:33 -08:00
Lachlan Sneff
b74a08f097 Add (hopefully-working) support for windows 2019-01-21 11:51:41 -08:00
Lachlan Sneff
c18328aa4c support the start function 2019-01-18 14:53:46 -08:00
Brandon Fish
321abe6644 Merge branch 'feature/vm_refactor' into fix/vm_refactor_esmcripten_integration 2019-01-17 23:20:56 -06:00
Syrus
620f40c144 Make build and tests pass again by skipping emscripten 2019-01-17 17:44:33 -08:00
Steve Akinyemi
456a76a5e5 Fix emtest compilation issues 2019-01-18 01:25:05 +01:00
Steve Akinyemi
76f6d3c33c Fix emscripten imports 2019-01-17 23:19:14 +01:00
Syrus
de459fa5bd Isolated emscripten in new lib 2019-01-10 21:38:10 -08:00
Brandon Fish
c3a3461367 Use a cargo workspace 2019-01-09 20:06:33 -06:00
Brandon Fish
3e641d9f89 Updates to get wasmer crate compiling 2019-01-09 19:45:48 -06:00
Brandon Fish
14c9512cf4 Remove old src/runtime and src/compilers directories 2019-01-09 00:49:11 -06:00
Brandon Fish
696bc9a0a9 Merge branch 'master' into feature/vm_refactor 2018-12-28 15:15:24 -06:00
Brandon Fish
8d8f20a11c Merge branch 'master' into feature/add-emscripten-core-tests 2018-12-27 10:30:41 -06:00
Brandon Fish
8921385fbb Update emtests to glob for c/cpp files, use ignores.txt to exclude tests, disable cc out by default 2018-12-27 01:43:38 -06:00
Lachlan Sneff
3861fe98c6 Add typesafe wasm export calls 2018-12-26 20:42:23 -05:00
Mackenzie Clark
4813047d37 clock_gettime with time crate and test
more lint
2018-12-26 16:58:23 -08:00
Lachlan Sneff
e2a9bd4761
Merge branch 'master' into feature/vm_refactor 2018-12-26 15:51:14 -05:00
Lachlan Sneff
c06c65e7c6 Add preliminary support for imports 2018-12-24 23:05:04 -05:00
Brandon Fish
241f3d4091 Update to latest wasmparser version 2018-12-20 00:35:11 -06:00
Syrus
75046e0e2c Updated version to 0.1.4 2018-12-19 10:14:53 -08:00
Lachlan Sneff
5b920b7953 More backing work 2018-12-18 20:28:15 -05:00
Lachlan Sneff
93f8cdfc81
Update cranelift to 0.26.0. (#64)
* Initial additional modules

* Update to cranelift 0.26.0

* Fixed formatting
2018-12-17 21:30:27 -05:00
Mackenzie Clark
755f3ae690 upgrade to wabt-rs 0.7.2
includes a fix for windows builds, this brings wamer one step closer to windows support
2018-12-16 11:27:55 -08:00
Syrus
fd5554c3bd Refactored memory usage to use impl-abstract mmap 2018-12-14 17:32:35 -08:00
Syrus
bbb2f080cc Updated version to 0.1.3 2018-12-06 20:39:59 -08:00
Lachlan Sneff
bb34f4718e Add initial progress bar 2018-12-05 20:39:06 -05:00
Syrus Akbary
b781d33318 Updated version of wasmer to 0.1.2 2018-12-05 16:18:44 -08:00
Syrus Akbary
92a97d1dd4 Added emscripten _sysconf 2018-12-05 15:14:58 -08:00
Syrus Akbary
65b36eb6ba Trying to use latest version of nix 2018-11-28 13:57:59 -08:00
Lachlan Sneff
30d4688fe3 Runs up to socket/ioctl/sigaction functions 2018-11-26 22:48:19 -05:00
Lachlan Sneff
4015fb6193 Hack together enough emscripten stack stuff to make it happy 2018-11-25 23:56:21 -05:00
Syrus Akbary
f3833dc237 Merge branch 'master' into parallel-compilation
# Conflicts:
#	src/webassembly/instance.rs
2018-11-20 16:30:25 -08:00
Syrus Akbary
c141f8b64c Use local cranelift 2018-11-20 16:19:00 -08:00
Syrus Akbary
a9e46a02d3 Merge branch 'master' into cranelift-upgrade
# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	src/webassembly/mod.rs
#	src/webassembly/module.rs
2018-11-15 19:40:45 -08:00
Syrus Akbary
2dcd25bebd Make wasmer work with stable Rust 2018-11-15 13:30:32 -08:00
Syrus Akbary
adf6d298b6 Trying to upgrade Cranelift to 0.23 2018-11-14 23:10:35 -08:00
Syrus Akbary
52614de22f Added signal handler to handle WebAssembly traps properly
Please read more about this here: https://github.com/CraneStation/wasmtime/issues/15
Code inspired by: 625a2b6c08
2018-11-06 11:15:40 +01:00
Syrus Akbary
1bc5664e5d Updated spin package 2018-11-05 18:58:57 +01:00
Syrus Akbary
380e5417d9 Removed unnecessary dependency libffi 2018-10-19 11:46:07 +02:00
Syrus Akbary
e97b47e147 Added ImportObject structure. Added integration tests 2018-10-17 16:08:51 +02:00
Syrus Akbary
1879a14938 All function calls are now working 2018-10-16 03:24:36 +02:00
Syrus Akbary
78cf7800e5 Added function compilation 2018-10-15 02:48:59 +02:00
Syrus Akbary
48fbc850ea Improved runnable options 2018-10-14 23:47:35 +02:00
Syrus Akbary
ac9edf39e6 Improved instance 2018-10-14 13:59:11 +02:00
Syrus Akbary
9bca6940b3 First working version of the interpreter 2018-10-11 21:29:36 +02:00