<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: servo</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/servo.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2026-04-13T15:04:00+00:00</updated><author><name>Simon Willison</name></author><entry><title>Exploring the new `servo` crate</title><link href="https://simonwillison.net/2026/Apr/13/servo-crate-exploration/#atom-tag" rel="alternate"/><published>2026-04-13T15:04:00+00:00</published><updated>2026-04-13T15:04:00+00:00</updated><id>https://simonwillison.net/2026/Apr/13/servo-crate-exploration/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;strong&gt;Research:&lt;/strong&gt; &lt;a href="https://github.com/simonw/research/tree/main/servo-crate-exploration#readme"&gt;Exploring the new `servo` crate&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;In &lt;a href="https://servo.org/blog/2026/04/13/servo-0.1.0-release/"&gt;Servo is now available on crates.io&lt;/a&gt; the Servo team announced the initial release of the &lt;a href="https://crates.io/crates/servo"&gt;servo&lt;/a&gt; crate, which packages their browser engine as an embeddable library.&lt;/p&gt;
&lt;p&gt;I set Claude Code for web &lt;a href="https://github.com/simonw/research/pull/108"&gt;the task&lt;/a&gt; of figuring out what it can do, building a CLI tool for taking screenshots using it and working out if it could be compiled to WebAssembly.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;servo-shot&lt;/code&gt; Rust tool it built works pretty well:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/simonw/research
cd research/servo-crate-exploration/servo-shot
cargo build
./target/debug/servo-shot https://news.ycombinator.com/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here's the result:&lt;/p&gt;
&lt;p&gt;&lt;img alt="An accurately rendered screenshot of the Hacker News homepage" src="https://static.simonwillison.net/static/2026/servo-hn.png" /&gt;&lt;/p&gt;
&lt;p&gt;Compiling Servo itself to WebAssembly is not feasible due to its heavy use of threads and dependencies like SpiderMonkey, but Claude did build me &lt;a href="https://simonw.github.io/research/servo-crate-exploration/html5ever-wasm-demo/www/"&gt;this playground page&lt;/a&gt; for trying out a WebAssembly build of the &lt;code&gt;html5ever&lt;/code&gt; and &lt;code&gt;markup5ever_rcdom&lt;/code&gt; crates, providing a tool for turning fragments of HTML into a parse tree.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/research"&gt;research&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rust"&gt;rust&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webassembly"&gt;webassembly&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/servo"&gt;servo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-code"&gt;claude-code&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="browsers"/><category term="research"/><category term="rust"/><category term="webassembly"/><category term="servo"/><category term="claude-code"/></entry><entry><title>Quoting Contributing to Servo</title><link href="https://simonwillison.net/2025/May/12/contributing-to-servo/#atom-tag" rel="alternate"/><published>2025-05-12T22:14:30+00:00</published><updated>2025-05-12T22:14:30+00:00</updated><id>https://simonwillison.net/2025/May/12/contributing-to-servo/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://book.servo.org/contributing.html#ai-contributions"&gt;&lt;p&gt;Contributions must not include content generated by large language models or other probabilistic tools, including but not limited to Copilot or ChatGPT. This policy covers code, documentation, pull requests, issues, comments, and any other contributions to the Servo project. [...]&lt;/p&gt;
&lt;p&gt;Our rationale is as follows:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Maintainer burden&lt;/strong&gt;: Reviewers depend on contributors to write and test their code before submitting it. We have found that these tools make it easy to generate large amounts of plausible-looking code that the contributor does not understand, is often untested, and does not function properly. This is a drain on the (already limited) time and energy of our reviewers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Correctness and security&lt;/strong&gt;: Even when code generated by AI tools does seem to function, there is no guarantee that it is correct, and no indication of what security implications it may have. A web browser engine is built to run in hostile execution environments, so all code must take into account potential security issues. Contributors play a large role in considering these issues when creating contributions, something that we cannot trust an AI tool to do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Copyright issues&lt;/strong&gt;: [...] &lt;strong&gt;Ethical issues:&lt;/strong&gt;: [...] These are harms that we do not want to perpetuate, even if only indirectly.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://book.servo.org/contributing.html#ai-contributions"&gt;Contributing to Servo&lt;/a&gt;, section on AI contributions&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/servo"&gt;servo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="browsers"/><category term="ai"/><category term="generative-ai"/><category term="servo"/><category term="llms"/><category term="ai-assisted-programming"/><category term="ai-ethics"/></entry><entry><title>This month in Servo: parallel tables and more</title><link href="https://simonwillison.net/2024/Jul/31/servo-parallel-tables/#atom-tag" rel="alternate"/><published>2024-07-31T15:03:28+00:00</published><updated>2024-07-31T15:03:28+00:00</updated><id>https://simonwillison.net/2024/Jul/31/servo-parallel-tables/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://servo.org/blog/2024/07/31/this-month-in-servo/"&gt;This month in Servo: parallel tables and more&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
New in Servo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Parallel table layout&lt;/strong&gt; is now enabled (&lt;a href="https://github.com/mrobinson"&gt;@mrobinson&lt;/a&gt;, &lt;a href="https://github.com/servo/servo/pull/32477"&gt;#32477&lt;/a&gt;), spreading the work for laying out rows and their columns over all available CPU cores. This change is a great example of the strengths of &lt;a href="https://crates.io/crates/rayon"&gt;Rayon&lt;/a&gt; and the opportunistic parallelism in Servo's layout engine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href="https://github.com/servo/servo/commit/e16291f14edc38d4bc3663a36619e6e461329402?diff=unified&amp;amp;w=0"&gt;commit landing the change&lt;/a&gt; is quite short, and much of the work is done by refactoring the code to use &lt;code&gt;.par_iter().enumerate().map(...)&lt;/code&gt; - &lt;a href="https://docs.rs/rayon/latest/rayon/iter/index.html"&gt;par_iter()&lt;/a&gt; is the Rayon method that allows parallel iteration over a collection using multiple threads, hence multiple CPU cores.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://www.phoronix.com/news/Servo-Multi-Core-HTML-Tables"&gt;Phoronix&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/concurrency"&gt;concurrency&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rust"&gt;rust&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/servo"&gt;servo&lt;/a&gt;&lt;/p&gt;



</summary><category term="concurrency"/><category term="html"/><category term="rust"/><category term="servo"/></entry><entry><title>Servo to Advance in 2023</title><link href="https://simonwillison.net/2023/Jan/16/servo-to-advance-in-2023/#atom-tag" rel="alternate"/><published>2023-01-16T17:08:00+00:00</published><updated>2023-01-16T17:08:00+00:00</updated><id>https://simonwillison.net/2023/Jan/16/servo-to-advance-in-2023/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://servo.org/blog/2023/01/16/servo-2023/"&gt;Servo to Advance in 2023&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This is excellent news: Servo, the browser-in-Rust project started by Mozilla in 2012 that produced the Rust programming language, is getting re-activated with four new full-time developers provided by Igalia.&lt;/p&gt;
&lt;p&gt;Igalia are a fascinating organization - I hadn't realized quite how influential they've been until I read &lt;a href="https://en.wikipedia.org/wiki/Igalia"&gt;their Wikipedia page&lt;/a&gt; just now&lt;/p&gt;
&lt;p&gt;They've been around since 2001, and "in 2019 they were the #2 committers to both the WebKit and Chromium codebases and in the top 10 contributors to Gecko/Servo" - including implementing and maintaining CSS Grid Layout!

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=34400214"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rust"&gt;rust&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/servo"&gt;servo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/igalia"&gt;igalia&lt;/a&gt;&lt;/p&gt;



</summary><category term="browsers"/><category term="rust"/><category term="servo"/><category term="igalia"/></entry><entry><title>Boiling the Ocean, Incrementally - How Stylo Brought Rust and Servo to Firefox</title><link href="https://simonwillison.net/2017/Nov/28/boiling-the-ocean-incrementally/#atom-tag" rel="alternate"/><published>2017-11-28T20:34:43+00:00</published><updated>2017-11-28T20:34:43+00:00</updated><id>https://simonwillison.net/2017/Nov/28/boiling-the-ocean-incrementally/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://bholley.net/blog/2017/stylo.html"&gt;Boiling the Ocean, Incrementally - How Stylo Brought Rust and Servo to Firefox&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Firefox Quantum is the product of an impressive, highly risky chain of software engineering—Rust, Servo, then Stylo.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/firefox"&gt;firefox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rust"&gt;rust&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/servo"&gt;servo&lt;/a&gt;&lt;/p&gt;



</summary><category term="firefox"/><category term="rust"/><category term="servo"/></entry><entry><title>Entering the Quantum Era—How Firefox got fast again and where it’s going to get faster</title><link href="https://simonwillison.net/2017/Nov/13/quantum/#atom-tag" rel="alternate"/><published>2017-11-13T16:34:44+00:00</published><updated>2017-11-13T16:34:44+00:00</updated><id>https://simonwillison.net/2017/Nov/13/quantum/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://hacks.mozilla.org/2017/11/entering-the-quantum-era-how-firefox-got-fast-again-and-where-its-going-to-get-faster/"&gt;Entering the Quantum Era—How Firefox got fast again and where it’s going to get faster&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I’ve been trying out the beta of Firefox 57 and it’s fantastic. All of that work on Servo and Rust is definitely paying off!


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/firefox"&gt;firefox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rust"&gt;rust&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/servo"&gt;servo&lt;/a&gt;&lt;/p&gt;



</summary><category term="firefox"/><category term="rust"/><category term="servo"/></entry></feed>