Archive for the ‘Rendering Engines’ category (1 post)

Scrolling transforms, synchronized passwords and the new resources panel

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 9

While the release managers were busy with the release of Chrome 7, the rest of the developers checked in another 635 changes. Meanwhile, over at WebKit, 498 more changes contributed to another busy week.

As part of the ongoing effort on making the Web Inspector tools as convenient as possible, Pavel Feldman continued work on merging the Storage and the Resources panels. The new panel contains both the storage items as the resources used to build the current page, combined in a clear tree view. Meanwhile, the Network panel UI has been polished a bit, which hopefully brings it a bit closer to being released.

Google’s Ben Murdoch added support for two new methods on the Document object: document.createTouch and document.createTouchList. Until now, these two properties were only available for the iPhone browser, but since other WebKit-based mobile browsers are gaining strongly in popularity, as well as the fact that many websites use them to check for touch-support, it made sense to add them to the document object.

No, it did not open Anne van Kesteren’s website in some ancient proprietary browser, this actually happened in the latest Chromium build. A subject I have deliberately not mentioned in my posts is Dave Hyatt’s amazing work on supporting the text and block-flow defined in the CSS3 Writing Modes module. Last Thursday a patch landed adding the possibility to have vertical text on your pages.

While there’s still a lot of work to do before the implementation will be finished, you can play around with it by downloading a Chromium build and using the “-webkit-writing-mode” property with the “vertical-rl” value. The feature has been available in Internet Explorer since version seven as well.

In terms of improved standard support, WebKit’s document.write now ignores calls from delayed scripts (r5616 of the HTML5 spec). The “in select”-mode has been added to the HTML parser and the “in foreign content”-mode has been rewritten. The rich-editing RemoveFormat command has been rewritten as well.

Other changes last week include:

I’m hoping to publish a blog post about the CSS writing modes in the next week, as there certainly are a lot of interesting things to talk about. And, of course, another last week update in about seven days!

Read more (4 comments) »

Spontaneously combusting browsers, the FileSystem API and surround sound

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 8

With another 1080 commits decorating the repositories there’s enough to tell you about last week again.

There has been a lot of discussion surrounding the about:labs page last week. Firstly, it has been renamed to “about:flags“, and for good reason: almost all criteria for adding new entries to the page have been lifted, meaning that pretty much everything which has a command line flag may have a place on that page. While this obviously is a good thing for convenience, it also means something could be enabled which constantly crashes Chrome. For that reason, the “–no-experiments” flag has been added.

Within WebKit support for the “onreadystatechange” event on the Document has been added, anchor elements now have the getParameter method from Adam Barth’s URL API and canvasses are now aware of the currentColor color. Also, all IndexedDB related properties on the window object have been prefixed with “webkit”. Unfortunately, support for <script defer> has been reverted.

The Chromium Team chose to enable their implementation of the FileSystem API by default. The API, which still is rather unknown among developers, has been built on top of two other specifications: the File API and the File Writer API. When you combine them and throw in some directories, Chrome’s latest feature comes out.

One of the larger use-cases I can see with the API is its ability to act like an extensive, hierarchic and programmable Application Cache. Suppose you’re making an online application which works like Spotify, the interface, playlists and all could be stored offline using a manifest, but the music itself wouldn’t be available offline. Using the FileSystem API, you could create a directory for each playlist and store the audio-files in them. There is a downside too, as the advocated API is asynchronous, it has a steep learning curve.

Other changes this week include:

  • Chromium now supports 5.1 surround sounds, no more downmixing to stereo.
  • The screen.availLeft property can now contain negative values as well.
  • Some basic documentation about creating CRX (extension) files has been released.
  • Search providers may now have separate URLs for instant results.
  • Zombies have been clarified.
  • You can now disable the spellchecker in design-mode by setting the spellcheck attribute.
  • A ruby’s base will no longer be affected by generated :before/:after content.
  • Scrollbars on iframes with scrolling=”no” are now really gone.
  • Some initial work has been done on having transforms affect a page’s scrolling.
  • The “transparent” color is now valid in WebKit.
  • Some fixes were done related to JavascriptCore’s Automatic Semicolon Insertion.
  • execCommand(‘formatBlock’) now supports twelve new elements.
  • The WebKit Cairo port now uses their new ContextShadow system for shadows.

