Commit Graph

2871 Commits

Author SHA1 Message Date
Alex Crichton
9cac16f2d6
Merge pull request #1596 from alexcrichton/bump
Bump to 0.2.46
2019-06-14 13:45:17 -05:00
Alex Crichton
8fc0a38402 Bump to 0.2.46 2019-06-14 11:44:58 -07:00
Alex Crichton
83a3f5d44a Run cargo fmt --all 2019-06-13 08:30:06 -07:00
Alex Crichton
3aa803c55c
Merge pull request #1380 from alexcrichton/rayon-example
Rewrite the parallel raytracing example with `rayon`
2019-06-13 08:50:38 -05:00
Alex Crichton
eafc6024cc Rewrite the parallel raytracing example with rayon
One of the best parts about concurrency in Rust is using `rayon` and how
easy it makes parallelization of tasks, so it's the ideal example for
parallel Rust on the web! Previously we've been unable to use `rayon`
because there wasn't a way to customize how rayon threads themselves are
spawned, but [that's now being developed for us][rayon]!

This commit uses that PR to rewrite the `raytrace-parallel` example in
this repository. While not a perfect idiomatic representation of using
`rayon` I think this is far more idiomatic than the previous iteration
of `raytrace-parallel`! I'm hoping that we can continue to iterate on
this, but otherwise show it off as a good example of parallel Rust on
the web.

[rayon]: https://github.com/rayon-rs/rayon/pull/636
2019-06-13 06:48:53 -07:00
Alex Crichton
f027bb2e09
Merge pull request #1593 from vmx/patch-1
guide: fix typo in rust-type-conversions.md
2019-06-12 09:04:19 -05:00
Volker Mische
5c79298dc9
guide: fix typo in rust-type-conversions.md 2019-06-12 14:14:57 +02:00
Alex Crichton
1c558fac92
Merge pull request #1592 from alexcrichton/explicit-self
Include self-pointer in `Function` descriptions
2019-06-11 17:11:58 -05:00
Alex Crichton
80c75df166
Merge pull request #1590 from alexcrichton/intrinsics
Correct some intrinsic signatures
2019-06-11 14:53:22 -05:00
Alex Crichton
754328bef2
Merge pull request #1589 from alexcrichton/clamped
Remove the `Clamped` descriptor type
2019-06-11 14:53:15 -05:00
Alex Crichton
c0df37b2f2
Merge pull request #1588 from alexcrichton/exnptr
Communicate exceptions through global memory
2019-06-11 14:53:01 -05:00
Alex Crichton
afbd7d3ff8 Include self-pointer in Function descriptions
Previously a `Function` didn't actually take into account the self
pointer and instead left it as an implicit argument. This instead
ensures that there's a `Descriptor::I32` type inside of a `Function`
description that we have to later skip, and this should not only make
the anyref pass correct for Rust exports but it should also make it more
accurate for future webidl transformations.
2019-06-11 12:51:53 -07:00
Alex Crichton
ce4cc317e8 Correct some intrinsic signatures
While this doesn't currently cause issues in the upcoming webidl
refactor this is actually being asserted and causes verification issues
if the types don't align!

These are basically just mistakes from the original implementation of
this module, but this doesn't actually fix a known bug today.
2019-06-11 11:56:08 -07:00
Alex Crichton
621fc9c440 Remove the Clamped descriptor type
This is just a bit too general to work with and is pretty funky. Instead
just tweak `Clamped<&[u8]>` to naturally generate a descriptor for
`Ref(Slice(ClampedU8))`, requiring fewer gymnastics when interpreting
descriptors.
2019-06-11 11:52:13 -07:00
Alex Crichton
6796bc6895 Communicate exceptions through global memory
Instead of allocating space on the stack and returning a pointer we
should be able to use a single global memory location to communicate
this error payload information. This shouldn't run into any reentrancy
issues since it's only stored just before returning to wasm and it's
always read just after returning from wasm.
2019-06-11 11:41:05 -07:00
Alex Crichton
535aa3193c Attempt to fix compilation issues on CI
Can't reproduce the errors on Azure locally, but hopefully tweaking
generated code can get things to work.
2019-06-10 08:47:19 -07:00
Alex Crichton
c3e0edd956
Merge pull request #1586 from alexcrichton/no-web-sys
Make `env_logger` an optional dependency
2019-06-10 10:47:14 -05:00
Alex Crichton
a7726545ac
Merge pull request #1579 from ibaryshnikov/default-init-module
added default module path inside init function when target is web
2019-06-10 10:40:38 -05:00
Alex Crichton
5cf8224d99 Make env_logger an optional dependency
Only used during development no need to pull in its set of features when
typically compiled as a dependency of other crates!

Closes #1580
2019-06-10 07:12:44 -07:00
Alex Crichton
2e05b62013
Merge pull request #1583 from Pauan/asref
Adding in AsRef impl for all wasm_bindgen types
2019-06-10 09:05:22 -05:00
Pauan
b205045424 Adding in AsRef impl for all wasm_bindgen types 2019-06-10 08:05:59 +02:00
ibaryshnikov
8ace8287ff added default module path inside init function when target is web 2019-06-08 01:27:35 +03:00
Alex Crichton
96d333af84
Merge pull request #1577 from c410-f3r/getters-setters-ts
Fix getter and setter for TS
2019-06-07 10:10:22 -05:00
Caio
e7e8ae1877 Fix getter and setter 2019-06-06 16:11:51 -03:00
Alex Crichton
cf2a42ce7c
Merge pull request #1566 from alexcrichton/webidl-bindings-refactor-1
First refactor for WebIDL bindings
2019-06-05 15:05:40 -05:00
Alex Crichton
e24c03182b Attempt to fix CI 2019-06-05 12:26:10 -07:00
Alex Crichton
59e773f5ec Update walrus 2019-06-05 11:08:04 -07:00
Alex Crichton
bf1a31e139 Don't generate a free function shim for classes
This was once required due to flavorful management of the `WeakRef`
proposal but nowadays it's simple enough that we don't need to refactor
it out here.
2019-06-05 07:52:14 -07:00
Alex Crichton
6e8c3e88f8 Directly import __wrap functions if possible
These can have similar optimizations as importing a value directly.
2019-06-05 07:52:14 -07:00
Alex Crichton
c22b907e7f Touch up some comments 2019-06-05 07:52:14 -07:00
Alex Crichton
ee426c03a9 Ensure that generated JS is deterministic
Iteration order of hash maps is nondeterministic, so add a `sorted_iter`
function and then use that throughout whenever iteration order of a hash
map would affect the generated JS.
2019-06-05 07:52:14 -07:00
Alex Crichton
cfd3e0406f Split symbol intrinsics into two
This allows using WebIDL bindings types to describe both of them instead
of having a custom ABI, allowing for more direct and rich bindings
eventually!
2019-06-05 07:52:14 -07:00
Alex Crichton
6f727d7c13 Refactor the module name slightly in gen_init 2019-06-05 07:52:14 -07:00
Alex Crichton
4eafaeae2d Handle the function table export on-demand
Don't delay processing until `finalize`, but instead process it as soon
as it's requested to avoid doing too much logic in `finalize`.
2019-06-05 07:52:14 -07:00
Alex Crichton
71209686e9 Use unwrap_call instead of an explicit match 2019-06-05 07:52:14 -07:00
Alex Crichton
c7021ba307 Update crates/cli-support/src/js/mod.rs
Co-Authored-By: Nick Fitzgerald <fitzgen@gmail.com>
2019-06-05 07:52:14 -07:00
Alex Crichton
3b5e3edd18 Fix anyref closure transformations
* Catch all closures by walking all `Descriptor` values and looking for
  either `Function` or `Closure`.
* Update the correct arguments for wasm by ensuring that the closure
  modifications skip the first two arguments.
2019-06-05 07:52:14 -07:00
Alex Crichton
b51df39bc9 Reimplement anyref processing and passes
This commit reimplements the `anyref` transformation pass tasked with
taking raw rustc output and enhancing the module to use `anyref`. This
was disabled in the previous commits during refactoring, and now the
pass is re-enabled in the manner originally intended.

Instead of being tangled up in the `js/mod.rs` pass, the anyref
transformation now happens locally within one module,
`cli-support/src/anyref.rs`, which exclusively uses the output of the
`webidl` module which produces a WebIDL bindings section as well as an
auxiliary wasm-bindgen specific section. This makes the anyref transform
much more straightforward and local, ensuring that it doesn't propagate
elsewhere and can be a largely local concern during the transformation.

The main addition needed to support this pass was detailed knowledge of
the ABI of a `Descriptor`. This knowledge is already implicitly
hardcoded in `js2rust.rs` and `rust2js.rs` through the ABI shims
generated. This was previously used for the anyref transformation to
piggy-back what was already there, but as a separate pass we are unable
to reuse the knowledge in the binding generator.

Instead `Descriptor` now has two dedicated methods describing the
various ABI properties of a type. This is then asserted to be correct
(all the time) when processing bindings, ensuring that the two are kept
in sync.
2019-06-05 07:52:14 -07:00
Alex Crichton
55fc5367a5 Fix a typo in the JsvalEq intrinsic
This is supposed to be `===`, not `==`.
2019-06-05 07:52:14 -07:00
Alex Crichton
cbd4b87d08 Fix handling imported memories
Need to make sure we update the import itself and configure the value on
the import object!
2019-06-05 07:52:14 -07:00
Alex Crichton
81fbc642f4 Don't pass strings in raytrace-parallel example
Make sure to explicitly parse strings to numbers
2019-06-05 07:52:14 -07:00
Alex Crichton
b4c395bd6e Fix an inverted condition for catch_and_throw 2019-06-05 07:52:14 -07:00
Alex Crichton
edd1469d21 Include docs in generated JS getters/setters 2019-06-05 07:52:14 -07:00
Alex Crichton
164712c305 Temporarily ignore intentionally failing test 2019-06-05 07:52:14 -07:00
Alex Crichton
cba1e70077 Fix TypeScript output for fields 2019-06-05 07:52:14 -07:00
Alex Crichton
ff0a50e31e Fix failing interpreter tests 2019-06-05 07:52:14 -07:00
Alex Crichton
346868f78b Fix a failing CLI test 2019-06-05 07:52:14 -07:00
Alex Crichton
22b26db911 Use delete_typed to improve some ergonomics 2019-06-05 07:52:14 -07:00
Alex Crichton
e8e84a3f9c Remove __exports map on the web target
This is no longe rneeded now that we precisely track what needs to be
exported for an imported item, so all the imports are hooked up
correctly elsewhere without the need for the `__exports` map.
2019-06-05 07:52:14 -07:00
Alex Crichton
3e28e6ea46 Fix web, no-modules, and bundler output types
Make sure the wasm import definition map is hooked up correctly!
2019-06-05 07:52:14 -07:00