Commit Graph

1260 Commits

Author SHA1 Message Date
Nika Layzell
4f380cfe7d Bug 1444151 - Part 3: Only create a single allocation for MozURL objects, which is managed by rust, r=valentin
This patch rewrites the rust-url-capi crate as the mozurl crate, which
provides a threadsafe MozURL object which is compatible with the
previous MozURL class.

Creating a MozURL this way performs a single allocation, which contains
only a rust-url Url object and an atomic refcnt, however it is fully
compatible with the C++ RefPtr type.

This patch also exposes methods for accessing dependent substrings of
the serialized spec, meaning that string copies can be avoided in many
situations when inspecting attributes of the MozURL.




--HG--
rename : netwerk/base/rust-url-capi/.gitignore => netwerk/base/mozurl/.gitignore
2018-04-10 17:49:50 -04:00
Matt Brubeck
c6fc591471 Bug 1451945 - Remove syn dependency from gkrust-shared. r=ted
Remove the syn dependency from gkrust-shared, which was added in bug 1373878
as a workaround for this Cargo bug:

https://github.com/rust-lang/cargo/issues/3923

MozReview-Commit-ID: L34J0davEYd

--HG--
extra : rebase_source : 79e5684cba143f6215e7dcf9367f82227bca48c5
2018-04-05 15:51:14 -07:00
Dan Glastonbury
9e176607b5 Bug 1432779 - Rust vendor. r=jya
MozReview-Commit-ID: 5FQjIPBWTEZ
2018-03-24 10:57:58 +01:00
Emilio Cobos Álvarez
24cf27d33c Bug 1447611: Remove --enable-stylo and --enable-stylo-build-bindgen. r=froydnj
Will remove the prefs and stuff in a followup.

MozReview-Commit-ID: HVyfbHOEQYI
2018-03-21 19:13:26 +01:00
Csoregi Natalia
d6c6d38406 Backed out 4 changesets (bug 1447611) for mass failures due to --enable-stylo removal. CLOSED TREE
Backed out changeset c6193142bbcf (bug 1447611)
Backed out changeset 01ada1c5a95f (bug 1447611)
Backed out changeset 86c9fed44da2 (bug 1447611)
Backed out changeset bb84ac6e1468 (bug 1447611)
2018-03-21 19:01:07 +02:00
Emilio Cobos Álvarez
330ddd82bf Bug 1447611: Remove --enable-stylo and --enable-stylo-build-bindgen. r=froydnj
Will remove the prefs and stuff in a followup.

MozReview-Commit-ID: HVyfbHOEQYI
2018-03-21 17:24:41 +01:00
Paul Ellenbogen
9a973356aa Bug 1379265 - Add C API for rsdparsa; r=rillian
MozReview-Commit-ID: FdhpTT5wzwI

--HG--
extra : rebase_source : 9b0188b6e3c2604da77250b9e004508e91fe4497
2017-06-30 12:54:12 -07:00
Jan Beich
a09324313a Bug 1442753 - Use in-tree copy of cubeb-sys even when cubeb-remoting is disabled. r=kamidphish
MozReview-Commit-ID: 3dGtrSqr9HW

--HG--
extra : rebase_source : 2d29251178092a5a6206659ee01f546ca657dcd1
2018-03-05 03:38:33 +00:00
Matt Brubeck
be08cdcdc1 Bug 1381576 - Use a Cargo workspace for rust crates. r=ted
MozReview-Commit-ID: K6B9SifddXu

--HG--
extra : source : bbae7807c164273f6bb123d680a4fc31202d7a61
extra : amend_source : 53505e25f63a8eb228e62a0a9f3bd3ed98950296
extra : histedit_source : 597464181d4b79f5ac1a511d23e2a05aefb266da%2C63b89f3699e0e9598c8355e7293f10795acc80e7
2018-03-01 14:33:35 -08:00
Emilio Cobos Álvarez
ebde436970 No bug: Update bindgen to 0.33. r=nox on a CLOSED TREE
MozReview-Commit-ID: 4PgOmtt3zrg


