Servo: The parallel web engine

  • 747 views
Uploaded on

This talk exposes the reasons what Servo is and why it is necessary, its current status, future plans and details on the Rust programming language, which has a symbiotic relationship with Servo.

This talk exposes the reasons what Servo is and why it is necessary, its current status, future plans and details on the Rust programming language, which has a symbiotic relationship with Servo.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
747
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
8
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Servo: The parallel web engine Bruno de Oliveira Abinader brunoabinader@gmail.com bruno.d@partner.samsung.com FISL 15 | 2014 | Porto Alegre, Brasil
  • 2. /whoami abinader @ irc.freenode.org | irc.mozilla.org | irc.w3.org Ohloh: ohloh.net/accounts/brunoabinader GitHub: github.com/brunoabinader Blog: abinader.com.br
  • 3. Introdução • Scenario: Mobile web browsers • What is Servo? What is Rust? • Servo: Objectives • Servo: Current status • Servo: Challenges and future plans • Contributing to Servo and Rust
  • 4. Scenario: Mobile web browsers Predictions for 2014 and beyond*: • Web pages will grow in size and complexity • Focus on mobile web browsers performance • Devices will have more cores, not faster cores
  • 5. Scenario: Mobile web browsers Load time of a web page in Desktop vs. Mobile**: Sources: http://www.webperformancetoday.com/2014/01/07/eight-web-performance-predictions-for-2014/ http://www.eecs.berkeley.edu/~lmeyerov/projects/pbrowser/pubfiles/playout.pdf
  • 6. Scenario: Mobile web browsers Slowness causes: • Single-core mobile devices • Browsers do not adapt to multi-core devices • JavaScript code run in a single thread
  • 7. Scenario: Mobile web browsers Further issues: • Huge code base: multiple architectures, multiple ports • Support for deprecated platforms, specifications and architectures • Security vulnerabilities on C++ memory management
  • 8. What is Servo?
  • 9. What is Servo? document html head body title p DOM Example Hello World!
  • 10. What is Servo? Servo is an experimental web engine: • Developed by Mozilla, in partnership with Samsung • Aims to create a highly parallel and safe environment • Focus on mobile and embedded • Has symbiotic relationship with Rust programming language
  • 11. What is Servo? Under the hood: • SpiderMonkey JavaScript engine • Azure drawing library (Skia) • Hubbub HTML parser • Harfbuzz text shaping library
  • 12. What is Rust?
  • 13. What is Rust? Rust is a programming language: • Developed to be safe, concurrent and practical • Focus on creation of reliable and efficient systems • #2 on GitHub’s “repositories with most amount of closed issues” in 2013
  • 14. What is Rust? Example:
  • 15. Servo: Objectives • Advantage from parallelism in various levels • Eliminate common causes for bugs and security flaws • Based on WHATWG live specifications
  • 16. Servo: Current status We do ACID2!
  • 17. Servo: Challenges • Performance: Parallelism trade-offs • Rust data structures • Rust language immaturity • Hostile libraries to parallelism and security controls
  • 18. Servo: Challenges Strategies for optimal parallelism: Task-based architecture Copy-on-write DOM Parallel rendering Tiled rendering Layered rendering Selector matching Parallel layout Text shaping Parallel parsing Image decoding Other decodings (eg. Video) GC JS in parallel with layout
  • 19. Servo: Future plans Roadmap for 2014: • Demonstrate better performance than other web engines (eg. Gecko, WebKit, Blink, Trident) • Implement all Servo architecture ACID2 | Parallel layout | HTML parser in Rust | Bidirectional writing | Vertical writing | Gestures | XMLHTTPRequest | Incremental layout | COW DOM | W3C Platform Tests | CSS WG tests | Android buildbot | Embedding | Pagination | CSSOM | CSS Properties | DOM bindings | Caching | FlexBox | Web Animations | Multiprocess | Multimedia | Sandboxing | Addons | Bookmarks | History | Cookies | …
  • 20. Contributing to Servo and Rust • Contributions are welcome! • Servo: github.com/mozilla/servo • Rust: github.com/mozilla/rust | rust-lang.org • #servo | #rust | #rust-internals @ irc.mozilla.org • dev-servo | rust-dev @ lists.mozilla.org • Reviews: critic.hoppipolla.co.uk • News: blog.octayn.net
  • 21. Contributing to Servo and Rust • Servo: Supported systems:
  • 22. Contributing to Servo and Rust • First good bugs list @ GitHub issues • CSS properties • DOM Bindings • Janitoring • Tests • Documentation
  • 23. Questions?
  • 24. Thank you! Special thanks: