Evangelism/Firefox3.5

Tech Evengelism

Blocking 3.5 Tech Evangelism Bugs: http://bit.ly/13wFtT

Performance

  • 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.)

Key Items

TraceMonkey

Screaming-fast JavaScript. With JavaScript that's 3-4x faster than Firefox 3 and 10x faster than Firefox 2, there's nothing you can't do in the browser.

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.

Faster DOM

We've done a lot of work in Firefox 3.5 to make DOM access and manipulation faster - nearly 40% faster 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.

Other Items:

Web Developer Features

Key items

Video / Audio

We've included the world's first implementation of HTML 5 audio and video support, letting web developers include rich media controlled using JavaScript, HTML, and CSS instead of through proprietary technologies.

@font-face.

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.

XHR

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.

TraceMonkey

Web applications and sites using JavaScript now get blazing fast performance using the new TraceMonkey JavaScript runtime.

Worker Threads

Multithreading support finally comes to the Web through the new Web Workers feature, which allows JavaScript code to spawn off threads to handle tasks in the background. Web applications can now take advantage of modern multicore processors.

Native JSON

Firefox 3.5 has improved support for JSON, with native handling of JSON objects to make encoding and decoding JSON faster than ever before.

Media Queries

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.

Offline Support

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.

Other items

  • Storage (if localStorage lands on 1.9.1)
  • Geolocation

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 position, float, and list-style-* properties, as well as some display properties, with the ::before and ::after selectors in CSS.

  • text-shadow property

You can now use the text-shadow property to apply shadow effects to text and text decorations.

  • opacity is supported (as opposed to -moz-opacity

Now that CSS has a opacity property, Mozilla's -moz-opacity extension has been removed.

  • word-wrap is supported

The new word-wrap property lets content have more control over word wrapping.

  • -moz-box-shadow

-moz-box-shadow lets you cast a drop shadow from the frame of almost any element.

  • -moz-border-image

The new -moz-border-image property lets you specify an image to use as a border around elements; this makes drawing complex looking widgets easier than before.

  • -moz-column-rule

The -moz-column-rule property gives you control over the style, width, and color of the rule drawn between columns in multi-column layouts.

  • -moz-column-rule-width

The -moz-column-rule-width property lets you control the width of the rule drawn between columns in a multi-column layout.

  • -moz-column-rule-style

The -moz-column-rule-style property lets you style the rule drawn between columns in a multi-column layout.

  • -moz-column-rule-color

The -moz-column-rule-color property lets you set the color of the rule drawn between columns in a multi-column layout.

  • -moz-column-gap

The -moz-column-gap property lets you set the width of the gap between columns in a multi-column layout.

  • -moz-nativehyperlinktext color value

The new -moz-nativehyperlinktext color value represents the user's system default hyperlink color. This makes it easier to create web applications that look and feel like native applications.

  • -moz-window-shadow

On Mac OS X, you can now use the -moz-window-shadow property to specify whether or not a window should have a shadow. This is most useful when skinning Firefox.

  • :-moz-system-metric(mac-graphite-theme)

The :-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 -moz-win-glass and -moz-mac-unified-toolbar values for -moz-appearance.

  • 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!

  • :nth-child
  • :nth-last-child
  • :nth-of-type
  • :nth-last-of-type

These new CSS pseudo-classes make it faster and easier to match elements based on their position in the DOM tree.

  • :first-of-type
  • :last-of-type
  • :only-of-type

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

  • DOM selectors API

Web applications can now use the DOM selectors API to locate elements matching a given selection rule. This is much faster than writing JavaScript code to iterate through elements looking for the one you need.

  • NodeIterator object

The new NodeIterator object 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

The new MozAfterPaint event 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 MozMousePixelScroll event 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 script element's new defer attribute.

  • 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.

XMLHttpRequest

  • 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.

Canvas

  • 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-opaque attribute 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.