So, that’s it for this week. Thanks for reading and if you’ve got any comments or suggestions, feel free to add a comment about them, e-mail me or poke me on Twitter!

Read more (3 comments) »

IndexedDB, Milestone 8, ES5 Strict Mode and progress on Print Preview

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 8

Only three commits short of 700 in the past week, the Chromium Team has been quite active. The Chromium nightlies have been pushed up to version 8, just over seven weeks after version seven. WebKit received 485 commits, but there were some large changes among them like support for ECMAScript 5’s Strict Mode.

Well over two years after Eric Lake filed Issue 173, there is finally some visible progress on previewing a print in Chromium. When using the latest nightly, you should launch Chrome using the “–enable-print-preview” flag and browse to “chrome://print/” to see a (not working!) preview of the feature. Enabling the Cloud Printing Proxy for Windows may now be done through the Labs page and a lot of work on supporting the CSS Paged Media Modules has been completed already. The feature is currently scheduled for milestone 9, which may be as soon as six weeks from now.

Another large change is that support for IndexedDB has been enabled by default. IndexedDB is a specification originally proposed by Oracle, but currently is being edited by experts from Google, Mozilla and Microsoft as well. Especially the latter makes this interesting, because since Opera’s Charles McCathieNevile has been positive about IndexedDB as well, chances on getting an interoperable database system are looking good.

The Web Inspector team hasn’t been idle either, and although I haven’t said much about it in the past few weeks, there certainly are some exciting changes coming up. Some more fine-tuning was done on the Network panel, the Extension API now also exposes a document’s body. Setting breakpoints on specific events will become a possibility too! And did I mention remote debugging?

Many of these features are still disabled in the Chromium builds. If you’d like to play around with them, you will either have to build Chromium yourself or create yourself a WebKit build. In time these features will be enabled for all Chromium builds, something which surely will be announced on the Chromium Blog.

Also great news for the Safari users, as Oliver Hunt landed support for ECMAScript 5’s Strict Mode just a few hours ago. In a nutshell, strict mode will disable some really bad practices in your JavaScript code like eval() and the with-construct. These changes couldn’t be applied by default, considering ECMAScript 5 had to remain backwards-compatible with ECMAScript 3. Until today, Kangax’ compatibility page shows that BESEN was the only JavaScript engine to support it, although Mozilla is actively working on supporting it.

Other changes this week include:

Finally I just want to note down that I really don’t think recordings like these are going to make me popular, even though Christian Heilmann obviously thinks otherwise. A big thank you to the organization of Fronteers 2010, all the speakers, and of course all the visitors. The conference has been really great, cheers for that!

Read more (15 comments) »

WebP Images, major SVG Text improvements and Element.classList

Published on in Google Chrome, HTML, Last Week, tech, WebKit. Version: Chrome 7

With 632 commits to the WebKit repository, and 608 towards the Chromium one -totalling 1240 commits-, it was a busy week. Safari seems to be gearing up for a new minor release, and Google pushed Chrome 7 to users participating in the beta-channel. Google also published a page explaining the differences between extensions, Packaged Applications and Hosted Applications.

Nikolas Zimmermann has done some amazing work on WebKit’s SVG implementation: almost all SVG Text layout-code has been rewritten. Because of this change, text in SVG files already consumes much less memory and performs better than it used to do. By splitting the layout process for texts into three phases rather than a single one, future patches can add various forms of caching. This will improve the rendering performance even more.

Following the WebM project, which provides a free and open-source video codec, Google has announced WebP: an image format based on VP8’s intra-frame techniques. According to Google’s announcement, using WebP will reduce the size of your images by an average of 39%, compared to today’s image formats.