--HG--
rename : third_party/rust/env_logger/.cargo-checksum.json => third_party/rust/env_logger-0.4.3/.cargo-checksum.json
rename : third_party/rust/env_logger/Cargo.toml => third_party/rust/env_logger-0.4.3/Cargo.toml
rename : third_party/rust/cfg-if-0.1.1/LICENSE-APACHE => third_party/rust/env_logger-0.4.3/LICENSE-APACHE
rename : third_party/rust/env_logger/src/lib.rs => third_party/rust/env_logger-0.4.3/src/lib.rs
rename : third_party/rust/env_logger/src/regex.rs => third_party/rust/env_logger-0.4.3/src/regex.rs
rename : third_party/rust/env_logger/src/string.rs => third_party/rust/env_logger-0.4.3/src/string.rs
rename : third_party/rust/env_logger/tests/regexp_filter.rs => third_party/rust/env_logger-0.4.3/tests/regexp_filter.rs
2018-03-02 20:30:14 +01:00
shindli
0ba01aed1b Backed out 3 changesets (bug 1381576) for Bugzilla linting failure on a CLOSED TREE
Backed out changeset 3bc1743ad418 (bug 1381576)
Backed out changeset bbae7807c164 (bug 1381576)
Backed out changeset 1ea18b70b170 (bug 1381576)
2018-03-02 21:17:20 +02:00
Matt Brubeck
c94fb26dea Bug 1381576 - Use a Cargo workspace for rust crates. r=ted
MozReview-Commit-ID: K6B9SifddXu

--HG--
extra : rebase_source : 75fae593e8765ec5b1e616d10eda0bc52f1f7194
extra : histedit_source : 21b38586bcc4576fce5eadff9a3c77ccf5e21341
2018-03-01 14:33:35 -08:00
Emilio Cobos Álvarez
04ea4e6ee0 Bug 1432153: Update bindgen. r=xidorn
on a CLOSED TREE.

MozReview-Commit-ID: BJH6Y58oYtk


--HG--
rename : third_party/rust/proc-macro2/.cargo-checksum.json => third_party/rust/proc-macro2-0.2.2/.cargo-checksum.json
rename : third_party/rust/proc-macro2/.travis.yml => third_party/rust/proc-macro2-0.2.2/.travis.yml
rename : third_party/rust/proc-macro2/Cargo.toml => third_party/rust/proc-macro2-0.2.2/Cargo.toml
rename : third_party/rust/proc-macro2/src/lib.rs => third_party/rust/proc-macro2-0.2.2/src/lib.rs
rename : third_party/rust/proc-macro2/src/stable.rs => third_party/rust/proc-macro2-0.2.2/src/stable.rs
rename : third_party/rust/proc-macro2/src/strnom.rs => third_party/rust/proc-macro2-0.2.2/src/strnom.rs
rename : third_party/rust/proc-macro2/tests/test.rs => third_party/rust/proc-macro2-0.2.2/tests/test.rs
2018-03-02 15:49:56 +01:00
Kartikaya Gupta
2cfaff56ac Bug 1440664 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: IZncD4fgDk7

--HG--
extra : rebase_source : e40e805ac4f069920277515ec509bc29c68b42d5
2018-03-01 16:51:58 -05:00
Servo VCS Sync
f5b5dab005 No bug - Revendor rust dependencies 2018-02-28 20:07:52 +00:00
Servo VCS Sync
ecd7b0490b No bug - Revendor rust dependencies 2018-02-28 10:03:41 +00:00
Servo VCS Sync
8c5c2dd863 No bug - Revendor rust dependencies 2018-02-27 06:13:30 +00:00
Dan Glastonbury
1f48e9c16c Bug 1440538 - P5: Vendor rust crates. r=rillian
MozReview-Commit-ID: 5YkwigTZxYG

--HG--
rename : third_party/rust/cmake/.cargo-checksum.json => third_party/rust/cmake-0.1.24/.cargo-checksum.json
rename : third_party/rust/cmake/Cargo.toml => third_party/rust/cmake-0.1.24/Cargo.toml
rename : third_party/rust/bitflags-0.9.1/LICENSE-APACHE => third_party/rust/cmake-0.1.24/LICENSE-APACHE
rename : third_party/rust/cmake/README.md => third_party/rust/cmake-0.1.24/README.md
rename : third_party/rust/cmake/src/lib.rs => third_party/rust/cmake-0.1.24/src/lib.rs
extra : rebase_source : 7a870d64b367d6d67060ecff86de1b7f8fc04471
2018-02-13 15:05:37 +10:00
Ralph Giles
ef7e020a97 Bug 1440449 - Remove codegen-units limit for debug builds. r=froydnj
Starting with Rust 1.24, the default codegen-units limit is 16,
with jobserver control to avoid overprovisioning. Remove our
previous fixed limit of 4 threads for debug builds.

