The new version contains
- A bug fix for the bucketed allocator (we don't currently use it)
- A few fixes that can happen when requesting large enough allocation sizes to cause integer overflows. At the moment we never request an allocation larger than 512px so we are safe but it's still good to stay up to date.
Differential Revision: https://phabricator.services.mozilla.com/D101608
Fixes errors like:
dependency (nix) specification is ambiguous. Only one of `branch`, `tag` or `rev` is allowed.
I've left the most specific dependency, but for wgpu the rev is not
right, so I've kept the branch which effectively preserves behavior.
Differential Revision: https://phabricator.services.mozilla.com/D100485
This isn't very systematic as I'm not sure the best approach for that
yet. That being said, this captures the bulk of the autoreleases without
that happen without a pool.
Differential Revision: https://phabricator.services.mozilla.com/D100363
There are probably other places that have this kind of problem but this
keeps thing simple for now and might be sufficient to get things under
control.
Further work will follow.
Differential Revision: https://phabricator.services.mozilla.com/D100294
the goal of this PR is to provide the necessary
infrastructure to handle errors on the GPU process side and send them
back to the client side, triggering the uncaptured error events.
Differential Revision: https://phabricator.services.mozilla.com/D98542
comedy 0.2.0 no longer impls Fail itself. By reenabling the default features
(including std) of failure, the blanket impl will cover that. These features
were disabled to remove a dependency on backtrace, but since bug 1608157 we
are using a version of failure without backtrace by default so that is no
longer needed.
Differential Revision: https://phabricator.services.mozilla.com/D99969
I'm keeping the --enable-update-agent config option and the corresponding
MOZ_UPDATE_AGENT config flag and define, as these should still be useful.
As we never shipped this there is no need to keep anything around to
clean up the scheduled tasks.
Differential Revision: https://phabricator.services.mozilla.com/D99574
Import the improvements made in mp4parse-rust repo. The changes would
save some redundant copy when calling avif related APIs and provide the
ability to get the alpha data of the parsed avif image.
Differential Revision: https://phabricator.services.mozilla.com/D98950
Import the improvements made in mp4parse-rust repo. The changes would
save some redundant copy when calling avif related APIs and provide the
ability to get the alpha data of the parsed avif image.
Differential Revision: https://phabricator.services.mozilla.com/D98950
This touches multiple parts at once, including:
* Remove usage of `this->` in C++ code
* Use `nsACString` across the FFI (no need for `ffi-support` anymore)
* Use `AUTF8String` in the IDL definition, so we can pass it on unmodified.
Differential Revision: https://phabricator.services.mozilla.com/D99034
Events are special in that they are generic over the type of extra keys
they can handle.
This makes them unsuitable to store in simple hashmaps, as (nearly) every event metric is its own type.
To still keep the nice and statically-checked Rust API, but also have
C++ and JS APIs we defer it all to a big ol' lookup table using `match`
at `record()` time.
Note:
While passing `extras` works it's not yet perfect.
The C++ API is hard to use.
The JavaScript API works, but is not documented.
Additionally `testGetValue` doesn't work yet for events in either language.
Differential Revision: https://phabricator.services.mozilla.com/D97450
Instantiating a wasm library duplicates a file descriptor for /dev/null 3 times to be used as input, output and error streams for the wasm sandboxed code. When a lot of sandboxes are created and destroyed, a lot of descriptors are duplicated and closed. While this should be fine, POSIX does not seem to happy with the opening and closing of many file descriptors --- this could perhaps be some strange interaction with Firefox's seccomp filters and cross-process file descriptor handling as it is difficult to repro this outside of firefox.
However, the simpler fix here was to just eliminate the duplication of /dev/null and return an error when input, output or error streams are accessed by wasm sandboxed code. This means calls to printf will fail, but no code I know off actually checks the int error code returned by printf and this change is certainly compatible with existing sandboxed components.
Differential Revision: https://phabricator.services.mozilla.com/D99160
Revendor Cranelift to 3b01b4b850bafb981a04383198c0b50d041dc5ef
from https://github.com/mozilla-spidermonkey/wasmtime branch firefox85.
The (only) purpose is to pull in this:
commit 31bac3eafbfda8f1ffb504cdeb75505d48537336
Merge: 93c199363 34d9931ed
Author: Nick Fitzgerald <fitzgen@gmail.com>
Date: Wed Nov 25 13:09:05 2020 -0800
Merge pull request #2450 from bytecodealliance/cfallin/fix-wasm-reachable
Fix Wasm translator bug: end of toplevel frame is branched-to only for fallthrough returns.
Differential Revision: https://phabricator.services.mozilla.com/D99204
This touches multiple parts at once, including:
* Remove usage of `this->` in C++ code
* Use `nsACString` across the FFI (no need for `ffi-support` anymore)
* Use `AUTF8String` in the IDL definition, so we can pass it on unmodified.
Differential Revision: https://phabricator.services.mozilla.com/D99034
Events are special in that they are generic over the type of extra keys
they can handle.
This makes them unsuitable to store in simple hashmaps, as (nearly) every event metric is its own type.
To still keep the nice and statically-checked Rust API, but also have
C++ and JS APIs we defer it all to a big ol' lookup table using `match`
at `record()` time.
Note:
While passing `extras` works it's not yet perfect.
The C++ API is hard to use.
The JavaScript API works, but is not documented.
Additionally `testGetValue` doesn't work yet for events in either language.
Differential Revision: https://phabricator.services.mozilla.com/D97450
The changes should be trivial.
The third_party changes are up for review in
https://github.com/servo/rust-cssparser/pull/277 (and of course I'll
land with a bump to 0.28 rather than the override after that gets r+'d).
The basic idea is that with this we have the actual start offset of the
rule, so we wouldn't include html comments or other invalid stuff we
discard during sanitization in bug 1680084. But that's a separate
change.
Differential Revision: https://phabricator.services.mozilla.com/D98677
The changes should be trivial.
The third_party changes are up for review in
https://github.com/servo/rust-cssparser/pull/277 (and of course I'll
land with a bump to 0.28 rather than the override after that gets r+'d).
The basic idea is that with this we have the actual start offset of the
rule, so we wouldn't include html comments or other invalid stuff we
discard during sanitization in bug 1680084. But that's a separate
change.
Differential Revision: https://phabricator.services.mozilla.com/D98677
js/src/wasm/cranelift/Cargo.toml lists wasmparser as a dependency, but this is
(confusingly) not necessary, since we use the version re-exported by Cranelift
(IIUC). So let's remove the dependency.
Differential Revision: https://phabricator.services.mozilla.com/D98372
This change updates and enables Naga to get the
SPIRV shaders parsed, validated, and reflected back into
implicit bind group layouts.
WebGPU examples heavily rely on the implicit layouts now,
and the PR also updates the WebIDL to make that possible.
With the change, we are able to run most of the examples again!
Differential Revision: https://phabricator.services.mozilla.com/D96850
This is vendoring the Glean Rust Language Bindings (built on the
top of glean-core), providing a nice Glean SDK Rust API for consumers,
for using in FOG.
Depends on D96833
Differential Revision: https://phabricator.services.mozilla.com/D96834
This additionally brings in two more Rust dependencies:
adler and autocfg. They are included in one of the latest
flate2 version.
Differential Revision: https://phabricator.services.mozilla.com/D96833
This is vendoring the Glean Rust Language Bindings (built on the
top of glean-core), providing a nice Glean SDK Rust API for consumers,
for using in FOG.
Differential Revision: https://phabricator.services.mozilla.com/D96227
This additionally brings in two more Rust dependencies:
adler and autocfg. They are included in one of the latest
flate2 version.
Differential Revision: https://phabricator.services.mozilla.com/D96226
This is vendoring the Glean Rust Language Bindings (built on the
top of glean-core), providing a nice Glean SDK Rust API for consumers,
for using in FOG.
Differential Revision: https://phabricator.services.mozilla.com/D96227
This additionally brings in two more Rust dependencies:
adler and autocfg. They are included in one of the latest
flate2 version.
Differential Revision: https://phabricator.services.mozilla.com/D96226
This PR updates wgpu to the latest and changes the way we pass object descriptors to the GPU process.
Instead of trying to convert them between DOM-CPP-IPDL-FFI-Rust, we now do DOM-FFI-Rust
and serialize them by serde into ipc::ByteBuf objects.
Differential Revision: https://phabricator.services.mozilla.com/D94908
This PR updates wgpu to the latest and changes the way we pass object descriptors to the GPU process.
Instead of trying to convert them between DOM-CPP-IPDL-FFI-Rust, we now do DOM-FFI-Rust
and serialize them by serde into ipc::ByteBuf objects.
Differential Revision: https://phabricator.services.mozilla.com/D94908
New versions have shrink_to_fit(). This also explicitly requests the
"std" feature, because otherwise autocfg fails to pass the panic=abort
flag to rustc and it chokes.
Depends on D96130
Differential Revision: https://phabricator.services.mozilla.com/D96131
This fixes the failures in bug 1671573 and just works thanks to the
invalidation improvements I did for :is / :where.
Added a couple tests for invalidation which is the tricky bit. 001 is a
very straight-forward test, 002 is the :is test but with :is() replaced
by double-:not().
This also fixes default namespaces inside :is() / :where(), which are
supposed to get ignored, but aren't. Added tests for that and for the
pre-existing :not() behavior which Chrome doesn't quite get right.
Differential Revision: https://phabricator.services.mozilla.com/D94142
Allow Rust Futures to be polled to completion on the current thread's
`nsIEventTarget`.
Futures don't need to be `Send` since they are polled on the thread spawning the
task responsible to completing the Future.
Differential Revision: https://phabricator.services.mozilla.com/D89694
The CGFonts end up in a cache that we don't want. Creating the CTFonts
directly should avoid this.
Notes:
add_native_font normally takes a CGFont and we need a CTFontDescriptor
so we convert to postscript name and then postscript name to
CTFontDescriptor. This is wasteful but avoids needing to change the
external API.
To avoid copying the data in the Vec we use a CFAllocator to wrap the
Vec for use by CFData
Differential Revision: https://phabricator.services.mozilla.com/D93518
This patch fixes a failure to compile on OpenBSD, and also includes the new
(and not yet used by Gecko) WebDriver implementation, and its associated
error-code upgrades.
This has a lot of new packages added into the cargo-checksum, but they were
already used by Gecko, and thus don't change the gecko-wide Cargo.{lock,toml}
files.
Differential Revision: https://phabricator.services.mozilla.com/D92784
This patch pulls in an updated Cranelift with a new validation strategy,
introduced by bytecodealliance/wasmtime#2059. This new design validates
the Wasm module as it parses the function bodies. A subsequent patch
will adapt Baldrdash to work with this.
Differential Revision: https://phabricator.services.mozilla.com/D92503
This patch pulls in an updated Cranelift with a new validation strategy,
introduced by bytecodealliance/wasmtime#2059. This new design validates
the Wasm module as it parses the function bodies. A subsequent patch
will adapt Baldrdash to work with this.
Differential Revision: https://phabricator.services.mozilla.com/D92503
This patch pulls in an updated Cranelift with a new validation strategy,
introduced by bytecodealliance/wasmtime#2059. This new design validates
the Wasm module as it parses the function bodies. A subsequent patch
will adapt Baldrdash to work with this.
Differential Revision: https://phabricator.services.mozilla.com/D92503
This patch pulls in the latest version of Cranelift, which includes
necessary updates to support some recent work on the Wasm backend (e.g.,
support for the new ABI in PR #2223).
Differential Revision: https://phabricator.services.mozilla.com/D92000
This patch pulls in the latest version of Cranelift, which includes
necessary updates to support some recent work on the Wasm backend (e.g.,
support for the new ABI in PR #2223).
Differential Revision: https://phabricator.services.mozilla.com/D92000
This patch adds a task that is dispatched to the background thread when TRR
is first enabled. This may mean during the TRRService initialization at
startup or later when the pref is flipped.
The task will call into rust_parse_etc_hosts which does the actual file
opening and parsing. We pass the path to the file, that being either
/etc/hosts or the Windows equivalent obtained by calling
SHGetSpecialFolderPathA.
The rust code opens the file and proceeds to read it line by line while
accumulating all the hostnames in an array. Since these files can be
quite large, on the order of several megabytes, we need to make sure we
don't block shutdown doing this - so once more than 100 domains have
accumulated in the array we call back into C++ code to add them to the
exclusion list. The callback will return true if we should continue to
parse the file or false otherwise.
We also change the tests to use "excluded" rather than localhost when
testing the excluded-domains prefs, since localhost is unually present
in /etc/hosts and may interfere with the test.
We also use an atomic sTRRServicePtr to make sure that we don't have
a data race between the TRRService being freed and the callbacks of the
parsing.
Differential Revision: https://phabricator.services.mozilla.com/D90663
The conversion was done with c2rust and then manually cleaned up some.
There's still lots of unsafe code remaining but I'd rather do the rest
of the cleanup in-tree so that it's easier to catch and revert
regressions.
I've dropped support for SSE1 (Firefox requires SSE2) and Altivec
(not wanting to deal with fixing Rust's Altivec support).
transform_neon.rs manually implements a bunch of intrinsics, this
can be fixed when we can depend on Rust 1.48.
The fuzz target is changed to a cargo-fuzz target.
Some of the gtests are moved to Rust.
Differential Revision: https://phabricator.services.mozilla.com/D90782
A small xpcom module implemented in Rust, designed to provide low-level tools to deal with processes
from JS. For the moment, the only notable feature is `kill()`, designed to be used from about:processes
Differential Revision: https://phabricator.services.mozilla.com/D82552
A small xpcom module implemented in Rust, designed to provide low-level tools to deal with processes
from JS. For the moment, the only notable feature is `kill()`, designed to be used from about:processes
Differential Revision: https://phabricator.services.mozilla.com/D82552
This Cranelift update to revision 379aed8092cd1241ec7839e77d05557b1dceb234
includes its PRs #2197 and #2194, which fix two Wasm translation bugs, as well a
other miscellaneous updates and fixes.
Fixes both Bug 1664453 and Bug 1663861.
Differential Revision: https://phabricator.services.mozilla.com/D90306
A small xpcom module implemented in Rust, designed to provide low-level tools to deal with processes
from JS. For the moment, the only notable feature is `kill()`, designed to be used from about:processes
Differential Revision: https://phabricator.services.mozilla.com/D82552
Also update `base64` so that all webrender code is on the same version, as
required by the `webrender-lint-tidy` check.
Differential Revision: https://phabricator.services.mozilla.com/D89698