1
0
mirror of https://github.com/fluencelabs/wasm-bindgen synced 2025-03-17 02:30:50 +00:00

2916 Commits

Author SHA1 Message Date
Alex Crichton
452ce2916e Add support as a vanilla polyfill of WebIDL bindings
This commit adds support to `wasm-bindgen` to be a drop-in polyfill for
the WebIDL bindings proposal. Lots of internal refactoring has happened
previously to `wasm-bindgen` to make this possible, so this actually
ends up being a very small PR!

Most of `wasm-bindgen` is geared towards Rust-specific types and
Rust-specific support, but with the advent of WebIDL bindings this is a
standard way for a WebAssembly module to communicate its intended
interface in terms of higher level types. This PR allows `wasm-bindgen`
to be a polyfill for any WebAssembly module that has a valid WebIDL
bindings section, regardless of its producer. A standard WebIDL bindings
section is recognized in any input wasm module and that is slurped up
into wasm-bindgen's own internal data structures to get processed in the
same way that all Rust imports/exports are already processed.

The workflow for `wasm-bindgen` looks the same way that it does in Rust
today. You'd execute `wasm-bindgen path/to/foo.wasm --out-dir .` which
would output a new wasm file and a JS shim with the desired interface,
and the new wasm file would be suitable for loading in MVP
implementations of WebAssembly.

Note that this isn't super thoroughly tested, so there's likely still
some lingering assumptions that `wasm-bindgen` makes (such as
`__wbindgen_malloc` and others) which will need to be patched in the
future, but the intention of this commit is to start us down a road of
becoming a drop-in polyfill for WebIDL bindings, regardless of the
source. Also note that there's not actually any producer (AFAIK) of a
WebIDL bindings custom section, so it'd be that much harder to write
tests to do so!
2019-07-31 12:12:38 -07:00
Alex Crichton
38b8232f55
Merge pull request from alexcrichton/llvm-9-threads
Fully update threading support for LLVM 9
2019-07-30 14:01:20 -05:00
Alex Crichton
8cb792474c Fully update threading support for LLVM 9
Support has landed in rust-lang/rust for full support for LLVM 9's
interpretation of WebAssembly threads. This commit updates our thread
transformation pass to take all this into account, namely:

* The threadign pass now runs by default and is keyed on whether memory
  is shared, not off an env var.
* TLS is initialized in addition to memory on each thread.
* Stack pointer finding is tweaked to account for the TLS base also
  being a mutable global.
* The build of the parallel raytrace example was updated to use today's
  nightly.
2019-07-30 09:17:23 -07:00
Alex Crichton
849c3453d9
Merge pull request from alexcrichton/in-memory
Add support to emit output to memory
2019-07-30 10:47:02 -05:00
Alex Crichton
8b0143669e
Merge pull request from alexcrichton/update-walrus
Update to walrus 0.10.0
2019-07-30 10:46:44 -05:00
Alex Crichton
10e400bee4 Add support to emit output to memory
Don't necessarily require a filesystem to execute `wasm-bindgen`,
allowing the `wasm-bindgen-cli-support` crate to be compiled to
WebAssembly, for example, and possibly run `wasm-bindgen` in your
browser! For now this is largely just an internal refactoring and won't
result in many use cases, but it felt like a good refactoring to have
regardless.
2019-07-30 08:08:17 -07:00
Alex Crichton
7158144932 Update to walrus 0.10.0
Ensure that we enable the new `parallel` feature in the CLI so our tools all use
parallelized parsing, but none of our specific crates need it for usage.
2019-07-30 07:56:18 -07:00
Alex Crichton
8940ba0ab2
Merge pull request from alexcrichton/update-walrs
Update to walrus 0.9.0
2019-07-30 09:12:51 -05:00
Alex Crichton
78db35daac
Merge pull request from alexcrichton/no-modules-lenient
Improve leniency of `--no-modules` output
2019-07-30 09:12:39 -05:00
Alex Crichton
423bebbd14 Improve leniency of --no-modules output
Instead of assuming names like `URL` and `Request` are defined, instead
check to see if they exist first and otherwise skip the checks that
reference them.
2019-07-29 14:49:15 -07:00
Alex Crichton
0daa290129 Update to walrus 0.9.0
This commit updates the `walrus` dependency with recent upstream API
changes in `walrus` itself, namely updates to passive segements and how
memory data segments are handled
2019-07-29 13:25:32 -07:00
Alex Crichton
68a1519eaa
Merge pull request from Pauan/cache
Initial interning implementation
2019-07-22 14:02:40 -05:00
Alex Crichton
029b8ff249
Merge pull request from alexcrichton/llvm-9-threads
Update 'threads-xform' for LLVM 9
2019-07-22 09:12:57 -05:00
Pauan
59af3186af Fixing CI build error 2019-07-19 23:32:58 +02:00
Pauan
7b6ef7087e Adding in note to the intern docs 2019-07-19 23:29:34 +02:00
Pauan
aef62bd56c Adding in enable-interning to CI test suite 2019-07-19 23:29:27 +02:00
Pauan
f8da1e672f Fixing unsafe_get_str function 2019-07-19 22:15:07 +02:00
Pauan
10ab4cbc18 Fixing TypeScript types for cached strings 2019-07-19 22:11:45 +02:00
Pauan
554ef90035 Fixing issue with wasm-interpreter 2019-07-19 22:03:33 +02:00
Alex Crichton
b9b8c209d0 Update 'threads-xform' for LLVM 9
In LLVM 9 LLD has been updated to emit shared memory and passive
segments by default for threaded code, and `__wasm_init_memory` is a
function exported used to initialize memory. Update our
transform/runtime here to hook up all those wires correctly.

