Commit Graph

2128 Commits

Author SHA1 Message Date
caac2eba53 Add #[wasm_bindgen(start)], plugins to webpack config, Update deps 2018-11-30 17:42:36 +01:00
89e245bddf Merge pull request #1068 from alexcrichton/defer-expose
Defer exposing methods until they're needed
2018-11-29 22:57:25 -06:00
07b148789d Defer exposing methods until they're needed
Previously `catch` and `variadic` would exopse methods in our JS shims,
but they did so earlier than necessary. Turns out `variadic` didn't
actually need to expose anything and `catch` could do so much later!
2018-11-29 17:50:13 -08:00
fbad34a4cb Merge pull request #1064 from alexcrichton/wasm2es6js-imports
wasm2es6js: Fix handling of exported imports
2018-11-30 01:01:45 +01:00
91e9495805 Merge pull request #1065 from alexcrichton/describe-closures
Move closure shims into the descriptor
2018-11-29 17:30:58 -06:00
5f966c5a8f Merge pull request #1063 from alexcrichton/wasm2es6js-start
wasm2es6js: Fix handling of start function
2018-11-29 17:30:24 -06:00
2bd9c0eafb Merge pull request #1067 from alexcrichton/minor-tweaks
A few minor CLI tweaks during work on #1002
2018-11-29 15:16:14 -06:00
0ebd267170 Merge pull request #1066 from alexcrichton/remove-unused
Remove an unused crate from wasm-bindgen-webidl
2018-11-29 14:47:04 -06:00
42053ddd4e Move closure shims into the descriptor
Currently closure shims are communicated to JS at runtime, although at
runtime the same constant value is always passed to JS! More pressing,
however, work in #1002 requires knowledge of closure descriptor indices
at `wasm-bindgen` time which is not currently known.

Since the closure descriptor shims and such are already constant values,
this commit moves the descriptor function indices into the *descriptor*
for a closure/function pointer. This way we can learn about these values
at `wasm-bindgen` time instead of only knowing them at runtime.

This should have no semantic change on users of `wasm-bindgen`, although
some closure invocations may be slightly speedier because there's less
arguments being transferred over the boundary. Overall though this will
help #1002 as the closure shims that the Rust compiler generates may not
be the exact ones we hand out to JS, but rather wrappers around them
which do `anyref` business things.
2018-11-29 12:42:44 -08:00
430fce7a8b Enable env_logger for the wasm-bindgen CLI tool
This was intended earlier, but fogotten! Found during work on #1002
2018-11-29 12:25:24 -08:00
82bfbf9d20 Add more context to a wasm-bindgen-test-runner error
Minor cleanup I found during #1002
2018-11-29 12:25:10 -08:00
167274c9b4 Remove an unused crate from wasm-bindgen-webidl
Apparently this is no longer needed according to rustc!
2018-11-29 12:22:54 -08:00
b4171d0bb2 wasm2es6js: Fix handling of exported imports
This commit fixes a case in `wasm2es6js` where if an imported function
was reexported it wasn't handled correctly. This doesn't have a direct
test but came up during the development of #1002
2018-11-29 11:56:12 -08:00
522e973694 wasm2es6js: Fix handling of start function
This is split out from #1002 and is intended to fix the tool's handling
of the `start` function. For the most accurate emulation of the wasm ESM
spec I believe we need to defer execution of the start function until
all our exports are wired up which should allow valid cyclical
references during instantiation.

The fix here is to remove the start function, if one is present, and
inject an invocation of it at the end of initialization (after our
exports are wired up). This fixes tests on #1002, but doesn't have any
direct analogue for tests here just yet.

