Instantly share code, notes, and snippets.


Raw Trait Objects 1.0

This is the sketch of a proposal for making it possible to manipulate some trait objects in stable rust.

Proposed new/stabilized API:

mod std::raw {
View patch.diff
diff --git a/gfx/webrender/src/glyph_rasterizer/ b/gfx/webrender/src/glyph_rasterizer/
index abdc2a7736f8..b75ae10cd293 100644
--- a/gfx/webrender/src/glyph_rasterizer/
+++ b/gfx/webrender/src/glyph_rasterizer/
@@ -5,7 +5,7 @@
//! Module only available when pathfinder is deactivated when webrender is
//! compiled regularly (i.e. any configuration without feature = "pathfinder")
-use api::{ImageData, ImageDescriptor, ImageFormat};
+use api::{DirtyRect, ImageData, ImageDescriptor, ImageFormat};

Properly Running MotionMark On Firefox

TL;DR: to get accurate/useful numbers for MotionMark in Firefox you must set these flags in about:config and restart your browser:

layers.offmainthreadcomposition.frame-rate = 0 (defaults to -1)
privacy.reduceTimerPrecision = false (defaults to true)

The first enables "ASAP mode" which tells the browser to paint frames as much as possible, and the second disables an important Spectre security mitigation that reduces the precision.

View patch.diff
diff --git a/gfx/webrender/src/ b/gfx/webrender/src/
index 525e79e837e2..3498892e1139 100644
--- a/gfx/webrender/src/
+++ b/gfx/webrender/src/
@@ -1029,6 +1029,15 @@ impl<'a> DisplayListFlattener<'a> {
+ let mut ancestor_is_backface_visible = is_backface_visible;
+ for sc in self.sc_stack.iter().rev() {

WR triage

Here is a quick explanation of how webrender does triage

Untriaged bugs can be found here.

Triaging a wr bug means setting a priority and marking it as blocking a given stage.

In doubt? Go with "stage-wr-trains P2", since it will probably get retriaged once we're further along.

View patch.diff
git diff
diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list
index 683c5d3..2cbd464 100644
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -867,7 +867,7 @@ fuzzy-if(skiaContent,0-2,0-5) == 402629-3.html 402629-3-ref.html
== 403129-3.html 403129-3-ref.html
== 403129-4.html 403129-4-ref.html
random == 403134-1.html 403134-1-ref.html # bug 405377
-== 403181-1.xml 403181-1-ref.xml
View libc.html
<html lang="en">
<head><meta charset="utf-8"></head>
<h4>Downloads over the last 90 days</h4>
<div style="height:5400px"></div>

Swift Ownership Manifesto TL;DR

Most of the manifesto is background and detailed definitions -- if you're confused or want details, read the manifesto!

Note also that manifestos aren't complete proposals -- syntax and details may change!

One piece of background: inout is kinda complicated because it can be used on computed properties -- foo(&val.x) might be sugar for

View mozglue.sym
MODULE windows x86 61D67A008E2F40A78217CEB5E6DB3E131 mozglue.pdb
INFO CODE_ID 5B57751B2A000 mozglue.dll
FILE 2 C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.13.26128/include/typeinfo
FILE 3 C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.13.26128/include/vcruntime_typeinfo.h
FILE 4 C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt/corecrt_wstdio.h
FILE 5 C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.13.26128/include/xfacet
FILE 6 C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um/processthreadsapi.h


methods like push on Vec don't provide anyway for the caller to handle OOM. (I will be using push as substitute for "all allocating APIs" for simplicity here)

  • Today we always abort.
  • Moving to unwinding is problematic
    • unsafe code may be exception unsafe on the basis of current strategy