Commit Graph

389 Commits

Author SHA1 Message Date
Nika Layzell
fa90e183ed 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.
2018-04-10 17:49:50 -04:00
Matt Brubeck
fd5ba6a5e3 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
2018-04-05 15:51:14 -07:00
Dan Glastonbury
93b2f3cb5e Bug 1432779 - Rust vendor. r=jya
MozReview-Commit-ID: 5FQjIPBWTEZ
2018-03-24 10:57:58 +01:00
Emilio Cobos Álvarez
1980d9800b 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
96a3c6af7f 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
365f932cec 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
9a71bf8a87 Bug 1379265 - Add C API for rsdparsa; r=rillian
MozReview-Commit-ID: FdhpTT5wzwI
2017-06-30 12:54:12 -07:00
Jan Beich
0c484d0391 Bug 1442753 - Use in-tree copy of cubeb-sys even when cubeb-remoting is disabled. r=kamidphish
MozReview-Commit-ID: 3dGtrSqr9HW
2018-03-05 03:38:33 +00:00
Matt Brubeck
c2754a98c0 Bug 1381576 - Use a Cargo workspace for rust crates. r=ted
MozReview-Commit-ID: K6B9SifddXu
2018-03-01 14:33:35 -08:00
Emilio Cobos Álvarez
0608c7b54a No bug: Update bindgen to 0.33. r=nox on a CLOSED TREE
MozReview-Commit-ID: 4PgOmtt3zrg
2018-03-02 20:30:14 +01:00
shindli
ac7d5da2a8 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
b8a0367eed Bug 1381576 - Use a Cargo workspace for rust crates. r=ted
MozReview-Commit-ID: K6B9SifddXu
2018-03-01 14:33:35 -08:00
Emilio Cobos Álvarez
68d91381db Bug 1432153: Update bindgen. r=xidorn
on a CLOSED TREE.

MozReview-Commit-ID: BJH6Y58oYtk
2018-03-02 15:49:56 +01:00
Kartikaya Gupta
42b16028e1 Bug 1440664 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: IZncD4fgDk7
2018-03-01 16:51:58 -05:00
Servo VCS Sync
e875f9a769 No bug - Revendor rust dependencies 2018-02-28 20:07:52 +00:00
Servo VCS Sync
2946a01ddb No bug - Revendor rust dependencies 2018-02-28 10:03:41 +00:00
Servo VCS Sync
29a6ca8bb3 No bug - Revendor rust dependencies 2018-02-27 06:13:30 +00:00
Dan Glastonbury
1631c972af Bug 1440538 - P5: Vendor rust crates. r=rillian
MozReview-Commit-ID: 5YkwigTZxYG
2018-02-13 15:05:37 +10:00
Ralph Giles
63daf4f595 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
2018-02-22 11:58:50 -08:00
Csoregi Natalia
8782e681b5 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
Paul Ellenbogen
297dfa111d Bug 1379265 - Add C API for rsdparsa; r=rillian
MozReview-Commit-ID: FdhpTT5wzwI
2017-06-30 12:54:12 -07:00
Matt Brubeck
e8525e2ca3 Bug 1341102 - Update Cargo.lock files 2018-02-21 17:49:38 -08:00
Kartikaya Gupta
eb91003d5d Bug 1438892 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: wsncokjtul
2018-02-20 09:05:08 -05:00
Kartikaya Gupta
bee2c113e6 Bug 1438449 - Remove unused feature property from crate override. r=jrmuizel
MozReview-Commit-ID: 6twY57Hg4CC
2018-02-15 04:28:30 -05:00
Ralph Giles
74cb357e19 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
2018-02-13 16:58:43 -08:00
Servo VCS Sync
bd82d69031 No bug - Revendor rust dependencies 2018-02-14 17:42:57 +00:00
Emilio Cobos Álvarez
7fd3684048 No bug - Revendor rust dependencies. r=me on a CLOSED TREE
MozReview-Commit-ID: 7LSWUCyCxkT
2018-02-14 12:40:42 +01:00
Ciure Andrei
d840628733 Merge inbound to mozilla-central. a=merge 2018-02-13 00:08:37 +02:00
Franziskus Kiefer
0b05b8ecac Bug 1436948 - update cbor lib, r=keeler
Reviewers: keeler

Reviewed By: keeler

Bug #: 1436948

Differential Revision: https://phabricator.services.mozilla.com/D566
2018-02-12 09:02:03 +01:00
Servo VCS Sync
b904f8c610 No bug - Revendor rust dependencies 2018-02-10 18:14:30 +00:00
Servo VCS Sync
820f165cf2 No bug - Revendor rust dependencies 2018-02-09 22:19:11 +00:00
Kartikaya Gupta
2d17adcd03 Bug 1436058 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: GiRingn0bX1
2018-02-12 11:32:10 -05:00
Servo VCS Sync
021b490e7d No bug - Revendor rust dependencies 2018-02-12 14:07:12 +00:00
Manish Goregaokar
1e5abab110 Bug 1436251 - Set codegen-units=1 in --enable-release; r=glandium
MozReview-Commit-ID: 8kGTFAXfB2i
2018-02-06 19:06:03 -08:00
Narcis Beleuzu
d12a42e90a Merge inbound to mozilla-central. a=merge 2018-02-01 12:05:39 +02:00
Nicholas Nethercote
76937b2508 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
b44795facf No bug - Revendor rust dependencies 2018-02-01 04:40:14 +00:00
Cosmin Sabou
891a718f46 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
64fe3185f3 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
2017-12-03 00:26:36 +11:00
Kartikaya Gupta
731dd7586e Bug 1433567 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: HpOX4MTdU9Z
2018-01-30 10:22:30 -05:00
Bryce Van Dyk
641f3308a2 Bug 1432869 - Update locks to reflect new cubeb-rs, and audioipc versions. r=rillian
MozReview-Commit-ID: Hj9rcfHnO1L
2018-01-25 17:18:08 -05:00
Dzmitry Malyshau
1714fccc79 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
427a1f4a33 Merge inbound to mozilla-central. a=merge 2018-01-24 23:56:14 +02:00
Kartikaya Gupta
52168fd71c Bug 1431776 - Update Cargo lockfiles and re-vendor rust dependencies r=jrmuizel
MozReview-Commit-ID: CGFjsnpjrDe
2018-01-24 09:16:36 -05:00
Henri Sivonen
dca0d5c4c7 Bug 1431356 - Update encoding_rs to 0.7.2 and simd to 0.2.1. r=emk.
MozReview-Commit-ID: Lp3zyF2rLxN
2018-01-18 12:26:21 +02:00
Nika Layzell
83be5d0e92 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
2f485b4d77 Bug 1428952 - P4: Vendor rust crates. r=rillian
MozReview-Commit-ID: 7UQPozxpmC1
2017-11-06 16:26:30 +10:00
Emilio Cobos Álvarez
7cb1086654 Bug 1432134: Update bindgen. r=SimonSapin
On a CLOSED TREE.

MozReview-Commit-ID: GXHw7KcCLN9
2018-01-22 15:22:46 +01:00
Kartikaya Gupta
444d37987e Bug 1430829 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: GbEO29Hy9h6
2018-01-19 12:33:03 -05:00
Dan Glastonbury
72486006f2 Bug 1430996 - P1: Update cubeb-pulse-rs to commit cb7141e. r=kinetik
MozReview-Commit-ID: 2wrPNI9rvKF
2018-01-17 15:24:43 +10:00