Chromium Blog
News and developments from the open source browser project
Chromium Tech Talks
Wednesday, April 29, 2009
Since starting work at Google, I've formed a deep appreciation for the number of high quality talks we have access to here (both
technical
and
not
). Reading code and documentation is pretty much unavoidable when you're a developer, but you really can't beat hearing directly from the expert's mouth on topics that you're interested in.
Last Wednesday, 5 Chromium experts gave mini tech talks on subjects ranging from the network stack to hacking on WebKit. Armed with 2 video cameras, a microphone, and a whiteboard, we did the best we could to capture these talks and make them available to Chromium developers around the world. Whether you're a seasoned Chromium contributor or just getting started, I think these videos have a lot to offer.
Here's a rundown of the videos:
Darin Fisher
talking about Chromium's multi-process architecture
Brett Wilson
talking about the various layers of Chromium
Dimitri Glazkov
talking about hacking on WebKit
Ben Goodger
talking about Views (and how to write good tests for them)
Wan-Teh Chang and Eric Roman
talking about Chromium's network stack (and its history)
I hope these are just the first of many tech talks we can offer to you, the Chromium community.
Posted by Jeremy Orlow, Software Engineer
Guest post: 3D graphics in the browser
Tuesday, April 21, 2009
Today, we shared with the open source community an early version of
O3D
, a new shader-based API for 3D graphics in the browser. We are excited about this release: we believe that a 3D API for the web will allow web developers to create powerful, immersive 3D apps, that are comparable to the experience offered by client applications and game consoles. This will make the web better, not to mention more fun!
O3D is still at an early stage and is not a part of the Chromium code base. However, we hope that, combined with projects like Mozilla's
Canvas 3D
, it will encourage the discussion within the graphics and web communities about a new open web standard on 3D graphics for the web. With JavaScript (and browsers) becoming faster every day, we believe it is the right time for such a standard to emerge. To help you participate in this broader discussion, Google has created a forum where you can
submit suggestions
on what features a 3D API for the web should have.
If you are interested to learn more about O3D, you can visit us at
code.google.com/apis/o3d
.
A video of the O3D Beach Demo
Posted by Henry Bridge, O3D Product Manager and Gregg Tavares, Software Engineer
Chromium and Google Summer of Code
Wednesday, March 25, 2009
Time is quickly running out for the students to apply for this year's
Google Summer of Code
.
The Chromium project has been accepted as a mentoring organization for this awesome program. This means that over the summer, you have the opportunity to work on new and exciting features for Chromium (and supporting projects) and experience browser development first-hand with a mentor from the project and real deadlines.
Full guidelines and details on how to apply can be found on the official
gsoc website
. To participate, pick an idea off our
handy list
or suggest one of your own (it's best to discuss it with a mentor first), then write up a proposal on how you'd go about accomplishing the task in the allotted time frame (3 months).
You can find a list of suggested topics
here
. These are only recommendations though, feel free to stop by our
mailing list
or
irc channel
and suggest something new. If you do decide to write your own proposal, we're looking for familiarity with the codebase, and lots of intelligent detail. The more details you can provide, the better!
Student registration
runs from the 23rd of March until the 3rd of April. We're looking forward to seeing the project submissions and expanding our community involvement.
Posted by Jeremy Moskovich, Software Engineer
The Times They Are A-Changin'
Tuesday, March 17, 2009
Since we launched Google Chrome in September of 2008, we've tried to provide insight into the product and its development here on the Chromium blog. In that time, we've made a lot of changes to Google Chrome to provide a better experience, and now that change is coming to the Chromium Blog. This morning, we launched a new blog, called the
Google Chrome Blog
.
The Google Chrome Blog is intended to highlight points of interest to general users, in a way that is accessible to as wide an audience as possible. It's where you will read about new features that have been released, find interesting tips on how to get the most out of Google Chrome, and stay plugged into the product in general. Many of the types of posts that previously would have surfaced here, such as announcements of our
spell-checking improvements
, will now appear on this new blog instead of the Chromium blog.
Have no fear, the Chromium blog will still exist, but now with a renewed focus on the original purpose of the Chromium blog. The blog will be dedicated to announcements of things that are happening within the Chromium project itself. We've always felt it important that, as an open source product, we do our work in the open (from
general
and
technical
discussion groups to
code reviews
to
design docs
) and stay in touch with the open source community. We're going to take this opportunity to try to be more communicative about project status, and news of note particularly to the developer community. We hope these changes make for a better experience for you, so please
let us know
what you think!
Posted by Ian Fette, Product Manager
Distributed Reliability Testing
Wednesday, February 25, 2009
We want Google Chrome to be as stable as possible. No matter what site you browse to or what you do, Chrome should never crash. A system we call "distributed reliability testing" is one of the main tools we use to help turn that goal into reality.
One of the advantages to being associated with Google is that we have access to a lot of information about the Web, and a lot of computers to test on. About once an hour, our distributed test infrastructure takes the very latest version of Google Chrome in development and uses it to automatically load a large number of the pages that Google has seen are most popular around the world. When it's done, it produces a report like this on the
Buildbot waterfall
that all our developers (and anyone else) can see:
Results for top 500 web sites:
success: 499; crashes: 0; crash dumps: 0; timeout: 1
Results for top 500 web sites without sandbox:
success: 463; crashes: 0; crash dumps: 0; timeout: 2
Results for extended list of web sites:
success: 99768; crashes: 3; crash dumps: 3; timeout: 463
Here the final test got through a bit over 100,000 pages before stopping to make way for the next build to be tested. And before each
Dev, Beta, or Stable channel
release, we run with a much larger number of URLs.
In addition, we "fuzz-test" the user interface, automatically performing arbitrary sequences of actions (opening a new tab, pressing the spacebar, opening various dialogs, etc. — a total of more than 30 possible actions). These are also run in our distributed testing architecture, so we can exercise thousands of combinations for each new version of Google Chrome in progress. The same report that shows the page-load results above collects these UI test results too:
Results for automated UI test:
success: 64643; crashes: 0; crash dumps: 0; timeout: 0
This sort of large-scale testing is great for finding crashes that happen only rarely, or that only affect pages that developers wouldn't have visited as part of their haphazard manual testing. By catching a problem right away even if it's very rare, it's easier for developers to figure out what change caused the error and fix it before it ever gets close to showing up in Google Chrome itself.
Posted by Pamela Greene and Patrick Johnson, Software Engineers
Spell Check Dictionary Improvements
Wednesday, February 11, 2009
If you're anything like us, you're spending more and more of your time working online. The spellchecker built into Chromium can be a big help in keeping your blog, email, documents, and forum postings spelled correctly and easy to read. Chromium integrates the popular open source library
Hunspell
with
WebKit's
built-in spellchecking infrastructure to check words and to provide suggestions in 27 different languages.
The Hunspell dictionary maintainers have done a great job creating high-quality dictionaries that anybody can use, but one of the problems with any dictionary is that there are inevitably omissions, especially as new words appear or proper nouns come into common use. We at Google are in a good position to use our knowledge of the internet to identify and fix some of these omissions. The Google translation team used their language models to generate a sorted list of the most popular words in each language. This was cross-checked with the Hunspell dictionaries to generate a list of the top 1000 words not present in each dictionary. This list includes many popular words, but also common misspellings. To remove these words, each list was reviewed by specialist in that language. Generally, we tried to keep proper nouns and even foreign words as long as they were in common usage.
We hope that by using the the existing GPL/LGPL/MPL tri-license for our addition, our work can be picked up by other users of Hunspell. We also hope to make more improvements in the future, both for additional languages like Turkish, and to refine the word lists we already have. If you're passionate about your language, you can
help out
by writing affix rules for the added words or reviewing more word lists.
The recent
dev-channel
release of Google Chrome (2.0.160.0) has the additional words we generated for 19 of the languages. Hopefully, you'll see fewer common words marked as misspelled. For example, the English dictionary now includes "antivirus," "anime," "screensaver," and "webcam," and commonly used names such as "BibTeX," "Mozilla," "Obama," and "Wikipedia." For our scientific users, we even have "
gastroenterology
," "
oligonucleotide
," and "
Saccharomyces
"! We'd like to give special thanks to the great help we got from the translation team who generated the words and the language search specialists who reviewed the lists.
Posted by Brett Wilson and Siddhartha Chattopadhyay, Software Engineers
Irregexp, Google Chrome's New Regexp Implementation
Wednesday, February 4, 2009
One of the new features in the most recent
dev-channel
release of Google Chrome (2.0.160.0) is Irregexp, a completely new implementation of
regular expressions
(regexps) in the V8 JavaScript engine. Irregexp builds on V8's existing infrastructure for memory management and native code generation and is tailored to work well for the kinds of regexps used by JavaScript programs on the web. The result is a considerable improvement in V8's regexp performance.
While the V8 team has been working hard to improve JavaScript performance, one part of the language that we have so far not given much attention is regexps. Our previous implementation was based on the widely used
PCRE
library developed by Philip Hazel at the University of Cambridge. The version we used, known as JSCRE, was adapted and improved by the WebKit project for use with JavaScript. Using JSCRE gave us a regular expression implementation that was compatible with industry standards and has served us well. However, as we've improved other parts of the language, regexps started to stand out as being slower than the rest. We felt it should be possible to improve performance by integrating with our existing infrastructure rather than using an external library. The SquirrelFish team is following a similar approach with their JavaScript engine.
A fundamental decision we made early in the design of Irregexp was that we would be willing to spend extra time compiling a regular expression if that would make running it faster. During compilation Irregexp first converts a regexp into an intermediate
automaton
representation. This is in many ways the "natural" and most accessible representation and makes it much easier to analyze and optimize the regexp. For instance, when compiling /Sun|Mon/ the automaton representation lets us recognize that both alternatives have an 'n' as their third character. We can quickly scan the input until we find an 'n' and then start to match the regexp two characters earlier. Irregexp looks up to four characters ahead and matches up to four characters at a time.
After optimization we generate native machine code which uses backtracking to try different alternatives. Backtracking can be time-consuming so we use optimizations to avoid as much of it as we can. There are
techniques
to avoid backtracking altogether but the nature of regexps in JavaScript makes it difficult to apply them in our case, though it is something we may implement in the future.
During development we have tested Irregexp against one million of the most popular webpages to ensure that the new implementation stays compatible with our previous implementation and the web. We have also used this data to create a new benchmark which is included in version 3 of the
V8 Benchmark Suite
. We feel this is a good reflection of what is found on the web.
If you want to try this out, and help us test it in the process, you can subscribe to the
dev-channel
and if you see problems that might be related to Irregexp consider filing a
bug
.
And BTW, we'll have sessions on V8 and other Chrome-related topics in May at
Google I/O
, Google's largest developer conference.
Posted by Erik Corry, Christian Plesner Hansen and Lasse Reichstein Holst Nielsen, Software Engineers
Labels
$200K
1
10th birthday
4
abusive ads
1
abusive notifications
2
accessibility
3
ad blockers
1
ad blocking
2
advanced capabilities
1
android
2
anti abuse
1
anti-deception
1
background periodic sync
1
badging
1
benchmarks
1
beta
83
better ads standards
1
billing
1
birthday
4
blink
2
browser
2
browser interoperability
1
bundles
1
capabilities
6
capable web
1
cds
1
cds18
2
cds2018
1
chrome
35
chrome 81
1
chrome 83
2
chrome 84
2
chrome ads
1
chrome apps
5
Chrome dev
1
chrome dev summit
1
chrome dev summit 2018
1
chrome dev summit 2019
1
chrome developer
1
Chrome Developer Center
1
chrome developer summit
1
chrome devtools
1
Chrome extension
1
chrome extensions
3
Chrome Frame
1
Chrome lite
1
Chrome on Android
2
chrome on ios
1
Chrome on Mac
1
Chrome OS
1
chrome privacy
4
chrome releases
1
chrome security
10
chrome web store
32
chromedevtools
1
chromeframe
3
chromeos
4
chromeos.dev
1
chromium
9
cloud print
1
coalition
1
coalition for better ads
1
contact picker
1
content indexing
1
cookies
1
core web vitals
2
csrf
1
css
1
cumulative layout shift
1
custom tabs
1
dart
8
dashboard
1
Data Saver
3
Data saver desktop extension
1
day 2
1
deceptive installation
1
declarative net request api
1
design
2
developer dashboard
1
Developer Program Policy
2
developer website
1
devtools
13
digital event
1
discoverability
1
DNS-over-HTTPS
4
DoH
4
emoji
1
emscriptem
1
enterprise
1
extensions
27
Fast badging
1
faster web
1
features
1
feedback
2
field data
1
first input delay
1
Follow
1
fonts
1
form controls
1
frameworks
1
fugu
2
fund
1
funding
1
gdd
1
google earth
1
google event
1
google io 2019
1
google web developer
1
googlechrome
12
harmful ads
1
html5
11
HTTP/3
1
HTTPS
4
iframes
1
images
1
incognito
1
insecure forms
1
intent to explain
1
ios
1
ios Chrome
1
issue tracker
3
jank
1
javascript
5
lab data
1
labelling
1
largest contentful paint
1
launch
1
lazy-loading
1
lighthouse
2
linux
2
Lite Mode
2
Lite pages
1
loading interventions
1
loading optimizations
1
lock icon
1
long-tail
1
mac
1
manifest v3
2
metrics
2
microsoft edge
1
mixed forms
1
mobile
2
na
1
native client
8
native file system
1
New Features
5
notifications
1
octane
1
open web
4
origin trials
2
pagespeed insights
1
pagespeedinsights
1
passwords
1
payment handler
1
payment request
1
payments
2
performance
20
performance tools
1
permission UI
1
permissions
1
play store
1
portals
3
prefetching
1
privacy
2
privacy sandbox
4
private prefetch proxy
1
profile guided optimization
1
progressive web apps
2
Project Strobe
1
protection
1
pwa
1
QUIC
1
quieter permissions
1
releases
3
removals
1
rlz
1
root program
1
safe browsing
2
Secure DNS
2
security
36
site isolation
1
slow loading
1
sms receiver
1
spam policy
1
spdy
2
spectre
1
speed
4
ssl
2
store listing
1
strobe
2
subscription pages
1
suspicious site reporter extension
1
TCP
1
the fast and the curious
23
TLS
1
tools
1
tracing
1
transparency
1
trusted web activities
1
twa
2
user agent string
1
user data policy
1
v8
6
video
2
wasm
1
web
1
web apps
1
web assembly
2
web developers
1
web intents
1
web packaging
1
web payments
1
web platform
1
web request api
1
web vitals
1
web.dev
1
web.dev live
1
webapi
1
webassembly
1
webaudio
3
webgl
7
webkit
5
WebM
1
webmaster
1
webp
5
webrtc
6
websockets
5
webtiming
1
writable-files
1
yerba beuna center for the arts
1
Archive
2024
Aug
Jun
May
Apr
Mar
Feb
2023
Nov
Oct
Sep
Aug
Jun
May
Apr
Feb
2022
Dec
Sep
Aug
Jun
May
Apr
Mar
Feb
Jan
2021
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2020
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2019
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2017
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jun
May
Apr
Mar
Feb
Jan
2015
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2014
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2012
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2011
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2010
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2009
Dec
Nov
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2008
Dec
Nov
Oct
Sep
Feed
Follow @ChromiumDev
Give us feedback in our
Product Forums
.