Commit Graph

22 Commits

Author SHA1 Message Date
d9bc0a3176 Bump to 0.2.19 2018-08-27 13:39:23 -07:00
98008b9e77 Bump to 0.2.18
At the same time, also add a `publish.rs` script to ease our publishing woes.
2018-08-27 13:37:55 -07:00
57693ee11a Bump to 0.2.17 2018-08-16 23:36:42 -07:00
8974a57fb9 Bump to version 0.2.16 2018-08-13 14:27:10 -07:00
9a0470b1c4 Bump to 0.2.15 2018-07-26 14:53:59 -07:00
3f5a0fb31c Bump to 0.2.14 2018-07-25 09:46:45 -07:00
82c2dfa7b2 Bump to 0.2.13 (#536) 2018-07-21 23:10:47 -05:00
aa348f963f Bump to 0.2.12 (#515)
* Bump to 0.2.12

* Update all version numbers and deps
* Update all listed authors to `["The wasm-bindgen Developers"]`
* Update `repository` links to specific paths for each crate
* Update `homepage` links to the online book
* Update all links away from `alexcrichton/wasm-bindgen`
* Add `#[doc]` directives for HTML URLs

* Update more version requirements

* Fill out CHANGELOG
2018-07-19 14:57:04 -05:00
4c27c349ea Bump to 0.2.11 2018-05-24 08:56:28 -07:00
627ca1d638 Bump to 0.2.10 2018-05-17 10:40:24 -07:00
5d28b90069 Bump to 0.2.9 2018-05-11 16:04:41 -07:00
fbb12f519b Bump to 0.2.8 2018-04-30 19:23:44 -07:00
befdf07a07 Bump to 0.2.7 2018-04-27 19:48:57 -07:00
acb5eac96a Bump to 0.2.6 2018-04-26 19:14:09 -07:00
3b4bf475be Bump to 0.2.5 2018-04-19 18:46:41 -07:00
055a8fb803 Bump to 0.2.4 2018-04-18 07:18:11 -07:00
c74230b4a9 Bump to 0.2.3 2018-04-17 13:07:43 -07:00
3305621012 Overhaul how type information gets to the CLI
This commit is a complete overhaul of how the `#[wasm_bindgen]` macro
communicates type information to the CLI tool, and it's done in a somewhat...
unconventional fashion.

Today we've got a problem where the generated JS needs to understand the types
of each function exported or imported. This understanding is what enables it to
generate the appropriate JS wrappers and such. We want to, however, be quite
flexible and extensible in types that are supported across the boundary, which
means that internally we rely on the trait system to resolve what's what.

Communicating the type information historically was done by creating a four byte
"descriptor" and using associated type projections to communicate that to the
CLI tool. Unfortunately four bytes isn't a lot of space to cram information like
arguments to a generic function, tuple types, etc. In general this just wasn't
flexible enough and the way custom references were treated was also already a
bit of a hack.

This commit takes a radical step of creating a **descriptor function** for each
function imported/exported. The really crazy part is that the `wasm-bindgen` CLI
tool now embeds a wasm interpreter and executes these functions when the CLI
tool is invoked. By allowing arbitrary functions to get executed it's now *much*
easier to inform `wasm-bindgen` about complicated structures of types. Rest
assured though that all these descriptor functions are automatically unexported
and gc'd away, so this should not have any impact on binary sizes

A new internal trait, `WasmDescribe`, is added to represent a description of all
types, sort of like a serialization of the structure of a type that
`wasm-bindgen` can understand. This works by calling a special exported function
with a `u32` value a bunch of times. This means that when we run a descriptor we
effectively get a `Vec<u32>` in the `wasm-bindgen` CLI tool. This list of
integers can then be parsed into a rich `enum` for the JS generation to work
with.

This commit currently only retains feature parity with the previous
implementation. I hope to soon solve issues like #123, #104, and #111 with this
support.
2018-04-14 11:15:28 -07:00
eb9a6524b9 Bump to 0.2.2 2018-04-13 07:50:24 -07:00
60ac57331b Bump to 0.2.1 2018-04-09 15:18:39 -07:00
30b1964255 Bump all crates to 0.2 2018-04-03 07:10:07 -07:00
393841779a Rename directories to remove "wasm-bindgen-" prefix in sub-crates 2018-03-29 08:28:25 -07:00