Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce a phantom type to prevent script from unsafely accessing the layout data #466

Merged
merged 5 commits into from May 30, 2013

Conversation

@pcwalton
Copy link
Contributor

pcwalton commented May 22, 2013

See the explanation on the commit for more detail.

r? @metajack

@metajack
Copy link
Contributor

metajack commented May 22, 2013

This is r+ but waiting on previous pull request to clear.

@metajack
Copy link
Contributor

metajack commented May 24, 2013

@pcwalton this needs a rebase

@metajack
Copy link
Contributor

metajack commented May 25, 2013

r+

pcwalton added 5 commits May 20, 2013
This is preparation for removing the `servo-` prefixes from the various
Servo components.
…data directly.

Nodes are now parameterized over a "View" type. The particular View type
determines which methods can be called. Layout data accessors and mutators are
only accessible to nodes with a LayoutView. The only way to convert a
`Node<ScriptView>` to a `Node<LayoutView>` is through a transmutation, which is
done at the moment the layout task receives nodes. (This should be factored
better to contain the unsafety.)

We should also lock down DOM node mutation to the ScriptView to forbid data
races, but this patch doesn't do that.

This also reduces coupling between DOM and layout. Soon I would like to move
the DOM into its own crate, and this is a step on the way of doing that.
@pcwalton

This comment has been minimized.

Copy link
Owner Author

pcwalton commented on 83e1bd8 May 28, 2013

r+

This comment has been minimized.

Copy link

metajack replied May 29, 2013

@bors: retry

This comment has been minimized.

Copy link

metajack replied May 30, 2013

@bors: retry

@bors-servo

This comment has been minimized.

Copy link
Contributor

bors-servo commented on 83e1bd8 May 28, 2013

saw approval from pcwalton
at pcwalton@83e1bd8

This comment has been minimized.

Copy link
Contributor

bors-servo replied May 28, 2013

merging pcwalton/servo/phantom-type = 83e1bd8 into auto

This comment has been minimized.

Copy link
Contributor

bors-servo replied May 28, 2013

pcwalton/servo/phantom-type = 83e1bd8 merged ok, testing candidate = c4fccb4

This comment has been minimized.

This comment has been minimized.

Copy link
Contributor

bors-servo replied May 29, 2013

saw approval from pcwalton
at pcwalton@83e1bd8

This comment has been minimized.

Copy link
Contributor

bors-servo replied May 30, 2013

saw approval from pcwalton
at pcwalton@83e1bd8

This comment has been minimized.

Copy link
Contributor

bors-servo replied May 30, 2013

merging pcwalton/servo/phantom-type = 83e1bd8 into auto

This comment has been minimized.

Copy link
Contributor

bors-servo replied May 30, 2013

pcwalton/servo/phantom-type = 83e1bd8 merged ok, testing candidate = 90b01df

This comment has been minimized.

This comment has been minimized.

Copy link
Contributor

bors-servo replied May 30, 2013

fast-forwarding master to auto = 90b01df

bors-servo pushed a commit that referenced this pull request May 28, 2013
See the explanation on the commit for more detail.

r? @metajack
bors-servo pushed a commit that referenced this pull request May 29, 2013
See the explanation on the commit for more detail.

r? @metajack
bors-servo pushed a commit that referenced this pull request May 30, 2013
See the explanation on the commit for more detail.

r? @metajack
@bors-servo bors-servo merged commit 83e1bd8 into servo:master May 30, 2013
1 check passed
1 check passed
default all tests passed
glennw pushed a commit to glennw/servo that referenced this pull request Jan 16, 2017
Change linux to unix

[Works on FreeBSD](https://unrelenting.technology/notes/2016-10-21-21-16-04)!

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/webrender/466)
<!-- Reviewable:end -->
@jdm jdm mentioned this pull request Nov 5, 2019
bors-servo added a commit that referenced this pull request Apr 24, 2020
Bump cbindgen from 0.9.1 to 0.14.1