In reality, I’m not so sure. Jason Garrett-Glaser, an x264 developer, concluded that the quality is poor, and that Google’s timing for announcing the format is odd. Jacob Miller, obviously being less biased, concluded that the compression schema indeed outperforms JPEG, but that WebP isn’t ready for real-world usage yet.

I absolutely agree that the timing surrounding this announcement is weird. There are some important features not (yet) available in WebP which could prove to be decisive in the success of the image format. I’m mainly talking about the limited file size it supports (a maximum of 16383 by 16383 pixels), no support for storing lossless images and no transparency (nor translucency?). For a future-proof image format, Google could also have looked at supporting other color-spaces (possibly even non-RGB, like the CIE XYZ one). It makes me think like the announcement was a bit rushed, especially due to a sentence starting with “we plan to add”…

In my opinion, one of the primary things lacking for web development was a convenient way to modify the classes which applied to an element. While jQuery offered some excellent methods to do so, a proper native way wasn’t available. For that reason HTML5 introduces the “classList” property, which provices such an interface to each element on your page. While support for the property was added to Firefox well over a year ago, Erik Arvidsson added support to WebKit last Monday!

Other changes this week include:

Starting next Thursday, Fronteers 2010 will be taking place at Pathé Tuschinski in Amsterdam. With speakers like Håkon Wium Lie, Christian Heilmann and Jeremy Keith it’s bound to become a success :). Finally, thanks to Finnur Thorarinsson for informing me about the issue, the Chromium Command-Line Flag RSS Feed will now properly include added arguments. They previously were included as if they got removed.

Read more (2 comments) »

Revision 60.000, first bits of the URL API and pingin’ the anchor

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 7

With the addition of another 552 commits in the last week, Chromium has breached the milestone of sixty thousand commits! In comparison, revision 60.000 landed in WebKit exactly four months ago. WebKit gained the contents of 539 commits last week, done by about a hundred different authors.

Support for the ping attribute on anchors (<a ping>) has been added in WebKit four days ago, following Firefox who had an implementation about four years ago. There are various ways to do this already, overriding the click-event and send out a ping using XHR, for example. The feature is still disabled by default, although a command line flag might be added in the near feature.

One of the things Adam Barth is currently working on is an URL API. Citing it, the API can be used for constructing, parsing and resolving URLs through scripting, easening up tasks like getting and setting parameters. Today the first part landed in WebKit, which added the “origin” property.

I’ve got quite some plans for the post next week, as I realize this one is lacking some graphical love. Until then, don’t forget that there’s an RSS Feed available for updates to Chromium’s command line flags, which could certainly give you a nice indication of what the team’s been working on!

Thanks to Ms2ger for a correction: Mozilla did not disable the ping attribute by default due to privacy concerns, but rather because the specification changed shortly before the Firefox 3 release.

Read more (5 comments) »

Last week: no more sarcasm, redesigned History UI and limiting freedom

Published on in Google Chrome, Last Week, Microsoft Internet Explorer, tech, WebKit. Version: Chrome 7

Well over 200 developers added value to the Chromium and WebKit projects last week, delivering a combined total of 1018 patches to the repositories. Different from a week ago, there weren’t any huge noticeable changes this week. Most work was part of larger projects or stability and performance improvements.

Still, there have been a few updates related to standard support. The document.lastModified property was updated according to HTML5 last Tuesday, the Canvas Context will now parse system colors and work on supporting the “block-flow” and “writing-mode” CSS properties seems to have been started.

More work has been completed last week on Google’s effort to move the options dialogs to webpages. You can enable the tabbed options page yourself by supplying the –enable-tabbed-options flag to Chrome or going to the about:labs page if you’re running Google Canary or Chromium. Furthermore, information and screenshots about the new History UI are available as well. Check out issue 52697 and the new designs.

Are you one of the poor folks working at a company which uses Internet Explorer as their primary browser, as well as (group) policies to severely limit your freedom? Good news! In the future you might be using Google Chrome with (group) policies which severely limit your freedom! The team seems to be gearing up in order to make their browser more interesting for larger organizations, as can be seen on the Documentation for Administrators page on the Chromium website, including quick-start guides for Windows, Apple and Linux.

