mirror of
https://github.com/servo/servo
synced 2026-04-25 17:15:48 +02:00
Page:
Meeting 2014 09 29
Pages
Adding a new WebIDL binding
Alternative Logo Proposals and Related Swag
Asynchronous WebAssembly compilation project
Austin Oxidation
Autogeneration of style structs
Basic SVG support project
Beginner's guide to rebasing and squashing
Benchmarking
Benchmarks
Bots
Browser Engine Research
Build Errors FAQ
Buildbot administration
Building for Android
Building for Magic Leap
Building for UWP
Building on ARM desktop Linux
Building
CI Services we use
CSS parse error reporting
CSSOM student project
Canvas rendering project
Cargo upgrade service project
Code rust concurrency
Code Review
Code of Conduct
Coding standards
Compiler upgrade recipes
Compositor Layer Design
Contributing
Control Servo using WebDriver
Creating and viewing WARC web archives in Servo
Creating new OpenSSL Windows binary distributions
Cross compiling from linux to mac
Crowbot
Css selector matching meeting 2013 07 19
DOM Design
DOM documentation
DOM missing pieces
Debugging JS web compat issues
Debugging and editing tools
Debugging
Design
Developer tools student project
Devtools CSS errors
Devtools plans
Devtools
Diagnosing SpiderMonkey JIT issues
Eric Atkinson visit 2013 09 10
Events and sundry
Expand HTTP request response monitoring
Fetch improvement project
Firefox Reality release notes
FirefoxReality build
Firewall setup for servo master1
Focus student project
Form validation student project
GSoC project brainstorming
Garbage collected DOM
Getting started with layout
GitHub Labels
Github & Critic PR handling 101
Github workflow
Glossary
Governance
Graphics toolkit integration
HTML parser improvement project
HTMLElement binding conversion
HTTP archive support project
HTTP library requirements
Hawaii Rooting
High priority content for layout
Highfive
HoloLens 2 test plan
Home
How to generate GStreamer binaries for CI
Image load conformance student project
Image maps project
Implement HTML charset parsing project
Implement ImageBitmap project
Implement missing WebAudio automation student project
Implement support for missing XMLHttpRequest APIs
Implement worker modules
Implementing a web standard (RGSoC)
Improve specification conformance of unicode bidi library
Incremental flow tree construction
Infrastructure
Integrate xml5ever
Intern project brainstorming
Intern projects
JS objects, wrappers, and cross origin concerns 2013 08 07
Layout 2020
Layout Overview
Layout resources
Layout revamp ideas
Leo meyerovich visit 2013 07 22
Linux sandboxing
London Oxidation
London Security
Meeting 2014 10 27
Meeting 2014 12 08
Meeting 2012 02 08
Meeting 2012 02 16
Meeting 2012 07 20
Meeting 2013 04 01
Meeting 2013 04 15
Meeting 2013 04 22
Meeting 2013 04 29
Meeting 2013 05 06
Meeting 2013 05 13
Meeting 2013 05 20
Meeting 2013 06 03
Meeting 2013 06 10
Meeting 2013 06 14
Meeting 2013 06 17
Meeting 2013 06 24
Meeting 2013 07 01
Meeting 2013 07 15
Meeting 2013 07 22
Meeting 2013 07 29
Meeting 2013 08 05
Meeting 2013 08 12
Meeting 2013 08 19
Meeting 2013 09 09
Meeting 2013 09 16
Meeting 2013 09 23
Meeting 2013 09 30
Meeting 2013 10 14
Meeting 2013 10 21
Meeting 2013 10 28
Meeting 2013 11 04
Meeting 2013 11 18
Meeting 2013 11 25
Meeting 2013 12 02
Meeting 2013 12 09
Meeting 2013 12 16
Meeting 2014 01 06
Meeting 2014 01 13
Meeting 2014 01 21
Meeting 2014 01 27
Meeting 2014 02 03
Meeting 2014 02 10
Meeting 2014 02 24
Meeting 2014 03 10
Meeting 2014 03 17
Meeting 2014 03 24
Meeting 2014 03 31
Meeting 2014 04 07
Meeting 2014 04 14
Meeting 2014 04 21
Meeting 2014 04 28
Meeting 2014 05 05
Meeting 2014 05 13
Meeting 2014 05 19
Meeting 2014 06 09
Meeting 2014 06 17
Meeting 2014 06 23
Meeting 2014 06 30
Meeting 2014 07 07
Meeting 2014 07 14
Meeting 2014 07 21
Meeting 2014 07 29
Meeting 2014 08 04
Meeting 2014 08 11
Meeting 2014 08 12
Meeting 2014 08 18
Meeting 2014 08 25
Meeting 2014 09 08
Meeting 2014 09 15
Meeting 2014 09 22
Meeting 2014 09 29
Meeting 2014 10 06
Meeting 2014 10 13
Meeting 2014 10 20
Meeting 2014 11 10
Meeting 2014 11 17
Meeting 2014 11 24
Meeting 2014 12 15
Meeting 2015 01 05
Meeting 2015 01 12
Meeting 2015 01 26
Meeting 2015 02 09
Meeting 2015 02 23
Meeting 2015 03 02
Meeting 2015 03 16
Meeting 2015 03 30
Meeting 2015 04 06
Meeting 2015 04 13
Meeting 2015 04 27
Meeting 2015 05 04
Meeting 2015 05 11
Meeting 2015 05 18
Meeting 2015 06 01
Meeting 2015 06 08
Meeting 2015 06 15
Meeting 2015 07 06
Meeting 2015 07 13
Meeting 2015 07 27
Meeting 2015 08 10
Meeting 2015 08 17
Meeting 2015 08 24
Meeting 2015 08 31
Meeting 2015 09 14
Meeting 2015 09 21
Meeting 2015 09 28
Meeting 2015 10 05
Meeting 2015 10 12
Meeting 2015 10 19
Meeting 2015 10 26
Meeting 2015 11 02
Meeting 2015 11 09
Meeting 2015 11 16
Meeting 2015 11 30
Meeting 2016 01 04
Meeting 2016 01 11
Meeting 2016 01 25
Meeting 2016 02 01
Meeting 2016 02 08
Meeting 2016 02 22
Meeting 2016 03 07
Meeting 2016 03 21
Meeting Devtools Servo 2
Meetings
Microdata project
Minutes Hackathon 2012 03 27
Missing DOM features project
More ServiceWorker support project
More developer tools student project
Mozlandia Automation
Mozlandia B2S
Mozlandia JS
Mozlandia Rust In Gecko
Mozlandia WPT
Mozlandia gfx
Mozlando Devtools Servo
Mozlando Oxidation
Mozlando SM Servo
Mozlando Servo Bluetooth
Mozlando Servo MagicDOM
Mozlando Servo SMStrings
Mutation observer project
Mutation testing project
NCSU student projects
Network security project
Off main thread HTML parsing project
Offscreen canvas improvements project
Offscreen canvas project
Orlando Oxidation 2018
Oxidation 2015 11 05
Persistent sessions student project
Preparing ARM libraries for CI
Priority of CSS properties
Priority of DOM implementation
Priority of dom bindings
Private browsing student project
Profiling
Project proposal deadlines
Prototype JS form controls student project
Prototype ways of splitting the script crate
Publishing a new ANGLE NuGet version
Publishing a new app store release
Push vs Pull for caching
Random web content project
Refactor GLES2 student project
Refactor bluetooth support student project
Remaining work
Removing push notifications from IRC hooks
Replace C libraries student project
Report new contributors project
Representation of computed style
Research
Reviewer
Roadmap
Running Web Platform Tests on Servo
Rust HTML parser
Rust SpiderMonkey debugger API
Rust cssparser code walk 2013 08 02
SaltStack Administration
San Francisco Oxidation
Servo Benchmarking Report (December 2024)
Servo Benchmarking Report (November 2024)
Servo Benchmarking Report (October 2024)
Servo Layout Engines Report
Servo and SpiderMonkey Report
Servo for Gecko Developers
Specification Links
SpiderMonkey related tasks
SpiderMonkey infodump
SpiderMonkey upgrade details
Storage student project
Streaming webassembly student project
Strings
Student project brainstorm
Student projects
Styling overview
Stylo hacking guide
Summer of Code 2014: Implement XMLHttpRequest
Summer of Code 2016: Fetch API
Summer of Code 2016: File support
Summer of Code 2016: ServiceWorker infrastructure
Summer of Code projects
Summit meeting 2013 09 09
Support WebDriver based tests project
Syncing web platform tests (WPT)
TaskCluster
Testing
Tools
Tracking intermittent failures over time project
Transcription Notes from Servo Architecture talk in Suwon
Transcription notes from rust patterns talk in suwon
Transcription parallelism
Transcription rust concurrency
Transcription rust runtime
Transription layout and acid2
Trinity College Dublin student projects
UPenn student projects
Updating the Rust compiler used by Servo
Upgrading non taskcluster linux CI machines
Upgrading the UWP gstreamer binaries
Upgrading the windows LLVM binaries
Upgrading wptrunner
Using DOM types
Using Rust Spidermonkey Prototype
Using WebWorker Prototype
Version 0.1
Videos and presentations
WebAudio JS interfaces student project
WebAudio nodes student project
WebCompatBug
WebSocket student project
Webdriver student project
Webdriver tests student project
Webrender Overview
Whistler 2019 notes
Whistler Bugzilla
Whistler FFOS
Whistler GFX
Whistler Houdini1
Whistler Houdini2
Whistler Necko
Whistler Oxidation 2019
Work items for new contributors
Workweek COW DOM
Workweek alt js
Workweek android arm
Workweek boot 2 servo
Workweek compiler lints
Workweek displaylist
Workweek dogfooding
Workweek encoding
Workweek generated content
Workweek governance
Workweek graphics stack
Workweek graphics toolkit
Workweek incremental layout
Workweek js bindings status
Workweek layers
Workweek layers2
Workweek pixels
Workweek rasterization
Workweek reftests
Workweek roadmap
Workweek script crate
Workweek security
Workweek string interning
Workweek tables
Workweek writing modes
XML parser student project
infra triage notes
jQuery status
webxr.today support
Clone
1
Meeting 2014 09 29
jdm edited this page 2014-09-29 18:35:48 -07:00
Servo Meeting 2014-09-29
Reminder
Please update your status at: http://benjamin.smedbergs.us/weekly-updates.fcgi/
Agenda
- New bors, better than the old bors (jack & larsberg)
- Safety of DOM bindings (zwarich)
- Reviewing SpiderMonkey upgrade (jdm)
- Test harness improvements (zwarich)
Attending
- jack, jdm, kmc, larsberg, cgaebel, pcwalton, azita, brson, zwarich, june0cho, yichoi, gw, Manishearth, mrobinson
Automation / bors
- jack: Bors is back! After a semi-painful transition, we are at full operational capacity. Build cycles from r+ to landing is about 18 minutes. A couple of people are not on the reviewers list, but have been patched in. If anybody sees anything weird, please alert larsberg and myself. Recap: We are using the same version of Bors that rust uses. We were unable to make the Basho feature-ified version of Bors work. Over the weekend, those patches landed a build that had failed buildbot. I am working on a new Bors to replace ours, in order to avoid the GitHub polling API limits. Since it takes 3 actions to land a PR, it takes 9 minutes (3 minute intervals) to actually land something approved. The new one will be based on GitHub notifications to avoid polling and waiting. It should trigger builds and landing instantaneously. We should only have delays for building. There is a repo up called "nelson" where this work is going on. I will recruit people to help once it is further along. If we're lucky, Rust can use it as well.
- larsberg: I've started work on an Android builder. If I turn it on it'll probably not be gating landings, but I plan to finish that up in a week or two.
DOM binding safety
- zwarich: Are the only safety issues with the DOM bindings the issues of storing a JS in a data structure where it might not be found and where Root does not correctly model the lifetime of the shared data? Are those the only two issues?
- jdm: I believe so.
- zwarich: Cool! Is there something we could do to solve the Root on? We could root everything with a macro that initializes it...
- jdm: It's so ergonomically bad! I tried that.
- zwarich: I don't like having memory-unsafe DOM bindings and would like to avoid that :-) Hopefully we will get better bindings?
- jdm: We have dynamic checks that fail if a root gets moved.
- zwarich: In all cases?
- jdm: AFAIK.
- zwarich: Isn't is possible for a GC to occur before the dynamic check and trash memory?
- jdm: That is true. Only comes into effect when the destructor runs.
- zwarich: I do get the point that we should catch it via testing.
- pcwalton: Custom lint? The EUB should tell you if things are moved in Rust. Just use the ExprUse visitor in Rust.
- zwarich: It's also not completely clear to me... if you return a Root from the Root constructor, data in the Root is passed off to the GC, what makes that correct?
- jdm: Currently, in Servo today it's not a problem because the GC doesn't know about them. In the upgrade, there is an init method, but we should be able to use the return pointer intrinsic instead.
- zwarich: There's an intrinsic to ensure you get the address of the eventual return point? Are we guaranteed rustc won't move it a second time?
- pcwalton: We just need to make sure Rust doesn't do that.
- jack: Is there something Rust could add that would make this safe?
- pcwalton: Rust doesn't do moves except in well-defined circumstances. We need to make sure Rust doesn't start doing things that it shouldn't.
- jack: I don't fully understand the "ROOT" of the unsafety there :-)
- zwarich: There's a problem with the lifetime constraint that you want on a root.You can have both 'a and 'b now, but you need to know that one of them does not live longer than the root itself. Other is that when we pass a pointer to spidermonkey on the stack, we can get in trouble. If we don't do the lifetime tracking, we could end up moving a root, which is not memory safe. As jdm mentioned, we can add a check to the destructor.
- jack: When you talk about a move you're talking about the Rust compiler moving a Root from one stack slot to another.
- zwarich: Yes. There is an intrinsic you should be able to use with Rust, though. Just worried about the overall safety.
- pcwalton: Custom lint seems like the easiest way forward now.
- zwarich: Just worried if it can't catch them all. But maybe it can check almost everything.
- kmc: If we need a new kind of lint - like after translation - it's not too bad.
- pcwalton: As long as it's after typecheck so you can run the EUB.
SM upgrade
- jdm: I'm tired of sitting on it! I'm going to get at least one SM hacker to look at the details. I want to assign those and start the ball rolling.
- jack: ms2ger was going to look over it as well? Need one more internally. Maybe zwarich?
- zwarich: Darn! I guess I picked the wrong week to look at DOM stuff... guess I'm signed up.
- jack: The way the agenda items are set up, it just looks like you were set up for this!
- jack: Is there a timeline?
- jdm: No, I need to get a commitment.
- jack: What can we do to help with rebasing?
- jdm: Do not touch rust-mozjs or mozjs.
- jack: Let's not do that, then, to make this easier for him.
Test harness improvements.
- zwarich: Every time I run tests and see hundreds of processes, I wonder why we can't have one testrunner process that runs them in sequence. It's what webkit and blink do.
- pcwalton: Yes, too much overhead right now.
- zwarich: At least webkit splits off 4 processes and runs them in parallel. Different for us because we have them in parallel, too, but avoiding the process create/destroy would be good. Obviously, what we'll find is that lots of tests will start doing weird things because we've never done that before, but hopefully we'll find bugs. Since we don't typically navigate bugs anyway...
- jack: A first attempt would be to just use libservo and call run directly.
- zwarich: Yes, definitely the best way to start and then go from there.
Dogfood
- pcwalton: In terms of dogfooding, with the work we've been doing, especially with forms, we're almost there.
- mbrubeck: Except chrome!
- cgaebel: And we can't click links.
- jdm: I think I fixed that in my forms PR!
- pcwalton: It's hard to have an automated test for that.
- jack: Yes, our screen shots are starting to look really nice of Servo.
- pcwalton: Yes, just a few little layout bugs and features left until we can display more of the pages.
- jack: Status of CSSOM?
- jdm: I will keep working on it. Need to figure out what tests I can add. Each browser does something different, and the spec doesn't say anything.
- jack: Example?
- jdm: element.style.backgroundPosition... every browser decides whether or not it will round-trip the author value. Different between Blink, Webkit, and Gecko.
- jack: Lovely!
- pcwalton: Don't forget IE5/6/7!
- jack: Any idea what the spec authors intended?
- jdm: I asked. They said, "good luck!"
- zwarich: Specs: now Choose Your Own Adventure books!
Security
- kmc: Little worried about security for dogfooding. stb_image and one or two other major vulnerabilities.
- mbrubeck: And don't sanitize fonts...
- pcwalton: I'm not worried about somebody trying to p0wn Servo. Maybe I'll work on a sandbox for it. Or just go all the way to e10s Servo. I have a branch. It's not ridiculous.
- jack: Part of me agrees - we're planning to replace stb_image with rust_image, but many are much harder. Like certificate checking, and that seems much more dire.
- kmc: We're not going to be using it for dogfooding everything, but could use it for non-signed-in pages. But if we're doing plaintext HTTP, a corrupted image can be MITM'd and own the machine. I'm less worried about web security because we're not going to be running github web apps.
- jack: But we're almost there with Github!
- kmc: Well, we don't have cookies. I'm a little worried in general about the fact that we don't sanitize, respect same origin policy, etc. I'm nervous about those things, because people wouldn't target servo, but it would be trivial.
- cgaebel: And horrible marketing.
- kmc: Pre-1.0 fancy servo 0-days aren't a big deal, but it's still scary.
- pcwalton: Big disclaimers on any test build. We can call out that we have known insecure parts.
- jack: We want people to try to p0wn Servo for soundness bugs in Rust!
- pcwalton: There will be some soundness bugs in Rust, but more likely people will just grab a bug from a dependency.
- kmc: Or some of our unsafe code, like parallel layout.
- pcwalton: I'd like to see someone try to weaponize races in parallel layout!
- zwarich: We could also make Servo save no state between invocations so that we don't need to allow write access to nearly anything. Maybe a couple things with the OS, but we could start with Safari's sandbox profile and try to cut it down.
- pcwalton: I have one! Servo.sb. Should be in the github history.
- zwarich: Yeah, if you can't read or write any files, you're not going to get very far.
- kmc: Any linux solution?
- pcwalton: Nope.
- zwarich: Most of them are distro/kernel-patch specific.
- kmc: selinux/yama...
- pcwalton: Could convert that .sb file to a bpf filter...
- jack: Or distribute it in a docker container!
- kmc: I guess that's what the cool kids do these days.
- pcwalton: We would like to ship Servo.sb and seccomp.bpf on Linux, though. And it would start making our tests fail if people open random OS files.
- jdm: There is a student project in the coming months to evaluate replacing stb_image with rust_image. It should provide what sort of perf numbers we should expect.
- mbrubeck: When we have users, we will need to update SM more than every year.
- jdm: VOLUNTEER FOUND!
- mbrubeck: Yeah, it's the weakest link. If we don't update SM every 6 weeks, we'll be in trouble.
- pcwalton: stb_image will be the least secure, but SM is the easiest.
- kmc: We will have to do the full security shebang at some point soon.
- mbrubeck: For now, we can just be Haskell: avoid success at all costs! More users will push this...
- pcwalton: Right now, we want people who want to kick the tires on Servo and build excitement, not users.
- jack: Let's put this on the workweek agenda. Get the full checklist we need before we can push out a dogfood build to externals. That should help inform what we need to do for the rest of the year.
Workweek
.
- jack: Who is evens pan? We have a mystery guest on the servo workweek, but nobody knows who this is...
- azita: Exciting that the group is going so much we don't know their names!
- jack: jdm is also soliciting more NCSU students.
- jdm: There is a page of the projects the teams of students (2-3) will be claiming and working on for the next couple of months. Please be nice! ( https://github.com/servo/servo/wiki/NCSU-student-projects )
- jdm: There should be enough info on the items for them to get started with it.
- jack: How did this happen?
- jdm: Prof contacted us last year and we did a couple of projects, and they came back.
- jack: Web canvas stuff from last year?
- jdm: Yes. It's a grad level course.
- azita: Any at the workweek?
- jdm: No.
- kmc: I can help with the Rust tutorial!
- larsberg: We have some playpen materials that have been well-tested and are probably only seriously buggy now :-)
- jdm: Please send them to me!
- larsberg: Will do.
Incremental reflow
- pcwalton: It should be coming soon!
- cgaebel: It's hard! But I'm working on it.
- jack: Bunch of PRs to atomize things in Servo. Are we going to land those?
- pcwalton: I need to fix them up. I have trouble running WPT because it keeps looking for some weird executable that doesn't exist.
- kmc: I've been working on converting namespaces to use Atoms as well.
- pcwalton: Can you finish that first?
- kmc: Sure, I need it to land the parser as well. I am using a newtype for the namespace as well, which should catch some of the simple cases.
- gw: I tore the JS from the WPT tests to an isolated file to repro the failure you were seeing in your PR.
- jack: WPT runner was running everything with GPU rendering, which causes mac problems. But if you pass -c (by updating wptrunner to 1.2) or patch the wptrunner files yourself (look for --hard-fail in the .virtualenv), it will work. Master should fix this, though.
- pcwalton: OK.
- jack: I found that during bors. It didn't cause a problem on Travis, but did on our Linode builders.