Blocking 3.5 Tech Evangelism Bugs: http://bit.ly/13wFtT
- Full perf keyword list for 1.9.1 is here
- List of items fixed after 1.9.0 but before we branched 1.9.1 with perf in the keyword field: link
(Note from bz: This has DOM nodelist DOM-walking and property access performance improvements, security wrapper performance improvements, various TM stuff, major getElementById improvement for non-HTML and non-XUL documents, various gfx performance fixes. That's at a first skim.)
Faster Page Loading
We've been busy improving page load times for everyone. We don't all have gigabit ethernet running into our houses and the changes we've made are especially noticeable on medium to high-latency networks. DNS pre-caching, image, script and CSS pre-loading all mean faster page loads.
[ will include graph ]
We've done a lot of work in Firefox 3.5 to make DOM access and manipulation faster - over 2x faster than Firefox 3 overall. We've removed overhead from our code, added new fast-access query and manipulation methods and added support for new standards.
Awesomebar Perf Improvements
Awesomebar gets even awesomer. We've done a lot of work to make everyone's favorite way of accessing their favorite sites smoother, faster and more reliable.
- Get some metric from edilee on how awesomer it is.
- http://autonome.wordpress.com/2009/05/05/front-end-performance-in-firefox-35-and-beyond/ - great post from dietrich on what they did with the 3.5 cycle
- image pre-loading (not landed yet): https://bugzilla.mozilla.org/show_bug.cgi?id=457809
- css pre-loading (not landed on 1.9.1): https://bugzilla.mozilla.org/show_bug.cgi?id=457810
- speculative loading of script elements (landed): https://bugzilla.mozilla.org/show_bug.cgi?id=364315
- DNS pre-caching
- JS regex performance with \s and \S - https://bugzilla.mozilla.org/show_bug.cgi?id=453658
- DOM quickstubs (blake)
- XPCWrappedNative wrapper cache (blake + peterv)
- Gecko's new image cache http://blog.mozilla.com/joe/2009/03/30/geckos-new-image-cache/
- "28 MB was saved on 6 November through redesign of font selection." http://blog.karlt.net/2008/12/firefox-31-beta-2-on-linux-uses-less.html
- Noticeably faster font selection on linux: http://blog.karlt.net/2008/12/noticeably-faster-font-selection-with.html
- Places fsync reduction work
- Async storage API for add-ons and core to use (helps with interactive perf)
- Tracking bug for color space management: https://bugzilla.mozilla.org/show_bug.cgi?id=444659 and blog post: http://bholley.wordpress.com/2008/09/12/so-many-colors/ and color management rewrite: https://bugzilla.mozilla.org/show_bug.cgi?id=481926
- XPCOM cycle collector improvements?
Web Developer Features
Video / Audio
Web developers and site designers can now get a more consistent look across platforms by using downloadable TrueType and OpenType fonts in their designs instead of relying on the fonts the user happens to have installed.
Refer to [dbarons blog post http://dbaron.org/log/20090317-fonts] also.
Firefox 3.5 supports cross-site XMLHttpRequests, which means your web applications can now access material from other servers, as long as the servers are configured to allow it.
Firefox 3.5 has improved support for JSON, with native handling of JSON objects to make encoding and decoding JSON faster than ever before.
Support for CSS 3 media queries lets style sheets more precisely control the appearance of your content by looking at very specific details about the device on which the content is being rendered; for example, you can render your site differently when printing on a color printer as opposed to printing in black and white.
Firefox 3.5 supports HTML 5 offline caching of resources; this lets web applications cache static content on the user's system for reuse, instead of requiring it to be reloaded over the network each time it's needed. That means much faster web application load times.
Storage (if localStorage lands on 1.9.1)
[ it's landed, need description and reference here ]
The new Geolocation API lets users provide their location to web applications if they wish. This helps web sites find the user's nearest coffee shop, for example.
New drag and drop API
Firefox 3.5 introduces a new API for handling drag and drop, letting web applications support this technology better than before, with more refined drag and drop events, better support for specifying drag targets, and more.
CSS (20+ new and updated properties)
- ::before and ::after updated to CSS 2.1
You can now use the
list-style-*properties, as well as some
displayproperties, with the
::afterselectors in CSS.</code>
- text-shadow property
You can now use the
text-shadowproperty to apply shadow effects to text and text decorations.
- opacity is supported (as opposed to -moz-opacity
Now that CSS has a
-moz-opacityextension has been removed.
- word-wrap is supported
word-wrapproperty lets content have more control over word wrapping.
-moz-box-shadowlets you cast a drop shadow from or into the frame of almost any element.
-moz-border-imageproperty lets you specify an image to use as a border around elements; this makes drawing complex looking widgets easier than before.
-moz-border-radiusproperties are now compatible with the latest CSS3 draft spec -- in particular, they support elliptical curves. The devmo documentation still needs to be updated (bug 491529).
-moz-column-ruleproperty gives you control over the style, width, and color of the rule drawn between columns in multi-column layouts.
-moz-column-rule-widthproperty lets you control the width of the rule drawn between columns in a multi-column layout.
-moz-column-rule-styleproperty lets you style the rule drawn between columns in a multi-column layout.
-moz-column-rule-colorproperty lets you set the color of the rule drawn between columns in a multi-column layout.
-moz-column-gapproperty lets you set the width of the gap between columns in a multi-column layout.
- -moz-nativehyperlinktext color value
-moz-nativehyperlinktextcolor value represents the user's system default hyperlink color. This makes it easier to create web applications that look and feel like native applications.
On Mac OS X, you can now use the
-moz-window-shadowproperty to specify whether or not a window should have a shadow. This is most useful when skinning Firefox.
:-moz-system-metric(mac-graphite-theme)selector matches elements if the user has chosen the "Graphite" appearance in their system preferences on Mac OS X. This lets themes better adapt to the look of the user's system.
- New values for -moz-appearance
In order to make it easier to skin Firefox to match the latest Windows and Mac OS X system themes, Firefox skins may now use the new
- CSS transforms
Firefox 3.5 introduces support for CSS transforms, which let web content rotate, skew, and translate HTML elements. If you've ever wanted to render your content upside down or sideways, now's your chance!
These new CSS pseudo-classes make it faster and easier to match elements based on their position in the DOM tree.
These new CSS pseudo-classes make it easy to match elements based on their type; for example, you can quickly style the first or last row of tables using these pseudo-classes.
- DOM selectors API
- NodeIterator object
NodeIteratorobject lets you iterate over the nodes in a DOM subtree. You can filter the list to only look at nodes you're interested in as well.
- MozAfterPaint event
MozAfterPaintevent is sent to interested observers when a window update is done being painted; it even tells you what part of the window was repainted.
- MozMousePixelScroll event
If you want pixel-precise scroll wheel events, the new
MozMousePixelScrollevent is for you. You can now get extremely accurate mouse scroll wheel data on devices that support it, such as Apple's MacBook trackpads.
- ICC Color Correction is on by default (tagged images only)
You can now ensure that your graphics look exactly the way you intend by embedding ICC color correction tags into them. By default, Firefox 3.5 applies color correction to tagged images.
- The defer attribute is now supported on script elements
Web applications may now specify that a script can be allowed to run while the page continues to parse and render by using the
- Apply SVG effects to HTML content
You can now apply SVG effects to HTML content. This lets you make your HTML content pop with masks, clipping, and filters.
- Mouse Gesture Events
We've added support for mouse gestures for web developers. You can now listen for for gestures and make your web site act intelligently to the new events.
- Progress events on XMLHttpRequest
Web applications can now monitor the progress of XMLHttpRequests in progress using a new set of events that occur while requests are being handled. This makes it possible to provide better feedback to the user while data is being transferred to and from your web application.
- Cross-site access controls
Firefox 3.5 provides support for cross-site HTTP requests, including those made by
XMLHttpRequest, to work across domains on servers configured to support it.
- Input Events and DOM Timeouts block during synchronous XMLHttpRequests
We now properly block input events and DOM timeouts when you're doing a synchronous XMLHttpRequest. Previous versions of Firefox did not.
- Text API for Canvas
You can now draw text in a canvas using standard HTML 5 drawing methods.
- Shadow effects in a canvas
You can now use shadow effects on anything you draw in a canvas, including text.
- moz-opaque attribute is supported
You can improve performance of DOM rendering by using the
-moz-opaqueattribute to indicate that a canvas will not use any translucency. If the canvas knows translucency isn't a factor, it can optimize painting performance for you.
- Private browsing mode
- Private browsing mode allows you to browse the Web without leaving any trace on your computer of where you have been. (Family friendly examples to use in the copy include birthday presents, surprise vacations, researching medical conditions, etc) Talking points could focus on how Firefox is your personal browser, is respectful of your privacy, let's you go "off the record", etc.
- Clear recent history window
- Clear recent history allows you to easily delete from Firefox's memory where you have been on the Web for a particular range of time. It's essentially the same thing as private browsing mode, but in reverse. This is useful for if you forget to go into private browsing mode, and gives the user more control over their privacy.
- Better privacy options
- Firefox now simply asks if you would like it to store information about where you go on the Web, or not. Users now also have more control over what types of information are displayed in the awesome bar (do we normally say location bar in formal text?)
- Ability to have Firefox always running in private browsing mode
- The privacy options in Firefox have been simplified so that you can easily make sure that Firefox isn't capturing any information about where people go on the Web. This is useful for public computers, or users who are very privacy conscious.
- Forget About This Site
- when you are viewing your history, you can now remove all traces of a particular Web site
- The site identity button now displays the domain name for SSL
- This makes it easier to notice when you are entering or exiting a secure connection, and who you are connected to. It's easier to view the domain name on the button than trying to parse it out of a complicated URL, and clicking on the button gives you additional information about the site's identity.
- Tear off tabs
- You can now tear tabs off and they turn into separate windows
- New tab button
- Creating a new tab no longer requires an arcane keyboard shortcut (honestly we were so late the party on this one it feels wrong to promote it as a user facing feature)
- Privacy preferences for filtering the type of information shown
- You can have the awesome bar display only bookmark matches, history matches, both or neither. This gives users more control over the personal information being displayed as they use their browser, and also lets them customize the interface to the specific way that they want to use it.
- Now possible to restrict the url bar autocomplete results to bookmarks/tagged/history entries and match only url/title
- You can restrict the search to your history by typing “^”, or bookmarks with “*”, or tagged pages with “+”. To make what you’ve typed match only in the URL type “@”, and for title/tags only use “#”., more details here: http://ed.agadak.net/2008/07/firefox-31-restricts-matches-keywords
- Better UI for keyword searches
- After right-clicking a search box on a page and giving it a keyword, you can now see what you're going to search when you type the keyword in the location bar.
- I couldn't figure out how this works, checking with mardak. Beltzner provided this screen shot, of entering "bug foo":
- Multi-touch gestures on OS X and Windows 7
- need description from Mardak
- Tag auto complete
- We now have autocomplete in the tag field when you are bookmarking a page
- Tag bulk editing
- In the library window you can now edit the set of tags for multiple selected bookmarks
- Better interface for session restore
- Firefox automatically restores after a crash, if there are two crashes presents the user with a tab instead of a modal dialog and they can select the pages that they want to restore. You can see this page by going to about:sessionrestore
- Undo close window
- You can now restore windows that you close with History > Recently Closed Windows
- Improved date containers in History Sidebar, and in History in the Library
- History is now grouped into Today, Yesterday, the last 7 days, and specific Months
- Scrolling with Macbook touchpads is now smooth and pixel-precise
- OS X: Shift is no longer required to drag folders around on the bookmarks toolbar
- Now using a new search text box widget for all search interactions in the interface
- Software update dialog no longer grabs the focus
- OS X: Dragging the window is now possible using toolbars and statusbar
- Arrow on columns in a list view indicating the sort direction was backwards
- Better notification bar animation
- Vista: corners of tooltips are now transparent
- Vista and XP: group boxes now have native themeing
- OS X: rounded corners on contextual menus
- Correct use of progressive disclosure controls
- A lot of alignment fixes
- Now using some of the icons that were originally created for Firefox 3
- In a text field, the notch on the caret is no longer displayed by accident
- Vista: visual changes to the design of the sidebars
- Red dinosaur favicon removed from getting started
- Linux: icons in the location bar are now aligned
- No longer drawing the focus ring on the tab bar when you click on a tab
- New file system level icons (disk image, document)
- New crash reporter icon
- New software update icon
- OS X: support for the graphite OS setting
- OS X: tabs in windows like Page Info or the add-ons manager now appear native
- OS X: Controls in background windows (like scrollbars) are now grayed out correctly
- OS X: The tabs in the Advanced preferences pane now use the modern appearance
- OS X: Form controls in websites now look crisp most of the time
- OS X: Search fields now appear native
- OS X: Improved unified toolbar gradient