Other changes in Chromium and WebKit last week:

And that’s it for this week! Keep in mind, if you’d like to see people like Brendan Eich, Steve Faulkner, Christian Heilmann, Paul Irish and Jeremy Keith speaking about the web, there’s only a few tickets left for Fronteers 2010. The conference will take place on the 7th and 8th of October in Amsterdam, the Netherlands. Finally, a big Thank You to Steve Souders and Juriy Zaytsev for commenting on the <script> loading graph!

Read more (1 comment) »

Last Week: Asynchronous script execution and GPU Acceleration by default

Published on in CSS, Google Chrome, Last Week, tech, WebKit. Version: Chrome 7

With just over a thousand commits in the last seven days, the majority of which were pushed towards the WebKit repository, activity seems to be slightly down in comparison with the previous weeks. Nevertheless, last week brought some interesting changes: changes to the script element, CSS timing functions and Hardware Acceleration for the masses.

On Wednesday Google made an announcement which was quite hard to miss: Google Instant. Google Search anticipates on what you’re going to search for and starts displaying results while you’re still typing. Chrome now features a similar possibility named match preview, although I think Chrome Instant sounds more appropriate. You can enable it by supplying the –enable-match-preview flag when launching Chromium, but keep in mind that the implementation still is rather rough.

Since the new HTML5 Parser and Tree Builder in WebKit kept timed script execution in mind, Tony Gentilcore was able to land support for <script async> only a few days after he added support for the defer attribute. To re-iterate, using the defer-attribute defers executing the script to after parsing the page has been completed. The async-attribute enables asynchronous execution of the script as soon as it’s available, therefore not blocking the parser.

Following the discussions of the face-to-face meeting of the CSS Working Group three weeks ago, Apple’s Dean Jackson modified the CSS3 Transitions and Animations modules to include a new timing function called “steps“. The name is fairly obvious: instead of having a continuous transition, the selected properties transition in a predefined number of steps. This timing function landed in WebKit last Thursday!

As you can see, all seven timing functions for transitions have been included in this example. The animated color-boxes in the JavaScript column show what a browser should be doing according to the specification, while the CSS column shows how your browser displays it. Furthermore, if you’re using a modern browser, you can see an animated graph displaying how a certain timing function works by clicking on its name!

Other updates which occurred in WebKit and Chromium last week include:

Finally, for the ones of you who like to be up-to-date as well, I’ve added RSS feeds for my Vendor Prefixed CSS Properties page (feed) and the overview pages of Google Chrome Command Line Switches (feed). Since most content on these pages gets updated automatically, I figured this would be a nice addition. While I cannot guarantee that they already work perfectly at this point, in theory they should be fine. See you next week!

Read more (7 comments) »

Last week: Tessellation and deferred script execution for 200 million people

Published on in Google Chrome, Last Week, tech, WebKit. Version: Chrome 7

Exactly 625 days after the release of the first stable version, the Google Chrome browser has hit an important milestone: over 10% of the internet users -about 197 million people- use Chrome as their browser. That equals about 315 thousand new users every day, which is rather mind blowing if you ask me. Being well aware of this, the Chromium and WebKit teams were responsible for another 1.137 commits in the last week!

The sixth major version of Google Chrome has been released as a stable version, bringing support for tons of new features and better performance and stability. Furthermore, for a brief moment it looked like Chromium would be getting an auto-updater. While this is something people have been asking for ever since the first Chromium builds were released, it looks like Google Canary will remain to be closest to that idea.

Hardware Acceleration already has been available in WebKit for a few months, but work continues to optimize performance. Now that 2D Canvasses may be accelerated too, work has been started on adding tessellation following Loop and Blinn’s algorithm. While this has caused quite some discussion, the first parts, including the polygon tessellator from OpenGL, have already landed. More details on the implementation being used are available as well.

