Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upRefactor attribute handling to avoid marshalling attributes from Gecko into Servo #11886
Conversation
highfive
commented
Jun 27, 2016
|
Heads up! This PR modifies the following files:
|
highfive
commented
Jun 27, 2016
|
This isn't ready for review yet, but I want to test the rust-selectors changes. @bors-servo try |
Refactor attribute handling to avoid marshalling attributes from Gecko into Servo This marshaling is slow, because Gecko stores attributes as UTF-16 and does not atomize them in all cases, and it turns out that the need for them in Servo is pretty minimal. With some refactoring across servo and rust-selectors we can fix this.
|
|
|
@bors-servo try |
Refactor attribute handling to avoid marshalling attributes from Gecko into Servo This marshaling is slow, because Gecko stores attributes as UTF-16 and does not atomize them in all cases, and it turns out that the need for them in Servo is pretty minimal. With some refactoring across servo and rust-selectors we can fix this. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11886) <!-- Reviewable:end -->
|
|
|
Tidy failure:
|
|
@bors-servo try |
Refactor attribute handling to avoid marshalling attributes from Gecko into Servo This marshaling is slow, because Gecko stores attributes as UTF-16 and does not atomize them in all cases, and it turns out that the need for them in Servo is pretty minimal. With some refactoring across servo and rust-selectors we can fix this. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11886) <!-- Reviewable:end -->
|
|
|
|
|
|
…ker threads.
… style sharing.
This should just be a helper.
If this is all the information the caller needs, we can get it from gecko without worrying about atomization and string conversions.
Same reasons as the previous patch.
|
@bors-servo r=SimonSapin |
|
|
Refactor attribute handling to avoid marshalling attributes from Gecko into Servo This marshaling is slow, because Gecko stores attributes as UTF-16 and does not atomize them in all cases, and it turns out that the need for them in Servo is pretty minimal. With some refactoring across servo and rust-selectors we can fix this. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11886) <!-- Reviewable:end -->
|
|
|
I rebased my stylo work to servo master, and it seems like the corresponding commits for this have not yet arrived in the master branch of gecko-dev, or anywhere else. I found them in https://bugzilla.mozilla.org/show_bug.cgi?id=1283620 -- could we maintain a separate branch which always builds with servo on Github? i.e. whenever you update a bindings file and it lands, just cherry-pick the relevant gecko commits onto that branch. We can sync it when the commit lands in m-c. |
Well, it's really a symmetric problem right? If we have a logical changeset that's split across the two repos, it may land first on s/s or m-c. In either case, you need to cherry-pick the corresponding changeset for one repo if you want to build tip on the other. Trying to maintain a "live" revision of one repo that builds with the tip of the other is also fraught - either you need one person always paying attention to every landing, or you need multiple people maintaining the branches, leading to coordination problems. The best way I've come up with is to maintain two branches which are known to work with each other, which are the stylo branches. This is obviously not great, because sometimes I get behind and don't get the chance to fast-forward the branches and pick up all the changes (like what happened this week). But until we fix the repo problem, I'm not sure there's a better way. Luckily, that's happening now. :-) |
|
Well, AIUI things land faster in Servo, and we could just hold off on starting the land process in Gecko until it gets r+d in servo. Or vice versa. The "known good" branches should work if we're syncing enough. At the same time, I'm not very fond of landing changes on a Servo master when the changes can't actually be tested -- this is why I'm proposing an extra stylo_tip gecko-dev branch which everyone puts their commits on, with regular rebases and force-pushes. |
bholley commentedJun 27, 2016
•
edited by larsbergstrom
This marshaling is slow, because Gecko stores attributes as UTF-16 and does not atomize them in all cases, and it turns out that the need for them in Servo is pretty minimal. With some refactoring across servo and rust-selectors we can fix this.
This change is