Along the way because multiple files now come out of `wasm2es6js` by
default I've added an `--out-dir` argument as well as `-o` to ensure
that a folder for all outputs can be specified.
2018-11-29 11:52:23 -08:00
bbde39fe66 Merge pull request #1060 from dbrgn/patch-1
Fix typo in wasm-bindgen-test usage docs
2018-11-29 10:53:52 -06:00
fdf201a8f1 Fix typo in wasm-bindgen-test usage docs 2018-11-29 17:47:07 +01:00
ed24a63aae Merge pull request #1057 from alexcrichton/start
Add a `#[wasm_bindgen(start)]` attribute
2018-11-29 00:11:43 -06:00
a2aa28e4d3 Add a #[wasm_bindgen(start)] attribute
This commit adds a new attribute to `#[wasm_bindgen]`: `start`. The
`start` attribute can be used to indicate that a function should be
executed when the module is loaded, configuring the `start` function of
the wasm executable. While this doesn't necessarily literally configure
the `start` section, it does its best!

Only one crate in a crate graph may indicate `#[wasm_bindgen(start)]`,
so it's not recommended to be used in libraries but only end-user
applications. Currently this still must be used with the `crate-type =
["cdylib"]` annotation in `Cargo.toml`.

The implementation here is somewhat tricky because of the circular
dependency between our generated JS and the wasm file that we emit. This
circular dependency makes running initialization routines (like the
`start` shim) particularly fraught with complications because one may
need to run before the other but bundlers may not necessarily respect
it. Workarounds have been implemented for various emission strategies,
for example calling the start function directly after exports are wired
up with `--no-modules` and otherwise working around what appears to be
a Webpack bug with initializers running in a different order than we'd
like. In any case, this in theory doesn't show up to the end user!

Closes #74
2018-11-28 22:11:15 -08:00
f4c1c64078 Merge pull request #1055 from alexcrichton/strict
Assert all attributes are used by default
2018-11-28 13:43:04 -06:00
c8a352189b Assert all attributes are used by default
This commit implements a system that will assert that all
`#[wasm_bindgen]` attributes are actually used during compilation. This
should help ensure that we don't sneak in stray attributes that don't
actually end up having any meaning, and hopefully make it a bit easier
to learn `#[wasm_bindgen]`!
2018-11-28 11:42:48 -08:00
e3b628689f Merge pull request #1053 from alexcrichton/dts-wasm
Generate a `*.d.ts` file for wasm files
2018-11-27 16:55:25 -06:00
d54340e5a2 Merge pull request #1051 from alexcrichton/extern
Consistently use `extern "C"`
2018-11-27 16:55:15 -06:00
047c41c1ec Generate a *.d.ts file for wasm files
This generates a `*.d.ts` file for the wasm file that wasm-bindgen emits
whenever typescript is enable *in addition* to the `*.d.ts` file that
already exists for the JS shim.

Closes #1040
2018-11-27 12:36:55 -08:00
151ed58b69 Consistently use extern "C"
This is what rustfmt favors, so let's favor it too!