As for new HTML and CSS related features, Tony Gentilcore added support for delayed script execution using the defer attribute. Furthermore, percentages may now be used as values for the border-radius CSS property. The used radius will be equal to the given percentage of the width or height of it’s border-box.

  • Video elements no longer automatically loop after playback has completed.
  • Enabling accelerated compositing in Chromium won’t make your scrollbar blue anymore.
  • Synchronous File Reader operations may now be used in Web Workers.
  • Clicking on a WebKit Notification now fires a click event.
  • The implementation of the Audio API in WebKit is being moved to the main development branch.
  • Scripts have been added to generate ADMX and ADML files for enterprise policies.
  • Chrome’s ready to run an entirely sandboxed (thus safe!) instance of Adobe Flash.
  • The experimental sidebar view (and API) is now available for Mac OS X users as well.
  • Text on the badge of an extension has a decent font size again (or too big this time?)
  • Audio Recording for speech input fields is now available for Linux as well, via ALSA.
  • The V8 JavaScript engine has reached version 2.4: various bugfixes and performance improvements.

A bit technical this week, I realize that 🙂 For this week it looks like accelerated compositing and 3D CSS will be enabled by default and work on full-screen video could come closer to being finished. With Firefox implementing 3D CSS as well, I’m curious about the demos which surely could be arriving soon now.

Read more (4 comments) »

Last week: CSS WG meeting at Opera, Chrome Labs and the year 275759

Published on in CSS, Google Chrome, HTML, Last Week, Standards, tech, WebKit. Version: Chrome 7

Last week the CSS Working Group met at Opera’s office in Oslo, Norway, for a face to face meeting. Following tight planning, the members met three days in a row discussing topics ranging from the open CSS 2.1 issues, various CSS 3 modules and other subjects such as hit testing. Some of the results are clear: all open CSS 2.1 issues have been resolved and a range of specifications will have their priority increased (such as CSS Transitions and Transforms).

Furthermore, CSS 2.1 is expected to become a Proposed Recommendation by the end of the year. This would mean that the specification could be a W3C Recommendation early next year, allowing the working group to focus their attention to CSS 3 and beyond. During the meeting Mozilla’s David Baron also mentioned that Firefox will be implementing 3D Transforms, already available in Safari and Google Chrome.

As for Chromium and WebKit, a combined amount of 1282 commits were uploaded to their repositories. While this means there were fewer commits than to last week, there’s a lot more news to share about the projects. I’ll highlight some interesting items which occurred last week, and briefly list other interesting changes.

Firstly, it’s becoming more and more obvious to the Chrome team that their browser is lacking important features for the enterprise market. An area Google can tackle is policies. Policies are a way of defining the settings of the browser through the registry, Microsoft’s Administrative Template files or the, so far unannounced, ChromeOS Enterprise Daemon. Other policy and preference stores may be added in the future.

Policies allow companies to easily define common settings such as the proxy server to use, account synchronization and whether JavaScript should be enabled for websites. Unfortunately this also enables companies to block Chrome updates, but I’m sure the Chrome team will be looking at options to prevent people from doing this. Last week support for three new policies was added.

Another large update is the initial inclusion of the Google Chrome Labs page. Most other Google products, as well as Google itself, include a page with experimental features. Considering Chrome supports about 320 command line flags it won’t surprise you that adding such a page makes certain tests a lot more accessible. Google’s Nico Weber committed the initial version just over four days ago. You can try it out yourself by downloading a recent nightly and visiting about:labs.

The WebKit team has invested a lot of time in improving their support for various standards. Adam Barth and Eric Seidel enabled the last part of the new HTML5 Tree Builder: fragment parsing. Furthermore support for HTML5 compliant doctype switching was added, symbolic CSS3 list-style-types are now supported and file inputs now respect HTML5’s fake path. Finally, due to this addition, you can now use HTML5’s date input types to start making plans for your birthday in the year 275759.

Now that the new Tree Builder has been completed, except for a lot of fine-tuning of course, thousands of lines of code were up for deletion. The old Tree Builder itself wast removed on the 24th of August. Further cleanups were done with the removal of their current implementation of Mozilla’s XML Binding Language (XBL). It hadn’t been maintained in years, so the decision was made to remove it in total.

