Reusing Previous Computations
Invalidation is a key technique all major browsers use to make for fast rendering and smooth interactions, but it’s also famously difficult. Chapter 16 explains how to make it work right.
News, new chapters and blog posts
Invalidation is a key technique all major browsers use to make for fast rendering and smooth interactions, but it’s also famously difficult. Chapter 16 explains how to make it work right.
Images and iframes introduce performance and security concerns that impact browser architecture, but they also build on and extend existing concepts like event loops, rendering, and accessibility in an elegant way. Chapter 15 explains how.
Accessibility is an important topic, and often not well understood. Chapter 14 of Web Browser Engineering explains how it works, and also how almost every web user benefits from it in one way or another.
Animations make browsers more fun, but they also require solving a lot of really interesting algorithmic and design challenges to utilize GPU-accelerated compositing. Find out how in our new chapter, Animating and Compositing!
With a new year and then some more time to actually finish things, we present a new chapter on Scheduling Tasks and Threads. This chapter splits the browser into multiple threads, with threaded raster and scrolling, in only a couple thousand lines of code.
Today we’re releasing a chapter on Adding Visual Effects. This first chapter on Modern Browsers swaps in modern libraries and implements some recent web features like blending, stacking contexts, surfaces, and clipping.
Today we’re releasing a chapter on Keeping Data Private. Cookies enable a whole economy of personalized web applications—but also raise issues of security and privacy. New, powerful browser-side tools can help.
Today we’re releasing a chapter on Running Interactive Scripts. Binding a JavaScript engine to our browser—and building the system for passing data between JavaScript and browser code—makes possible a whole new world of interactive web applications.
Today we’re releasing a chapter on Sending Information to Servers. In it, our browser becomes an application platform, starting with a 90s-style guest book. The next few chapters will explore that theme, building more and more capable web applications as we go.
Today we’re releasing a chapter on Handling Buttons and Links. This is the chapter when the browser really starts surfing the web. It also becomes a pretty good way to read this book!
Today we’re releasing a chapter on Applying User Styles. I hope you’ll find that building a simple CSS parser and implementing selector matching and inheritance is interesting, approachable and fun!
We’re working interactive widgets to Web Browser Engineering to better explain the concepts and to make room for discoveries. But it’s not easy!
Today we’re releasing a new chapter on the History of the Web. The rest of the book is about how web browsers work, but this chapter is about why. It’s about the goals and motivations for the web and for web browsers, which shape the way they work.
We’re releasing Chapter 5. It introduces layout trees, the data structure at the center of layout. Building, laying out, and rendering layout trees is how every web page you view is rendered!
The intro chapter is here! Now you get to find out why this book was worth writing, mostly in Chris’s words. Plus you’ll learn a few things about where the web came from and how the sausage is made.
Chapter 4 is out! It’s decked out with HTML parsing and error handling, and starts building out the core data structures of the browser. Plus, it has tips for leveraging implicit tags to make your HTML cleaner and simpler!
I’ve added a code outline tool to help you see the intermediate-level structure of a web browser. As Chris and I write more chapters, it’ll become more and more useful.
Chapter 3 is ready. Read about typography, baselines, and tags! Our browser lines up text with style! My favorite aside is the Michigan Supreme Court case on font sizes.
Why is Web Browser Engineering in Python? In short, Python is popular, readable, and has access to standard system APIs.
Have you noticed that the byline on https://browser.engineering has changed? Chris Harrelson will be joining Web Browser Engineering as a co-author. He’s already working to make WBE deeper and more realistic based on his experience on the Chrome team.
Chapter 2 is ready. Read about window handles, display lists, and events. Our browser creates a window, draws text to it, and tells a story about a monkey. (My favorite part is the aside on Chinese line layout.)
I’ve written some code to crowdsource typo corrections and comments from readers. Looking forward to seeing your feedback!
A quick backstory behind the book, and my plan for writing it.
Chapter 1 is about URLs, sockets, and HTTP requests. Read about how a browser creates a network connection, what the OS does to help, and how it requests specific web pages.