Closes #1042
2018-11-27 12:27:00 -08:00
48f4adfa8c Run rustfmt over everything 2018-11-27 12:07:59 -08:00
4a70198143 Merge pull request #997 from jonathanKingston/todo-clean
Remove compiler warnings in todo example
2018-11-27 11:52:47 -06:00
6fd33a73fd Merge pull request #1044 from ibaryshnikov/dom-example-without-bundlers
Added web-sys dom example withot npm and webpack
2018-11-27 11:52:00 -06:00
873898e6c0 updated no_modules example to show web-sys usage 2018-11-27 14:44:57 +01:00
a202f1cd1f Merge pull request #1048 from tcr/master
Adds support for #[wasm_bindgen(typescript_custom_section)].
2018-11-26 16:48:38 -06:00
d59716ba5b Remove compiler warnings in todo example, simplify usage of elements into element.rs and fix a bug with focus not working on edit. 2018-11-25 00:29:28 +00:00
90193eab51 Adds support for #[wasm_bindgen(typescript_custom_section)]. 2018-11-24 00:49:28 -05:00
fc0d6528fc Merge pull request #1047 from RReverser/patch-1
Fix variable name reference for path_or_module
2018-11-22 21:43:39 +01:00
26f1903bee Fix variable name reference for path_or_module 2018-11-22 18:26:37 +00:00
4e4a273f19 Merge pull request #1045 from mstange/mstange-fix-bindgn-typo
Fix typo: wasm-bindgn -> wasm-bindgen
2018-11-22 09:44:14 -06:00
4c44f7d2db Fix typo: wasm-bindgn -> wasm-bindgen 2018-11-22 10:34:31 -05:00
091eaa66f3 Merge pull request #1041 from alexcrichton/producers-sectino
Add `wasm-bindgen` to the producers section
2018-11-20 11:35:19 -06:00
6f1e3c8135 Add wasm-bindgen to the producers section
Recently proposed in WebAssembly/tool-conventions#65 each wasm file will
now have an optional `producers` section listing the tooling that went
into producing it. Let's add `wasm-bindgen` in when it processes a wasm
file!
2018-11-19 15:52:58 -08:00
f741ccd005 Merge pull request #1037 from WAFFO/patch-2
Revert js-sys link change, added web-sys link
2018-11-18 09:47:42 +02:00
92ce73d197 Revert js-sys link change, added web-sys link
Correction to Pull Request #1035

limira is correct, that particular paragraph is referencing another crate. Considering the wasm-bindgen tutorial links here for the web-sys crate I added another link to the correct cargo link.

Sorry for the mistake.
2018-11-17 09:57:43 -06:00
adbd71fea9 Merge pull request #1035 from WAFFO/patch-1
Fixed link to the correct crate
2018-11-17 10:19:26 +02:00
0452fbc639 Fixed link to the wrong crate 2018-11-16 19:22:19 -06:00
992fad85ab Merge pull request #1030 from alexcrichton/wire-up-directly
Add an optimization to directly wire up imported functions
2018-11-14 09:05:47 -06:00
68537b9649 Add an optimization to directly wire up imported functions
This commit adds an optimization to `wasm-bindgen` to directly import
and invoke other modules' functions from the wasm module, rather than
going through a shim in the imported bindings. This will be an important
optimization in the future for the host bindings proposal, but for now
it's largely just a proof-of-concept to show that we can do it and is
unlikely to bring about many performance benefits.

The implementation in this commit is largely refactoring to reorganize a
bit how functions are imported, but the implementation happens in
`generate_import_function`.

With this commit, 71/287 imports in the `tests/wasm/main.rs` suite get
hooked up directly to the ES modules, no shims needed!
2018-11-13 13:16:38 -08:00
c20f80c1d6 Merge pull request #1033 from alexcrichton/no-return-array
Remove temporary object allocation
2018-11-13 12:05:35 -06:00
c915870526 Remove temporary object allocation
When returning a ptr/length for allocations and such wasm-bindgen's
generated JS would previously return an array with two elements. It
turns out this doesn't optimize well in all engines! (See #1031). It
looks like we can optimize the array destructuring a bit more, but this
is all generated code which doesn't need to be too readable so we can
also remove the temporary allocation entirely and just pass the second
element of this array through a global instead of the return value.

Closes #1031
2018-11-13 08:10:05 -08:00
8520a54f63 Merge pull request #1032 from derekdreery/window_docs
Add manual docs for single manual function.
2018-11-13 09:56:45 -06:00
4fa9865cc9 Add manual docs for single manual function. 2018-11-13 14:36:33 +00:00
c85f1b74e8 Merge pull request #1028 from alexcrichton/bump
Bump to 0.2.28
0.2.28
2018-11-12 12:31:26 -06:00
22ca15f81e Bump to 0.2.28 2018-11-12 09:28:01 -08:00
dc4e78550a Merge pull request #1019 from alexcrichton/rfc-5
Implement rustwasm/rfcs#5, implement `Deref` for imports and `structural` by default
2018-11-12 10:59:46 -06:00