For release, retain codegen-units=1 to make sure we get the
most complete optimization results.

Thanks to Simon Sapin for the suggestion.

MozReview-Commit-ID: FmYF4DcmBvt

--HG--
extra : rebase_source : 307ad8fad2874636adb3ce95a5cd47339e83f40c
2018-02-22 11:58:50 -08:00
Csoregi Natalia
ecb86060b4 Backed out 5 changesets (bug 1379265) for GTest crashes on RsdparsaSdpAttributeList::GetGroup. a=backout
Backed out changeset addf903ba015 (bug 1379265)
Backed out changeset 51f51dfe6095 (bug 1379265)
Backed out changeset 443378a6ed7a (bug 1379265)
Backed out changeset 0ea22b056105 (bug 1379265)
Backed out changeset d85d78ba8ccd (bug 1379265)
2018-02-24 12:58:24 +02:00
Sebastian Hengst
e6ed14057b merge mozilla-central to autoland on a CLOSED TREE
--HG--
extra : amend_source : d88824ea9bbe5e0298f0d64fd0e4cdedcbee342c
2018-02-24 03:07:44 +02:00
Paul Ellenbogen
ccaf43a57e Bug 1379265 - Add C API for rsdparsa; r=rillian
MozReview-Commit-ID: FdhpTT5wzwI

--HG--
extra : rebase_source : b1fd70e19346794f9309a49cda4a06ccfcd403aa
2017-06-30 12:54:12 -07:00
Matt Brubeck
a23e39069a Bug 1341102 - Update Cargo.lock files 2018-02-21 17:49:38 -08:00
Kartikaya Gupta
868a8d8bd5 Bug 1438892 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: wsncokjtul

--HG--
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-deque/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-deque/LICENSE-MIT
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-epoch/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-epoch/LICENSE-MIT
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-utils/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-utils/LICENSE-MIT
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-0.8.2/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-0.8.2/LICENSE-MIT
rename : third_party/rust/rayon/src/iter/README.md => third_party/rust/rayon-0.8.2/src/iter/README.md
rename : third_party/rust/rayon/src/iter/internal.rs => third_party/rust/rayon-0.8.2/src/iter/internal.rs
rename : third_party/rust/rayon/tests/compile-fail-unstable/future_escape.rs => third_party/rust/rayon-0.8.2/tests/compile-fail-unstable/future_escape.rs
rename : third_party/rust/rayon/tests/run-pass/sort-panic-safe.rs => third_party/rust/rayon-0.8.2/tests/run-pass/sort-panic-safe.rs
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-core/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-core/LICENSE-MIT
extra : rebase_source : fad67f2d82c7b49554ce9b03fb12da3d4b66a378
2018-02-20 09:05:08 -05:00
Chris Manchester
c94fd30a84 Bug 1440507 - Remove link.py wrapper script for linking xul. r=nalexander
MozReview-Commit-ID: BXrhdPzQ2jy

--HG--
extra : rebase_source : 801b1876af8639996f58a1985d47fb42cc3065a6
2018-02-22 16:03:17 -08:00
Kartikaya Gupta
230d90353f Bug 1438449 - Remove unused feature property from crate override. r=jrmuizel
MozReview-Commit-ID: 6twY57Hg4CC

--HG--
extra : rebase_source : 0bf706089e618aaffdda1e9834d48a84e770ad3f
2018-02-15 04:28:30 -05:00
Ralph Giles
62e62e57a2 Bug 1437351 - Update mp4parse to v0.10.0. r=kinetik
Import v0.10.0 of the mp4parse and mp4parse_capi crates
and update dependencies.

Reduces library size by removing debug tracing in release builds.
Also adds recognition of the ALAC codec, although we don't plan
to support it.

