Merlin: The Opera magician

Ok. So the code-name has been circulating rumourland for a while. Merlin. Now, the browser is also circulating — “Opera 9.0 TP1 has been released to the forums and newsgroups for our devout testers”. In other words, this is a technical preview.
In addition to being for our dedicated testers, who are willing to live with it being a technical preview this new version is also one for the “Anne van Kesteren groupies”:http://www.molly.com/2005/10/18/web-design-and-development-personality-indicators/#comment-14723.
The reason is simple: This new build offers what I would consider “cutting edge”. Highlights from the “changelog”:http://snapshot.opera.com/windows/w90p1.html:
* Added support for “WebForms 2.0”:http://whatwg.org/specs/web-forms/current-work/ — yes, this means you can specify nifty stuff like @@
* Added opera:config. Which means you can change everything specifiable, from inside Opera. And, it even _uses_ the aforementioned WebForms 2.0.
* Added support for Atom 1.0 feeds.
* Implemented support for “canvas”:http://whatwg.org/specs/web-apps/current-work/#dynamic — This is cool stuff. Expect me to release a few demos, explanations and performance tips. By the way, Opera’s implementation is *a lot* faster than Firefox’.
* XSLT and XPath support.
* Implemented designMode for rich text editing.
* XMLHttpRequest returns the status code for the cached page if the request returns the cached page.
* Acid2 fixes. A whole bunch of them. See Tim Altman’s “latest post”:http://weblog.timaltman.com/node/802 and read his “Acid2 category”:http://weblog.timaltman.com/opera/acid2
* Site-specific settings are now available as part of the site-specific ini settings. A User Interface for these settings is not yet available.
* A whole lot of rendering issues have been fixed. This should make web developers happy.
Other notable features and changes:
* Tab locking: Right-click the tab, select “Lock tab”, and it will not be closed when you do a “Close All tabs”.
* New IMAP module.
* Windows users with more than 1024 fonts intalled will be pleased to know that Opera now works correctly for them as well.
* Changed keyboard shortcuts for closer cross-browser compatibility:
** Ctrl+T replaces Ctrl+N for opening a new tab.
** Ctrl+N opens a new browser window.
** Ctrl+D and Ctrl+Shift+D replace Ctrl+T and Ctrl+Shift+T, respectively, for adding pages to bookmarks.
** Ctrl+Shift+V can be used instead of Ctrl+D for paste-and-go.
h3. Must-reads and must-visits
* “The official announcement”:http://my.opera.com/community/forums/topic.dml?id=108345
* “The changelog for Windows”:http://snapshot.opera.com/windows/w90p1.html
* “The changelog for Unix”:http://snapshot.opera.com/unix/u90p1.html
* “The changelog for Mac”:http://snapshot.opera.com/mac/m90p1.html
And don’t forget to follow this blog for canvas stuff. There is a lot to share and enjoy. *Have fun!*
On a related note, “Opera Mini”:http://www.opera.com/products/mobile/operamini/ was “released”:http://www.opera.com/pressreleases/en/2005/10/20/ to all of the nordic countries earlier today. Which you should be excited about, because Opera Mini is truly a great browser for mobile devices.

11 Comments

  1. so? so what? (Take a look of the last paragraph) 😉

  2. Looking good.
    Even fixed my pet-bugs – positioning on floats.
    Only one crash so far, and no real problems.

  3. Jakub81

     /  2005-10-21

    Canvas faster in Opera? I wrote a small lame test to check this and it’s much slower than Firefox!. Please post your examples ASAP.
    ==

    <html>
    <head>
    <script>
    function draw() {
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    for (i=0;i<=200;i++){
    x = Math.random() * 100;
    y = (Math.random() * 100)+150;
    ctx.fillStyle = "rgba(30, 100, 200, .1)";
    ctx.fillRect (x, x, y, y);
    }
    }
    </script>
    </head>
    <body onload="draw()">
    <canvas id="canvas" width="400" height="400"></canvas>
    </body>
    </html>

    ==

  4. Jakub81

     /  2005-10-21

    errr ok it dissapered, never mind. Anyway it was a loop drawing random 50% transparen rectangles.

  5. Jakub81: So, Opera really _is_ faster, even on your test — I’ve now run and timed your test. The results (average of three runs)
    * Firefox 1.5: 706ms
    * Opera 9: 479ms
    The reason you might perceive Opera as slower for your test, might be because Firefox actually waits until all 200 iterations of your for loop has executed until it paints anything.

  6. Minghong: Oops. I think I’ll insert something sensible, or delete it.(BTW: your use of an f2g.net domain caused the comment to be classified as “junk” by the spam filter)

  7. Jakub81

     /  2005-10-21

    Arve: maybe on faster computers Opera is faster, but on my computer (1.50GHz, 256 MB RAM, Win2000) it renders the rectangles _noticeable_ slower (about 2, 3 seconds, Firefox about 1 second). I think on slower computers the way Opera updates canvas multiple times (Firefox does it only once) makes it so slow.
    I think you should use some slower computers for performance testing in Opera Software. I would be supriced if you wouldn’t do this.

  8. The thing here is that the specification, as I understand it, says that the canvas has to be updated multiple times. That other browsers are not doing that breaks with that. We probably should look into it again though.

  9. Jakub81: I’ve tested with a slightly modified testcase, on a system with roughly the same capabilities as yours:
    ==

    <html>
    <head>
    <script>
    function draw() {
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var then = new Date();
    for (i=0;i<=1000;i++){
    x = Math.random() * 100;
    y = (Math.random() * 100)+150;
    ctx.fillStyle = "rgba(30, 100, 200, .1)";
    ctx.fillRect (x, x, y, y);
    }
    var now = new Date();
    alert(now-then);
    }
    </script>
    </head>
    <body onload="draw()">
    <canvas id="canvas" width="400" height="400"></canvas>
    </body>
    </html>

    ==
    This is roughly as fast in Opera as in FF 1.5b2, but, as Anne says — Opera does the right thing by displaying it incrementally, something FF doesn’t.

  10. Jakub81

     /  2005-10-22

    Well, on mine computer it’s 7000 for Merlin and 2500 for Firefox 1.5b2, so about 2-3x slower. Maybe it’s my graphics card (Riva TNT2) I don’t know.

  11. Using the second version of the test (the one that actually checks the time for real instead of expecting me to know when the browser starts processing):
    Opera 9 TP1; 7526 ms
    Firefox 1.5; 11467 ms
    Before anyone suggests FF would be better if I used a “slower computer”, I am using an IBM thinkpad, 790 MHz, 504 MB RAM, and some onboard graphcs card. Dunno how much memory it has. This computer is certainly not fast.
    And yes, the perceived speed in Firefox is simply its failure to draw until it has finished processing. Firefox stalls for a long time doing nothing before it actually renders the result. I wonder how much longer it would take if it did it incrementally, like it is supposed to. Anyone able to force it to redraw? Is there a trick that can be used to force it to render incrementally? I would be very interested to retest if that is possible.