Further updates last week

Starting next Thursday I will be in Brighton, United Kingdom. Together with KrijnAnne and Matijs I’ll be attending dConstruct 2010. Perhaps I’ll be seeing you there? 🙂

Read more (3 comments) »

Last week in.. WebKit and Chromium!

Published on in Browser Vendors, Google Chrome, Last Week, tech, WebKit. Version: Chrome 7

It’s hard to keep track of huge open source projects which receive hundreds of updates per week. In case of WebKit and Chromium, a total of 1113 changes were landed in the past seven days alone, including lots of new features, enhancements and of course tons of bugfixes. Inspired by Paul Irish and Divya Manian, I’m going to experiment to see whether it’s doable to regularly write (smaller) updates like these.

In the past seven days WebKit has seen 396 commits done by about 80 authors. A decent number of them were done by Google engineers working on storage related systems. Firstly there is the File API specification; Chromium has been supporting various asynchronous File Reader functions for a few months now.

Last Thursday Eric Uhrhane committed the first part of the File Writer spec. Even though it’s only a placeholder, it shows that Google’s actively working on implementing the features. Official word on synchronous methods is still pending.

The other storage system they’re working on is a specification I wasn’t aware of myself, a Directories and System extension to the File API. The initial bits of the implementation were committed by Kinuko Yasuda on Monday. Being built entirely on top of the File API, it’s likely that the main use-case for the implementation will be Chromium OS. Regardless, most of the use-cases would be useful in current browsers as well.

Folks at Apple have been busy with improving the quality of the WebKit2 interface. Windowless plugins can now paint and receive mouse events, which means that the Vimeo Flash Player can be used again on Windows builds. A number of improvements for the media playback have been added as well, such as improved handling of detection of the “application/octet-stream” content-type, as well as restoring the intrinsic size of a video after loading its poster. Simon Fraser solved a number of random crashes which became more obvious now that accelerated compositing has been implemented.

Also exciting news is, even though it has been working for a while already, that support for inline MathML has been announced for Safari nightlies. MathML is a way of rendering complex math straight in your browser, pretty much like SVG is for graphics. MathML can be, just like SVG, included in any HTML5 page. Henri Sivonen has created a nice example demonstrating both technologies.

Within the Chromium team work is hard on its way to perfectly integrate ANGLE into the browser. DirectX libraries will be distributed with the Windows versions and a public experiment has started to gather statistics about GPU capabilities. The browser also received per-plugin content settings, although it’s still protected behind a runtime flag.

The version of Chromium’s trunk has been updated to 500, which certainly is a milestone. An early implementation of the remote WebDriver API has landed, allowing basic remote control of your browser. Finally, the V8 JavaScript engine has been updated to version 2.3.9 (changelog).

Other recent changes

Of course, with a total of 1113 commits in both repositories, there’s a lot which hasn’t been mentioned yet!

  • Eric and Tony have solved some more issues around the HTML5 Tree Builder.
  • The Qt port now supports touch events in WebKit2, courtesy of Juha Savolainen.
  • Chromium’s accelerated compositing rendering logic has been refactored.
  • <style> elements within <noscript> are now ignored if JavaScript is enabled.
  • Kenneth Russell now is a WebKit reviewer (congratulations!).
  • Some SVG Pattern fixes were landed by Nikolas Zimmermann.
  • Pushed SPDY streams in Chromium now get closed automatically as well.
  • Accelerated Compositing for <canvas> will be compiled in by default.
  • Chromium can now use the Windows 7 Location Provider for Geolocation.

Even though it’s just a week, an incredible amount of work happens within these two huge open source projects. In order to include other browsers (Firefox, Opera and Internet Explorer) and specifications, I’ll have to cut back on the details quite a bit. This week the CSS Working Group is meeting face-to-face in Oslo, I’m sure that’ll be interesting to include next week :colone;;);

Read more (13 comments) »