MozReview-Commit-ID: F1bnotCmbDf

--HG--
extra : rebase_source : 55bc014378d7f65fca8af82a9222edd36870b351
2018-02-13 16:58:43 -08:00
Servo VCS Sync
67d1d60ad7 No bug - Revendor rust dependencies 2018-02-14 17:42:57 +00:00
Emilio Cobos Álvarez
199da14cd0 No bug - Revendor rust dependencies. r=me on a CLOSED TREE
MozReview-Commit-ID: 7LSWUCyCxkT


--HG--
rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json
rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml
rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT
rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md
rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs
rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs
rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs
rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs
rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs
rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json
rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml
rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT
rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md
rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs
rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs
rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs
rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs
rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs
rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs
rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs
rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs
rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs
rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs
rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs
rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs
rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs
rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs
rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs
rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs
rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs
rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs
rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs
rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs
rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs
rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs
rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs
rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs
rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs
rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs
rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs
rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json
rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 12:40:42 +01:00
Ciure Andrei
72080bd73c Merge inbound to mozilla-central. a=merge 2018-02-13 00:08:37 +02:00
Franziskus Kiefer
fd68ca633e Bug 1436948 - update cbor lib, r=keeler
Reviewers: keeler

Reviewed By: keeler

Bug #: 1436948

Differential Revision: https://phabricator.services.mozilla.com/D566

--HG--
extra : rebase_source : e9e6e4957cd7bc578d7bc21e6db64c1e8ef170ae
2018-02-12 09:02:03 +01:00
Servo VCS Sync
99dff2319c No bug - Revendor rust dependencies 2018-02-10 18:14:30 +00:00
Servo VCS Sync
03ffcb7b2a No bug - Revendor rust dependencies 2018-02-09 22:19:11 +00:00
Kartikaya Gupta
e1dbbcbce0 Bug 1436058 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: GiRingn0bX1

--HG--
extra : rebase_source : 55e472428534e366a49ccc887f67b8c7836171b1
2018-02-12 11:32:10 -05:00
Servo VCS Sync
33acf03866 No bug - Revendor rust dependencies 2018-02-12 14:07:12 +00:00
Manish Goregaokar
72ed6d355d Bug 1436251 - Set codegen-units=1 in --enable-release; r=glandium
MozReview-Commit-ID: 8kGTFAXfB2i

--HG--
extra : rebase_source : bc1860366646e629deef3c819576d208b1b6cd73
2018-02-06 19:06:03 -08:00
Narcis Beleuzu
eeb7190f9a Merge inbound to mozilla-central. a=merge 2018-02-01 12:05:39 +02:00
Nicholas Nethercote
eeb14c6c69 Bug 1423840 (attempt 2) - Rewrite the prefs parser. r=glandium,Manishearth
The prefs parser has two significant problems.

- It doesn't separate tokenizing from parsing.

- It is implemented as a loop around a big switch on a "current state"
  variable.

As a result, it is hard to understand and modify, slower than it could be, and
in obscure cases (involving comments and whitespace) it fails to parse what
should be valid input.

This patch replaces it with a recursive descent parser (albeit one without any
recursion!) that has separate tokenization. The new parser is easier to
understand and modify, more correct, and has better error messages. It doesn't
do error recovery, but that would be much easier to add than in the old parser.

