Closed
Bug 1412486
Opened 8 years ago
Closed 8 years ago
stylo: Upgrade bindgen to 0.31
Categories
(Core :: CSS Parsing and Computation, enhancement)
Core
CSS Parsing and Computation
Tracking
()
RESOLVED
FIXED
mozilla58
People
(Reporter: xidorn, Assigned: emilio)
References
(Blocks 2 open bugs)
Details
Attachments
(2 files, 5 obsolete files)
Per bug 1412077 comment 5, upgrade bindgen to the latest version should improve the build time of style crate by quite a bit.
Assignee | ||
Comment 1•8 years ago
|
||
Taking this since one contributor is trying to do the Servo change and I promised to help.
Assignee: nobody → emilio
Reporter | ||
Comment 2•8 years ago
|
||
But there is really nothing about Servo change... It has to be verified with a Gecko build.
Does the contributor has a working Stylo build?
Assignee | ||
Comment 3•8 years ago
|
||
It does not. For now, blockers:
- https://github.com/rust-lang-nursery/rust-bindgen/pull/1111 (actually not a blocker I guess, but nice)
- https://github.com/rust-lang-nursery/rust-bindgen/pull/1112
- https://github.com/rust-lang-nursery/rust-bindgen/pull/1113 (fixed by https://github.com/rust-lang-nursery/rust-bindgen/pull/1114)
After those merge I'll try again, I don't want to remember how to do all the [replace] setup.
Assignee | ||
Comment 4•8 years ago
|
||
Last remaining blocking issue is https://github.com/rust-lang-nursery/rust-bindgen/issues/1118
Assignee | ||
Comment 5•8 years ago
|
||
I'm pushing a WIP now because I want to pull this from the office tomorrow.
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Reporter | ||
Comment 14•8 years ago
|
||
mozreview-review |
Comment on attachment 8923220 [details]
Bug 1412486: Update bindgen.
https://reviewboard.mozilla.org/r/194362/#review199768
Cancel review for wildcards in `rusty-enums`.
::: layout/style/ServoBindings.toml:134
(Diff revision 2)
> + "nsIDocument_Type",
> + "nsCSSUnit",
> + "nsCSSPropertyID",
> + "nsCSSCounterDesc",
> + "nsMediaExpression_Range",
> + "nsMediaFeature.*",
You mean `nsMediaFeature::RangeType` and `nsMediaFeature::ValueType`? I think we should list them out explicitly here. Also it doesn't seem to me `nsMediaFeature::RequirementFlags` should be a rust enum. It should probably be put in `bitfield-enums` section.
::: layout/style/ServoBindings.toml:142
(Diff revision 2)
> + # FIXME: use proper namespaces and such when
> + # https://github.com/rust-lang-nursery/rust-bindgen/issues/1125
> + # is fixed.
> + "nsStyleImageLayers_LayerType",
> + "nsStyleImageOrientation_Angles",
> + "nsTimingFunction.*",
Same here, I think we should have `nsTimingFunction::Type` and `nsTimingFunction::Keyword` listed explicitly.
::: layout/style/ServoBindings.toml:143
(Diff revision 2)
> + # https://github.com/rust-lang-nursery/rust-bindgen/issues/1125
> + # is fixed.
> + "nsStyleImageLayers_LayerType",
> + "nsStyleImageOrientation_Angles",
> + "nsTimingFunction.*",
> + ".*ServoElementSnapshot.*",
This is really unclear to me what is covered here... `ServoElementSnapshotFlags` should probably be in `bitfield-enums`, and I don't find anything else.
::: layout/style/ServoBindings.toml:144
(Diff revision 2)
> + # is fixed.
> + "nsStyleImageLayers_LayerType",
> + "nsStyleImageOrientation_Angles",
> + "nsTimingFunction.*",
> + ".*ServoElementSnapshot.*",
> + ".*Side",
It doesn't seem to me that we have that many `Side` enums... [1] Could you also just list what we need here?
[1] https://searchfox.org/mozilla-central/search?q=enum+.*Side%5Cb&case=true®exp=true&path=.h%24
::: layout/style/ServoBindings.toml:145
(Diff revision 2)
> + ".*PlaybackDirection",
> + ".*FillMode",
> + ".*HalfCorner",
Why arbitrary prefix? Because of namespace?
::: layout/style/ServoBindings.toml:148
(Diff revision 2)
> + "Type",
> + "Flags",
What `Type` and `Flags`?
::: layout/style/ServoBindings.toml:150
(Diff revision 2)
> + ".*URLMatchingFunction",
> + ".*Style.*",
> + ".*ColorID",
> + ".*BooleanFlag",
> + ".*CSSPseudoElementType",
> + ".*CSSPseudoClassType",
> + ".*FontID",
> + ".*MatrixTransformOperator",
Well... I'm really not a big fan of using wildcard like this... Unless there are really a large number of things with restrictive common pattern, please just list them out.
::: servo/components/style/build_gecko.rs:390
(Diff revision 2)
> }
> }
>
> let builder = Builder::get_initial_builder()
> .enable_cxx_namespaces()
> + .rustfmt_bindings(false)
If bindgen is messing code further... we probably want to integrate rustfmt at some point... That would require some bootstrap and tooltool change I guess. Probably worth filing a bug for.
::: servo/components/style/build_gecko.rs:426
(Diff revision 2)
> + .map(|s| format!("\\s*{}\\s*", s))
> + .collect::<Vec<_>>()
> + .join("::");
> +
> fixups.push(Fixup {
> - pat: format!("\\broot::{}\\b", gecko),
> + pat: format!("\\broot\\s*::\\s*{}\\b", gecko),
With these many backslashes, it would probably be better to just use raw string literal `r"\broot\s*::\s*::{}\b"?
::: servo/components/style/build_gecko.rs:514
(Diff revision 2)
> // that has been fixed in clang 4.0+. When we switch people
> // to libclang 4.0, we can remove this.
> .handle_table_items("array-types", |builder, item| {
> let cpp_type = item["cpp-type"].as_str().unwrap();
> let rust_type = item["rust-type"].as_str().unwrap();
> - builder.hide_type(format!("nsTArrayBorrowed_{}", cpp_type))
> + builder
Is it because those types are not in whitelist so we don't need to hide them at all?
Attachment #8923220 -
Flags: review?(xidorn+moz)
Reporter | ||
Comment 15•8 years ago
|
||
mozreview-review |
Comment on attachment 8923338 [details]
Bug 1412486: Don't force ComputedValues to derive Debug.
https://reviewboard.mozilla.org/r/194538/#review199774
Attachment #8923338 -
Flags: review?(xidorn+moz) → review+
Reporter | ||
Comment 16•8 years ago
|
||
mozreview-review |
Comment on attachment 8923339 [details]
Bug 1412486: Make the replacement for UniquePtr not have a deleter parameter.
https://reviewboard.mozilla.org/r/194540/#review199776
Attachment #8923339 -
Flags: review?(xidorn+moz) → review+
Reporter | ||
Comment 17•8 years ago
|
||
mozreview-review |
Comment on attachment 8923340 [details]
Bug 1412486: Unconditionally implement Debug for RefPtr.
https://reviewboard.mozilla.org/r/194542/#review199780
::: commit-message-d26df:3
(Diff revision 1)
> +Bindgen doesn't know how to derive debug for a Gecko font family list. Hopefully
> +it doesn't need to.
It doesn't seem to me there is anything particularly hard to derive `Debug` for font family list... Is this a bindgen bug?
::: servo/components/style/gecko_bindings/sugar/refptr.rs
(Diff revision 1)
> /// Trait for types which can be shared across threads in RefPtr.
> pub unsafe trait ThreadSafeRefCounted: RefCounted {}
>
> /// A custom RefPtr implementation to take into account Drop semantics and
> /// a bit less-painful memory management.
> -#[derive(Debug)]
Also I think this is really a Rust bug to require `T: Debug` here... Pointers are unconditionally `Debug`. Maybe Rust always requires all type params to be `Debug` to derive `Debug` for a generic type? That restriction doesn't really make sense to me...
Attachment #8923340 -
Flags: review?(xidorn+moz) → review+
Reporter | ||
Comment 18•8 years ago
|
||
mozreview-review |
Comment on attachment 8923341 [details]
Bug 1412486: Update bindgen to 0.31.2.
https://reviewboard.mozilla.org/r/194544/#review199782
Attachment #8923341 -
Flags: review?(xidorn+moz) → review+
Reporter | ||
Comment 19•8 years ago
|
||
mozreview-review |
Comment on attachment 8923341 [details]
Bug 1412486: Update bindgen to 0.31.2.
https://reviewboard.mozilla.org/r/194544/#review199784
::: servo/components/style/Cargo.toml:82
(Diff revision 1)
> kernel32-sys = "0.2"
>
> [build-dependencies]
> lazy_static = "0.2"
> log = "0.3"
> -bindgen = { version = "0.29.1", optional = true }
> +bindgen = { version = "0.31.2", optional = true }
Is it possible for us to update bindgen in `js/rust/Cargo.toml` at the same time so that we stop having duplicate bindgens in tree?
Maybe this can be in a separate bug if that would also be some non-trivial work...
Reporter | ||
Comment 20•8 years ago
|
||
mozreview-review |
Comment on attachment 8923343 [details]
Bug 1412486: Avoid using deprecated bindgen methods.
https://reviewboard.mozilla.org/r/194548/#review199788
Attachment #8923343 -
Flags: review?(xidorn+moz) → review+
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Reporter | ||
Comment 28•8 years ago
|
||
mozreview-review |
Comment on attachment 8923220 [details]
Bug 1412486: Update bindgen.
https://reviewboard.mozilla.org/r/194362/#review199976
Attachment #8923220 -
Flags: review?(xidorn+moz) → review+
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Assignee | ||
Updated•8 years ago
|
Attachment #8923338 -
Attachment is obsolete: true
Assignee | ||
Updated•8 years ago
|
Attachment #8923340 -
Attachment is obsolete: true
Assignee | ||
Updated•8 years ago
|
Attachment #8923341 -
Attachment is obsolete: true
Assignee | ||
Updated•8 years ago
|
Attachment #8923343 -
Attachment is obsolete: true
Assignee | ||
Updated•8 years ago
|
Attachment #8923342 -
Attachment is obsolete: true
Comment 31•8 years ago
|
||
status-firefox57=wontfix unless someone thinks this bug should block 57
status-firefox57:
--- → wontfix
Comment 32•8 years ago
|
||
Pushed by ecoal95@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/46a4ddbc0541
Make the replacement for UniquePtr not have a deleter parameter. r=xidorn
https://hg.mozilla.org/integration/autoland/rev/b21ef5bb00d3
Update bindgen. r=xidorn
Comment 33•8 years ago
|
||
Pushed by ecoal95@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/d480e8818314
Revendor rust dependencies. r=me
Comment 34•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/46a4ddbc0541
https://hg.mozilla.org/mozilla-central/rev/b21ef5bb00d3
https://hg.mozilla.org/mozilla-central/rev/d480e8818314
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla58
You need to log in
before you can comment on or make changes to this bug.
Description
•