Bumps [cbindgen](https://github.com/eqrion/cbindgen) from 0.9.1 to 0.14.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/eqrion/cbindgen/blob/master/CHANGES">cbindgen's changelog</a>.</em></p>
<blockquote>
<h2>0.14.1</h2>
<pre><code> * Handle mangling pointers. ([#508](eqrion/cbindgen#508))
 * Unconditionally generate a return statement in partialeq implementations. ([#509](eqrion/cbindgen#509))
</code></pre>
<h2>0.14.0</h2>
<pre><code> * Minor tweak at how [export.exclude] is handled to allow excluding
   generic instantiations in C mode. ([#501](eqrion/cbindgen#501))
 * Documented cpp_compat option. ([#496](eqrion/cbindgen#496))
 * Fixed a panic when parsing associated constants for a built-in type. ([#494](eqrion/cbindgen#494))
</code></pre>
<h2>0.13.2</h2>
<pre><code> * Constants now have suitable documentation. ([#471](eqrion/cbindgen#471))
 * Fixed some C warnings by emitting void when there are no arguments. ([#470](eqrion/cbindgen#470))
 * Avoids reading cargo.toml when not needed, which can cause panics in workspace situations.
 * Only write `default` cases if the switch is not exhaustive. ([#475](eqrion/cbindgen#475))
 * Some warnings have been refined. ([#477](eqrion/cbindgen#477))
 * Code generation for static arrays has been fixed. ([#479](eqrion/cbindgen#479))
 * Opt-in support for constexpr in constants. ([#481](eqrion/cbindgen#481))
 * Fix C code generation and some warnings when extremely large constants are used. ([#490](eqrion/cbindgen#490))
 * Proper escaping of enum variants and fields. ([#483](eqrion/cbindgen#483))
 * Added support for RefCell (as an opaque type) and Cell. ([#489](eqrion/cbindgen#489))
</code></pre>
<h2>0.13.1</h2>
<pre><code> * Support `#[cfg]` on individual enum variants. ([#469](eqrion/cbindgen#469))
</code></pre>
<h2>0.13.0</h2>
<pre><code> * Support 'swift_name' attributes on generated functions ([#449](eqrion/cbindgen#449))
 * Add [export.pre_body] to config ([#452](eqrion/cbindgen#452))
 * Handle new line in doc attribute ([#454](eqrion/cbindgen#454))
 * Add support for `Self` in tagged enums, structs and unions ([#455](eqrion/cbindgen#455), [#455](eqrion/cbindgen#455), [#456](eqrion/cbindgen#456))
 * Make sentinel variant respect regular config ([#459](eqrion/cbindgen#459))
 * Fix layout of tagged enums with size under some configurations ([#463](eqrion/cbindgen#463))
 * Add an option to allow configuring the order of function names in generated headers ([#466](eqrion/cbindgen#466))
</code></pre>
<h2>0.12.2</h2>
<pre><code> * Fixed version detection with lockfile v2. eqrion/cbindgen#446
 * Added support for export_name on functions. eqrion/cbindgen#447
</code></pre>
<h2>0.12.1</h2>
<pre><code> * Added support for #[repr*64)] on enums. eqrion/cbindgen#441
 * Added support to generate plain enums instead of enum classes for C++. eqrion/cbindgen#443
 * Fixed dependency resolution with lockfile v2. eqrion/cbindgen#438
</code></pre>
</tr></table> ... (truncated)
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/eqrion/cbindgen/commit/0761b9bbe48d01ded1bbec45bbeea5544b3b1002"><code>0761b9b</code></a> Release 0.14.1</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/33d9ecf11f300bd03f431e9f3417c063e681380c"><code>33d9ecf</code></a> Handle mangling pointers.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/0fed9eebc47abcd31e0e69357cd39262c8a5a6cc"><code>0fed9ee</code></a> enum: Unconditionally generate a return statement in partialeq implementations.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/a519f1bda444a0c6c01464296a052d9a05e1d9c4"><code>a519f1b</code></a> Actually use the temp dir for temporary compiled objects.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/4a38a48937264d6ec162b2fd47ffd0e7a091ca72"><code>4a38a48</code></a> Release 0.14.0</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/39bae60ad7ac4711d8fccc0d098ecef98b37d559"><code>39bae60</code></a> Generate test object files in a temporary directory instead of in-tree</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/ec1631f3e47686e6e0c1b7641bb08b0e39c59250"><code>ec1631f</code></a> Allow excluding monomorph structs in C mode.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/6fd245096dcd5c50c1065b4bd6ce62a09df0b39b"><code>6fd2450</code></a> Add missing cpp_compat documentation.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/c265a7562a5ee815057efcc8b1aca31cd3d5318d"><code>c265a75</code></a> parser: Don't panic when finding associated constants to a primitive.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/17d7aad7d07dce8aa665aedbc75c39953afe1600"><code>17d7aad</code></a> Release v0.13.2</li>
<li>Additional commits viewable in <a href="https://github.com/eqrion/cbindgen/compare/v0.9.1...v0.14.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=cbindgen&package-manager=cargo&previous-version=0.9.1&new-version=0.14.1)](https://dependabot.com/compatibility-score/?dependency-name=cbindgen&package-manager=cargo&previous-version=0.9.1&new-version=0.14.1)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

</details>
bors-servo added a commit that referenced this pull request Apr 24, 2020
Bump cbindgen from 0.9.1 to 0.14.1

Bumps [cbindgen](https://github.com/eqrion/cbindgen) from 0.9.1 to 0.14.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/eqrion/cbindgen/blob/master/CHANGES">cbindgen's changelog</a>.</em></p>
<blockquote>
<h2>0.14.1</h2>
<pre><code> * Handle mangling pointers. ([#508](eqrion/cbindgen#508))
 * Unconditionally generate a return statement in partialeq implementations. ([#509](eqrion/cbindgen#509))
</code></pre>
<h2>0.14.0</h2>
<pre><code> * Minor tweak at how [export.exclude] is handled to allow excluding
   generic instantiations in C mode. ([#501](eqrion/cbindgen#501))
 * Documented cpp_compat option. ([#496](eqrion/cbindgen#496))
 * Fixed a panic when parsing associated constants for a built-in type. ([#494](eqrion/cbindgen#494))
</code></pre>
<h2>0.13.2</h2>
<pre><code> * Constants now have suitable documentation. ([#471](eqrion/cbindgen#471))
 * Fixed some C warnings by emitting void when there are no arguments. ([#470](eqrion/cbindgen#470))
 * Avoids reading cargo.toml when not needed, which can cause panics in workspace situations.
 * Only write `default` cases if the switch is not exhaustive. ([#475](eqrion/cbindgen#475))
 * Some warnings have been refined. ([#477](eqrion/cbindgen#477))
 * Code generation for static arrays has been fixed. ([#479](eqrion/cbindgen#479))
 * Opt-in support for constexpr in constants. ([#481](eqrion/cbindgen#481))
 * Fix C code generation and some warnings when extremely large constants are used. ([#490](eqrion/cbindgen#490))
 * Proper escaping of enum variants and fields. ([#483](eqrion/cbindgen#483))
 * Added support for RefCell (as an opaque type) and Cell. ([#489](eqrion/cbindgen#489))
</code></pre>
<h2>0.13.1</h2>
<pre><code> * Support `#[cfg]` on individual enum variants. ([#469](eqrion/cbindgen#469))
</code></pre>
<h2>0.13.0</h2>
<pre><code> * Support 'swift_name' attributes on generated functions ([#449](eqrion/cbindgen#449))
 * Add [export.pre_body] to config ([#452](eqrion/cbindgen#452))
 * Handle new line in doc attribute ([#454](eqrion/cbindgen#454))
 * Add support for `Self` in tagged enums, structs and unions ([#455](eqrion/cbindgen#455), [#455](eqrion/cbindgen#455), [#456](eqrion/cbindgen#456))
 * Make sentinel variant respect regular config ([#459](eqrion/cbindgen#459))
 * Fix layout of tagged enums with size under some configurations ([#463](eqrion/cbindgen#463))
 * Add an option to allow configuring the order of function names in generated headers ([#466](eqrion/cbindgen#466))
</code></pre>
<h2>0.12.2</h2>
<pre><code> * Fixed version detection with lockfile v2. eqrion/cbindgen#446
 * Added support for export_name on functions. eqrion/cbindgen#447
</code></pre>
<h2>0.12.1</h2>
<pre><code> * Added support for #[repr*64)] on enums. eqrion/cbindgen#441
 * Added support to generate plain enums instead of enum classes for C++. eqrion/cbindgen#443
 * Fixed dependency resolution with lockfile v2. eqrion/cbindgen#438
</code></pre>
</tr></table> ... (truncated)
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/eqrion/cbindgen/commit/0761b9bbe48d01ded1bbec45bbeea5544b3b1002"><code>0761b9b</code></a> Release 0.14.1</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/33d9ecf11f300bd03f431e9f3417c063e681380c"><code>33d9ecf</code></a> Handle mangling pointers.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/0fed9eebc47abcd31e0e69357cd39262c8a5a6cc"><code>0fed9ee</code></a> enum: Unconditionally generate a return statement in partialeq implementations.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/a519f1bda444a0c6c01464296a052d9a05e1d9c4"><code>a519f1b</code></a> Actually use the temp dir for temporary compiled objects.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/4a38a48937264d6ec162b2fd47ffd0e7a091ca72"><code>4a38a48</code></a> Release 0.14.0</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/39bae60ad7ac4711d8fccc0d098ecef98b37d559"><code>39bae60</code></a> Generate test object files in a temporary directory instead of in-tree</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/ec1631f3e47686e6e0c1b7641bb08b0e39c59250"><code>ec1631f</code></a> Allow excluding monomorph structs in C mode.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/6fd245096dcd5c50c1065b4bd6ce62a09df0b39b"><code>6fd2450</code></a> Add missing cpp_compat documentation.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/c265a7562a5ee815057efcc8b1aca31cd3d5318d"><code>c265a75</code></a> parser: Don't panic when finding associated constants to a primitive.</li>
<li><a href="https://github.com/eqrion/cbindgen/commit/17d7aad7d07dce8aa665aedbc75c39953afe1600"><code>17d7aad</code></a> Release v0.13.2</li>
<li>Additional commits viewable in <a href="https://github.com/eqrion/cbindgen/compare/v0.9.1...v0.14.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=cbindgen&package-manager=cargo&previous-version=0.9.1&new-version=0.14.1)](https://dependabot.com/compatibility-score/?dependency-name=cbindgen&package-manager=cargo&previous-version=0.9.1&new-version=0.14.1)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

3 participants
You can’t perform that action at this time.