The new parser also runs about 1.9x faster than the existing parser. (As
measured by parsing greprefs.js's contents from memory 1000 times in
succession, omitting the prefs hash table construction. If the table
construction is included, it's about 1.6x faster.)

The new parser is slightly stricter than the old parser in a few ways.

- Disconcertingly, the old parser allowed arbitrary junk between prefs
  (including at the start and end of the prefs file) so long as that junk
  didn't include any of the following chars: '/', '#', 'u', 's', 'p'. I.e.
  lines like these:

    !foo@bar&pref("prefname", true);
    ticky_pref("prefname", true);       // missing 's' at start
    User_pref("prefname", true);        // should be 'u' at start

  would all be treated the same as this:

    pref("prefname", true);

  The new parser disallows such junk because it isn't necessary and seems like
  an unintentional botch by the old parser.

- The old parser allowed character 0x1a (SUB) between tokens and treated it
  like '\n'.

  The new parser does not allow this character. SUB was used to indicate
  end-of-file (*not* end-of-line) in some old operating systems such as MS-DOS,
  but this doesn't seem necessary today.

- The old parser tolerated (with a warning) invalid escape sequences within
  string literals -- such as "\q" (not a valid escape) and "\x1" and "\u12"
  (both of which have insufficient hex digits) -- accepting them literally.

  The new parser does not tolerate invalid escape sequences because it doesn't
  seem necessary and would complicate things.

- The old parser tolerated character 0x00 (NUL) within string literals; this is
  dangerous because C++ code that manipulates string values with embedded NULs
  will almost certainly consider those chars as end-of-string markers.

  The new parser treats NUL chars as end-of-file, to avoid this danger and
  because it facilitates a significant optimization (described within the
  code).

- The old parser allowed integer literals to overflow, silently wrapping them.

  The new parser treats integer overflow as a parse error. This seems better,
  and it caught existing overflows of places.database.lastMaintenance, in
  testing/profiles/prefs_general.js (bug 1424030) and
  testing/talos/talos/config.py (bug 1434813).

The first of these changes meant that a couple of existing prefs with ";;" at
the end had to be changed (done in the preceding patch).

The minor increase in strictness shouldn't be a problem for default pref files
such as greprefs.js within the application (which we can modify), nor for
app-written prefs files such as prefs.js. It could affect user-written prefs
files such as user.js; the experience above suggests that integer overflow and
";;" are the most likely problems in practice. In my opinion, the risk here is
acceptable.

The new parser also does a better job of tracking line numbers because it (a)
treats "\r\n" sequences as a single end-of-line marker, and (a) pays attention
to end-of-line sequences within string literals.

Finally, the patch adds thorough tests of both valid and invalid syntax.

MozReview-Commit-ID: JD3beOQl4AJ
2018-02-01 16:21:47 +11:00
Servo VCS Sync
47d56b8748 No bug - Revendor rust dependencies 2018-02-01 04:40:14 +00:00
Cosmin Sabou
9efa17a39e Backed out 2 changesets (bug 1423840) for mass Talos failures due to forbidden connections. CLOSED TREE
Backed out changeset e8b798a5205a (bug 1423840)
Backed out changeset e500592d3551 (bug 1423840)
2018-02-01 03:05:08 +02:00
Nicholas Nethercote
67e80b725b Bug 1423840 - Rewrite the prefs parser. r=glandium,Manishearth
The prefs parser has two significant problems.

- It doesn't separate tokenizing from parsing.

- It is implemented as a loop around a big switch on a "current state"
  variable.

As a result, it is hard to understand and modify, slower than it could be, and
in obscure cases (involving comments and whitespace) it fails to parse what
should be valid input.

This patch replaces it with a recursive descent parser (albeit one without any
recursion!) that has separate tokenization. The new parser is easier to
understand and modify, more correct, and has better error messages. It doesn't
do error recovery, but that would be much easier to add than in the old parser.

The new parser also runs about 1.9x faster than the existing parser. (As
measured by parsing greprefs.js's contents from memory 1000 times in
succession, omitting the prefs hash table construction. If the table
construction is included, it's about 1.6x faster.)

The new parser is slightly stricter than the old parser in a few ways.

- Disconcertingly, the old parser allowed arbitrary junk between prefs
  (including at the start and end of the prefs file) so long as that junk
  didn't include any of the following chars: '/', '#', 'u', 's', 'p'. I.e.
  lines like these:

    !foo@bar&pref("prefname", true);
    ticky_pref("prefname", true);       // missing 's' at start
    User_pref("prefname", true);        // should be 'u' at start

  would all be treated the same as this:

    pref("prefname", true);

  The new parser disallows such junk because it isn't necessary and seems like
  an unintentional botch by the old parser.

- The old parser allowed character 0x1a (SUB) between tokens and treated it
  like '\n'.

  The new parser does not allow this character. SUB was used to indicate
  end-of-file (*not* end-of-line) in some old operating systems such as MS-DOS,
  but this doesn't seem necessary today.

- The old parser tolerated (with a warning) invalid escape sequences within
  string literals -- such as "\q" (not a valid escape) and "\x1" and "\u12"
  (both of which have insufficient hex digits) -- accepting them literally.

  The new parser does not tolerate invalid escape sequences because it doesn't
  seem necessary and would complicate things.

- The old parser tolerated character 0x00 (NUL) within string literals; this is
  dangerous because C++ code that manipulates string values with embedded NULs
  will almost certainly consider those chars as end-of-string markers.

  The new parser treats NUL chars as end-of-file, to avoid this danger and
  because it facilitates a significant optimization (described within the
  code).

- The old parser allowed integer literals to overflow, silently wrapping them.

  The new parser treats integer overflow as a parse error. This seems better,
  and it caught an existing overflow in testing/profiles/prefs_general.js, for
  places.database.lastMaintenance (see bug 1424030).

The first of these changes meant that a couple of existing prefs with ";;" at
the end had to be changed (done in the preceding patch).

The minor increase in strictness shouldn't be a problem for default pref files
such as greprefs.js within the application (which we can modify), nor for
app-written prefs files such as prefs.js. It could affect user-written prefs
files such as user.js; the experience above suggests that ";;" is the most
likely problem in practice. In my opinion, the risk here is acceptable.

The new parser also does a better job of tracking line numbers because it (a)
treats "\r\n" sequences as a single end-of-line marker, and (a) pays attention
to end-of-line sequences within string literals.

Finally, the patch adds thorough tests of both valid and invalid syntax.

MozReview-Commit-ID: 8EYWH7KxGG
* * *
[mq]: win-fix

MozReview-Commit-ID: 91Bxjfghqfw

--HG--
extra : rebase_source : a8773413e5d68c33e4329df6819b6e1f82c22b85
2017-12-03 00:26:36 +11:00
Kartikaya Gupta
063a144958 Bug 1433567 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: HpOX4MTdU9Z

--HG--
extra : rebase_source : c9da41ea1c96097fb51e55d5227cde66e5e6c47b
2018-01-30 10:22:30 -05:00
Bryce Van Dyk
d6fa7ea4fd Bug 1432869 - Update locks to reflect new cubeb-rs, and audioipc versions. r=rillian
MozReview-Commit-ID: Hj9rcfHnO1L

--HG--
extra : rebase_source : c2366103116f8882d029caa4582b500e212f1406
2018-01-25 17:18:08 -05:00
marxin
8b80e36d01 Bug 1433383 Properly detect -flto flag. r=froydnj 2018-01-26 00:57:00 +02:00
Dzmitry Malyshau
a8e2dce594 Bug 1433139 - Enable the WR capture feature in webrender_bindings. r=kats
MozReview-Commit-ID: 2dJMVMto5Ly
2018-01-25 14:49:36 -05:00
Narcis Beleuzu
9279994eae Merge inbound to mozilla-central. a=merge 2018-01-24 23:56:14 +02:00
Kartikaya Gupta
ecdb4869cb Bug 1431776 - Update Cargo lockfiles and re-vendor rust dependencies r=jrmuizel
MozReview-Commit-ID: CGFjsnpjrDe

--HG--
extra : rebase_source : 1aab040b85371a509632dbe6a511aa90ee3d050d
2018-01-24 09:16:36 -05:00
Henri Sivonen
733ced6d8d Bug 1431356 - Update encoding_rs to 0.7.2 and simd to 0.2.1. r=emk.
MozReview-Commit-ID: Lp3zyF2rLxN

--HG--
extra : rebase_source : 81b515206ca5d28623cbaead16244ef258da2088
2018-01-18 12:26:21 +02:00
Nika Layzell
94e3d3cb1b Bug 1293362 - Part 2: Add skeleton crates for xpcom bindings, r=froydnj
MozReview-Commit-ID: H5nxsk4cg2E
2018-01-23 17:27:23 -05:00
Dan Glastonbury
cd2eb5e8a4 Bug 1428952 - P4: Vendor rust crates. r=rillian
MozReview-Commit-ID: 7UQPozxpmC1

--HG--
extra : rebase_source : fc27016f0e51a9f4d1f09f842da7943f65070508
2017-11-06 16:26:30 +10:00