Microsoft is pushing their new Edge browser (formerly Project Spartan) as the replacement for Internet Explorer 11. Back on May 5th, Microsoft opened up the Microsoft Edge Dev Blog and ever since then they have been bringing to light a lot of the changes that are coming with Edge. One of the first posts was detailing what has been changed with Edge as compared to Internet Explorer 11.
Edge is not a completely new browser. Internet Explorer was based on the Trident web rendering engine, and the Chakra ECMAscript engine, and these continue to be the basis of Edge as well. However Edge will not have any of the legacy compatibility requirements of Internet Explorer, which has allowed the company to strip out a lot of unnecessary code. According to Microsoft, over 220,000 lines of code have been removed to strip out the features that are no longer part of the modern web. This includes things like ActiveX extensions, Browser Helper Objects, IE Document Modes, Vector Markup Language, VBScript, and more. For a full listing, check out their blog post here. They obviously did not just stop at removing old code though, and over 300,000 new lines of code have been added for 49 new features and over 4000 interoperability fixes.
Microsoft is pushing Edge as a standards compliant browser, and they have quite a bit of work to do in this regard since Internet Explorer, even at the latest version 11, did not support a lot of the standards that were upcoming. This is always a moving target, and in the past browser upgrades were slow to happen if they happened at all. IE seemed stuck out of sync with the rest of the browsers. The company seems to want to avoid that going forward, and one of the ways this will happen is that Edge can now be updated through the Windows Store, which should allow them to quickly and easily roll out updates and fixes. One thing they want to avoid if possible is vendor prefixes for experimental APIs. They will still have to support some, since they are in use on many pages, but going forward they want to eliminate any new MS prefixes if they can, and instead will be offering experimental API support through feature flags.
Chakra is the browser’s scripting engine, and it is getting a lot of updates as well. One of the most requested is the addition of Asm.js to the browser. Asm.js is a sublanguage which allows sandboxed execution of memory-unsafe languages. Toolchains are available to convert C/C++ code into Asm.js, and technologies which leverage this are things like WebGL and gaming engines like Unity and Unreal. These new features will also bring Single Instruction Multiple Data (SIMD) support to Chakra, and Microsoft got assistance with this work from Intel, so it will likely leverage Intel’s SSE extensions. Using the SIMD Mandebrot demo, Edge with SIMD support performs 200-300% faster than Edge without the support enabled, so there is a lot of performance potential here. Intel has also helped reduce navigation time and has helped reduce DOM parse times. SIMD support is something that Intel is also bringing to other browsers, but the main point is that Edge will have it as well, which should promote the use of these kinds of features on the web as a whole.
Back in January I was able to run the new Edge browser code (in IE 11 at the time) through its paces and it really was a large leap forward in performance. On May 20th, Microsoft revealed some of the changes they have made to Chakra to make such large gains. ECMAscript leverages Just-in-Time (JIT) code compliation, which means that the script is compiled into code on the fly, rather than ahead of time (AoT) compilation. Enhancements have been made to Chakra’s ability to move external functions into the running code (function inlining) and especially when the code is defined across JavaScript files. This helps reduce the overhead of function calls, which force the system to push relevant data to the stack, and bring it all back when the function returns. All browsers do this in one way or another, but IE 11 was not efficient at doing this across different script files, so Edge has a big edge here (pun intended). Performance improvements were also brought with some of the changes in ECMAScript 2015, which is the latest iteration the scripting language. It brings about a new data type of a constant value, which was not available in prior versions of the language. Chakra’s JIT compiler will now optimize existing code to identify non-constant variable declarations defined globally, but do not change, and therefore they can be identified as constants to reduce the overhead of lookups. Another big change is a how Arrays are handled, and here Chakra in Edge is up to five times faster than IE 11.
Chakra Execution Pipeline
A new feature that is currently unique to Edge is the ability to support Multi-Channel audio through Dolby Audio. Edge will support Dolby Digital Plus and is supported with current DASH (MP4) and HLS (M2TS) file formats. This means that there will be support for both progressive download content and adaptive streaming content. Dolby has a Dolby Audio Experience demo which leverages WebGL if you want to try this out for yourself.
These are just some of the changes coming to Edge. After years of trailing the browser pack, it certainly seems like Microsoft has stepped up their game. Performance is much better in Edge than their outgoing browser, and it is picking up standards support much earlier. Edge already supports 81% of the ECMAscript 2015 features, which leads all other desktop browsers for the moment. HTML 5 standards support is also much improved. Browsers are one of the most important tools we have on any device, and it looks like Windows 10 is going to bring its best forward. I can’t say I love the icon, but that can always be changed.