Closes 
2019-07-19 11:10:38 -07:00
Alex Crichton
efacd8b74d
Merge pull request from ibaryshnikov/threadsafe-futures
Threadsafe futures
2019-07-19 09:38:04 -05:00
Alex Crichton
55b486ad78
Merge pull request from Pauan/web-sys-partial-eq
Adding in PartialEq and Eq to web-sys types
2019-07-19 08:49:52 -05:00
Pauan
c82253ca68 Fixing doc test error 2019-07-18 23:40:16 +02:00
Pauan
ed778f5eb2 Adding in PartialEq and Eq to web-sys types 2019-07-18 23:12:49 +02:00
Alex Crichton
b13f757e90 Shared more betwee legacy with/without atomics 2019-07-18 14:11:59 -07:00
Alex Crichton
be294c8248 Remove a debugging statement 2019-07-18 14:04:45 -07:00
Alex Crichton
c8451d6f3e Rename some files
* Use "legacy" instead of "stable" since `futures 0.1` is quicly
  becoming "legacy"
* Rename "atomics" to "legacy_atomics" to leave room for the
  libstd-based futures atomics version.
* Rename "polyfill" to "wait_async_polyfill" to specify what it's
  polyfilling.
2019-07-18 14:00:45 -07:00
Alex Crichton
d590a9e053 Deduplicate JsFuture definitions
Turns out it's the exact same for both before and after atomics, so
let's use the same definition!
2019-07-18 13:59:14 -07:00
Alex Crichton
cde9684e4b Clean up atomics/futures + polyfill
* Remove now-unneeded `State` enum
* Remove timeout argument from polyfill since we don't need it
* Call `Atomics.waitAsync` if it's available instead of using our polyfill
* Remove some extraneous dead code from the polyfill
* Add a `val: i32` argument to the polyfill
* Simplify the flow of futures with `Package` since `waitAsync` handles
  all the heavy lifting for us.
* Remove `Arc<Package>` and just use `Package`
* Remove `RefCell` from inside of `Package` now that it is no longer
  needed.
2019-07-18 13:55:54 -07:00
Pauan
366ed2308f Adding in docs for intern 2019-07-18 22:40:56 +02:00
Pauan
544ec49e02 Shifting the unsafe responsibility a bit 2019-07-18 22:21:48 +02:00
Pauan
ca15a59ace Changing from uluru to HashMap 2019-07-18 21:51:29 +02:00
Pauan
3177fa9edc Minor doc fix 2019-07-18 21:51:29 +02:00
Pauan
2405fad319 Shifting the unsafety guarantees around 2019-07-18 21:51:29 +02:00
Pauan
c3676bc6f9 Removing unneeded if statement 2019-07-18 21:51:29 +02:00
Pauan
8572255e73 Making uluru optional 2019-07-18 21:51:29 +02:00
Pauan
adf21fe6cb Removing unneeded size argument 2019-07-18 21:51:29 +02:00
Pauan
cc6ec867f7 Fixing compile errors 2019-07-18 21:51:28 +02:00
Pauan
1723e9d024 More simplifications 2019-07-18 21:51:28 +02:00
Pauan
1e4cac9c95 Simplifying the output 2019-07-18 21:51:28 +02:00
Pauan
4e504654d1 Undoing some formatting 2019-07-18 21:51:28 +02:00
Pauan
fd88626e38 Fixing compile errors 2019-07-18 21:51:28 +02:00
Pauan
2ee4c54f00 Changing to use WasmSlice for the caching 2019-07-18 21:51:28 +02:00
Pauan
f7e8e70684 Fixing compile errors 2019-07-18 21:51:28 +02:00
Pauan
f28cfc26fe Fixing some things for the cache 2019-07-18 21:51:28 +02:00
Pauan
0359da2060 Potential fix for OptionIntoWasmAbi? 2019-07-18 21:51:28 +02:00
Pauan
0a61e12bd1 Making interning manual 2019-07-18 21:51:28 +02:00
Pauan
86a8842f24 Changing IntoWasmAbi to use interning 2019-07-18 21:51:28 +02:00
Pauan
6767371ca7 Initial interning implementation 2019-07-18 21:51:28 +02:00
Alex Crichton
9f77f8dd00 Update parallel raytrace example to use futures
Use the atomics support now implemented!
2019-07-18 10:13:34 -07:00