Add the first version of the IPDL-JS API, which allow chrome JS to load IPDL files and use them to communicate accross Content processes.
See IPDLProtocol.h for more information regarding how to use the API.
Differential Revision: https://phabricator.services.mozilla.com/D2116
--HG--
rename : ipc/moz.build => ipc/ipdl_new/moz.build
extra : moz-landing-system : lando
We had a mix of 0.6.2 and 0.6.5 (which is the current release),
this unifies to the latest version. It also enables the union
feature which removes the discriminant, reducing memory usage.
This cherry-picks servo/servo#21746.
log 0.3.9 is still there because tokio-uds 0.1.7, which is a
dependency of audioipc, still depends on ^0.3. A separate bug will
be filed on WebRTC to upgrade their tokio-uds dependency.
Because all Rust crates in the tree are vendored, using the wildcard
"*" version dependency could have unintended reprecussions on
rsdparsa if another crate changes its log version dependency.
This patch, along with the others associated with this bug, upgrades
the log crate to 0.4.* throughout. This has the benefit that we
can get rid of the duplicate vendored log crates in third_party/rust.
By relaxing the version dependency on the log crate we are able to
get rid of duplicate vendored crates.
This particular version number, combined with rsdparsa depending
on "*" (anything) meant that a change to this version number in
audioipc would have reprecussions on the dependencies of rsdparsa.
I will address the wildcard version in a separate patch on rsdparsa.
The fix for bug 1482810 requires an upstream change to the cc crate: if CFLAGS is defined, then don't enable warnings by default. That change was included in cc crate version 1.0.23, and this change vendors that version of the cc crate into mozilla-central.
MozReview-Commit-ID: Krfrs1dSN9d
Differential Revision: https://phabricator.services.mozilla.com/D4699
--HG--
extra : moz-landing-system : lando
winapi 0.2.8 is used by a number of crates in our dependency graph. The
newest version of winapi is 0.3.4, which is a significant restructuring
and also more amenable to further development, e.g. adding AArch64
support. This patch does the easy work of updating as many things as
possible to winapi 0.3.4 via a simple `cargo update`:
cargo update -p atty:0.2.2 -p fs2 -p msdos_time -p parking_lot_core -p aho-corasick
and then vendoring the results of those changes.
To support that, this patch also does the following.
- Removes the insert(), remove() and might_contain() methods, because they are
specialized versions of insert_hash(), remove_hash(), and
might_contain_hash(), and they are only used by tests within this file.
- Moves hash() from the top level into create_and_insert_some_stuff().
- Changes create_and_insert_some_stuff() so that instead of hashing consecutive
integers, it instead hashes stringified consecutive integers, which matches
real usage a little better.
- Raises the false_positives limit a little to account for the above changes.
--HG--
extra : rebase_source : f839ff86986d5c8a17506a808ba676f69c7ef407
This moves most of the code to be Rust, except potentially some evaluator
functions, and allows to unblock the use case from any-hover / any-pointer and
remove nsMediaFeatures.
Differential Revision: https://phabricator.services.mozilla.com/D2976
Correctness improvements:
* UTF errors are handled safely per spec instead of dangerously truncating
strings.
* There are fewer converter implementations.
Performance improvements:
* The old code did exact buffer length math, which meant doing UTF math twice
on each input string (once for length calculation and another time for
conversion). Exact length math is more complicated when handling errors
properly, which the old code didn't do. The new code does UTF math on the
string content only once (when converting) but risks allocating more than
once. There are heuristics in place to lower the probability of
reallocation in cases where the double math avoidance isn't enough of a
saving to absorb an allocation and memcpy.
* Previously, in UTF-16 <-> UTF-8 conversions, an ASCII prefix was optimized
but a single non-ASCII code point pessimized the rest of the string. The
new code tries to get back on the fast ASCII path.
* UTF-16 to Latin1 conversion guarantees less about handling of out-of-range
input to eliminate an operation from the inner loop on x86/x86_64.
* When assigning to a pre-existing string, the new code tries to reuse the
old buffer instead of first releasing the old buffer and then allocating a
new one.
* When reallocating from the new code, the memcpy covers only the data that
is part of the logical length of the old string instead of memcpying the
whole capacity. (For old callers old excess memcpy behavior is preserved
due to bogus callers. See bug 1472113.)
* UTF-8 strings in XPConnect that are in the Latin1 range are passed to
SpiderMonkey as Latin1.
New features:
* Conversion between UTF-8 and Latin1 is added in order to enable faster
future interop between Rust code (or otherwise UTF-8-using code) and text
node and SpiderMonkey code that uses Latin1.
MozReview-Commit-ID: JaJuExfILM9