mirror of
https://github.com/servo/servo
synced 2026-04-25 17:15:48 +02:00
Page:
Meeting 2015 03 02
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 2015 03 02
Josh Matthews edited this page 2015-03-02 19:35:10 -05:00
Table of Contents
Servo Meeting 2015-03-02
Agenda items
- Good first layout issues (jdm)
- Memory leaks (jack)
- Recruiting (larsberg)
Attending
gw, jack, kmc, larsberg, mbrubeck, pcwalton, jdm, Manishearth, Samsung, brson, azita
Good first layout issues
- jack: There are some people interested in getting started in layout, but there are no E-Easy bugs for it. pcwalton and I have talked about possibly leaving some of the CSS transforms undone? Some of them seem easy to make good first layout bugs because they have some values for the property implemented, but not others. People can learn from the code that already exists.
- pcwalton: CSS transitions. I have an old branch that has support for that and I'll try to get it landed.
- jack: OK, we can do that and then see which transitions need to be landed.
- pcwalton: Once my layout changes (4) land, feel free to rustup again. A couple of them have gone through several rounds of review.
- mbrubeck: Another source of easy layout issues is that there are over 100 FIXME comments in the layout crate. Some of them are hard, but many are potential optimizations, edge cases, missing features, etc. I can go in and try to look through some of those, but pcwalton wrote most of the comments and might have ideas.
- kmc: What about going through disabled ref tests to see which ones now work and which could be fixed easily?
- jack: How many?
- gw: 4-5.
- kmc: Yeah, and iframes, too.
- gw: Now that our Linux tests don't rely on X, maybe they will "just work."
- pcwalton: One possibility is Canvas features. Though maybe it's accounted for?
- jack: We had a PR for something straightforward on Canvas.
- pcwalton: Those features are straightforward and fun.
- kmc: Not layout, but does address letting more websites work in Servo.
- pcwalton: One thing that would be extremely helpful is going to a broken website, finding out why it's broken, and create a minimized test case. We know there are issues on websites, but it takes time to create a test case. Like percentage widths on tables, it's usually a small fix, but minimizing and finding the bug and creating a test is hard.
- jdm: Lots of suggestions are around not touching the layout code right now. I'd like to explore people getting to touch layout code itself. It would be nice to have repositories of knowledge. 1) If a website looks wrong, how do you identify what is wrong, create a minimized test case, and fix it? 2) A PR example for how you create a new CSS property. These are the things people need to know to become useful in layout.
- gw: I could write a wiki page on how I work through a broken webpage, create a minimized case, etc.
- manish: Could do the same with canvas (writing a wiki page on it).
- jdm: Identifying good PRs that are models for specific types of work in layout are valuable. Also, triaging bugs in layout to get further work done on it would be good. That will make those bugs actionable to non-layout-experts.
- manish: And if you come across something you could fix in a small PR and it isn't blocking anything, you can always create an E-Easy issue for it instead.
- jdm: I'm a fan of file first / fix later.
- jack: We seem to have done a good job of it before in that when we add a new feature in layout we just implement the portion of the spec that we needed. We do not do a good job of documenting the parts that we have not done. It would save us a lot of time and help onboard us if we could do something like the giant metabug that jdm opened with all of the individual steps required.
- pcwalton: It also doesn't help that most layout code was written under time duress to get ACID1, ACID2, or the static suite working.
- jdm: That's how we fix that problem!
- gw: I'll start with the wiki page on "intro to fixing layout issues."
- pcwalton: I'd be happy to collaborate.
- gw: I'll start and send out a link.
- jdm: If I spent some time going through old layout bugs and flagging ones that look like they might be actionable. How can I get people's attention that won't fall through the cracks?
- jack: e-mail?
- pcwalton: assign bugs?
- larsberg: Layout is super under the gun in terms of reviews and features to fix up. I'd just make sure that if you open them up, particularly right near the end of Q1, you will run into the writing modes & fragmentation work that are going to slam the layout people.
- jack: Hopefully good first layout bugs are easy to review.
- pcwalton: Yeah, if it's short and has a good reftest. Most layout bugs are either a giant piece of missing functionality or a 5 line feature.
- jack: Also, need to onboard people or we will continue being slammed.
Memory leaks
- jack: I've been tracking down leaks in https://github.com/servo/servo/issues/4915. Stack traces with various memory leaks. The first one is in the computed style cache - Arcs of computed styles that we hand out to layout things. Some of them don't get freed, and I haven't been able to figure out why. The second one is a vector of line breakers that doesn't get freed. There's no reason this should be leaking, unless there's a bug in the compiler.
- pcwalton: I heard there's a really nasty one where sometimes variables leak. Don't know many details, don't know if anyone's working on it.
- jack: I'll ask around.
- pcwalton: Worth doing; I wouldn't count on that being it, but it's worth looking into.
- mbrubeck: I was looking at the code for the
Arclayoutdata. It's one where we create it on the layout thread and hand it to script and then when we shut down that pipeline we send a whole bunch of messages back to layout to deallocate it. Then, we send an exit message. - pcwalton: Why do we have to deallocate these things on the same thread?
- jdm: The types are different.
- pcwalton: Script could call through some trait object to some real type and drop it on the scrip thread...
- kmc: Inherited from managed boxes?
- mbrubeck: Very leak-prone now because it depends on message ordering. There are other ways that layout can exit (e.g., if a child task fails).
- pcwalton: Seems like it would be nice for the script task to free things.
- jack: I put in tracking messages. We are doing a massive number of reflows. Savago has been looking into that. If you load one of them, layout data never gets removed until the page is destroyed or you hit escape.
- mbrubeck: That's how it's designed...
- jack: If that's how data should be reaped, we should do it at reflow.
- gw: The data structure that reap_layout_data cleans up is allocated once per node. If the node continues to exist, there's no reason to be reaping.
- pcwalton: Important for incremental layout that it stays around.
- jack: Where else would be put these computed styles? Applied styles cache is one place it goes to. There's nowhere unsafe, right?
- pcwalton: Maybe that cache has sketchy thread-local stuff... we've had issues where that isn't properly cleaned up.
- gw: Definitely thread-local. I changed it a while ago (after we went off green threads) to the normal TLS stuff. Will be kept around on each of the layout worker threads. If it's just 32 per thread, it shouldn't explain the leaks.
- pcwalton: Can also just comment out the cache and see if that gets rid of the leak.
- kmc: Also capture a backtrace when the refcount goes above a level.
- jack: That's the next step. First thing I did was add Drop to ComputedValue and there are a ton that get deallocated. So some of them get deallocated. Also added debugging for when they are added to the cache, and it seems to be working correctly because things going into the cache did get deallocated eventually. I'll keep looking. Also, there are 2-3 more stack traces I need to look at.
Vec::pushis two or three of them. - pcwalton: Probably a bug in the container of the vector not releasing the vector properly. Valgrind would have caught it.
- brson: We don't run valgrind on Rust.
Recruiting
- larsberg: Positions are opening this week! Be ready to actually ask people to apply.
- azita: Any interns this summer?
- jack: 0 for Servo, but two coming in through the researcher program (more flexible internship program). One coming for mobile power usage, another coming for scheduling algorithm stuff. Scheduling network requests, work stealing, etc. All slots are accounted for between Rust and other projects, but there are five or eight slots for researcher things still available, so if you know someone who wants to work on these things for ~3 months this summer and would work well remotely, we should talk to them. Since mentor is remote, need to be sure that candidates have good communication skills.
- jack: What are our chances on GSoC?
- jdm: It looks like we were not accepted, for the first time ever. Also Linux Foundation and Tor.
- jack: We do have bandwidth and some funds available for some stuff. If we know people who were going to apply to GSoC and looked like good fits to be successful remotely, let us know and we can check it out.
- jdm: There's another similar program that goes year-round in chunks. "VALS semester of code?" It has more academic tie-in with an academic faculty member, etc. There was interest in the WebGL canvas there.
- jack: NCSU?
- jdm: They're doing the class again right now! Two projects.
- jack: Which ones?
- jdm: WebSockets and more dev tools. Hopefully network request logging.
- jack: Timeline view would make me very happy!