Details on Microsoft's new rendering engine for Project Spartan

Original author: Jacob Rossi
  • Transfer
From the editor of Smashing Magazine :

Last week, Microsoft made the most significant announcement for the web since it launched Internet Explorer in 1995: a new browser, code-named “Project Spartan”. What does this mean for us as developers and designers? What rendering engine will Spartan use and how will it affect our work? We talked with Jacob Rossi, a senior engineer on the Microsoft web platform team, about the new browser used by the rendering engine and whether it would eventually replace Internet Explorer. This article, written by Jacob, is the result of our discussion and sheds light on some aspects of the browser that may be useful to you.

Project Spartan , Microsoft's new browser, officially announced last week.

Spartan is a project that we have been working on for a noticeable time, over the next several months we will continue to study internally what exactly we get, what we can offer people who will use it, and what it will be like a platform. It takes several months to prepare the browser for release outside so you can try it yourself, but we can share some interesting details today.

This article tells the inner story of the Spartan rendering engine : how it came about and how the 20-year history of the Internet Explorer platform (Trident) helped us decide on the approach to its design.

Internet Explorer Tutorials

Twenty years ago, Microsoft first introduced Internet Explorer. For many users, this name and brand are recognizable all over the world, but for web developers, the “features” of older versions of Internet Explorer are often hindered by Microsoft's recent efforts to support and implement web standards. Although web developers remember the outdated versions of Internet Explorer for their bugs, the need for hacks and strange workarounds for implementing the required functionality, IE actually made a positive contribution to the web by providing web developers with CSS, dynamic HTML changes through scripts and DOM, AJAX / XMLHttpRequest , drag and drop (D&D), innerHTML, hardware acceleration and other web technologies.

Inside the Microsoft browser team, we consider ourselves an organization that is constantly learning. Each year we take special time to reflect on our achievements and mistakes, to learn from them and grow further. In this sense, each release of IE has had a significant impact on how we generally create products. Everything that we learned about the importance of cooperation between browser makers, standards, compatibility and interoperability, performance and security helped us determine how we would work on the new rendering engine.

Microsoft's new rendering engine

Microsoft's new browser will have a new rendering engine under its hood, EdgeHTML.dll. It already ships with Windows 10 and it will be separated from the Trident engine (MSHTML.dll), which has been the main Internet Explorer for decades.

The latest version of Trident, shipped with Internet Explorer 11, has made great progress in supporting standards (I started making a list of some of the most notable, but stopped when I reached 75 specifications). But this progress was substantially weighed down by the burden of supporting document modes IE5.5, IE7, IE8, IE9, and IE10, a concept that the web no longer needs.

Therefore, we decided to create a new engine that uses the level of standards support in IE11 as a starting point .

I watched Justin Rogers, one of our engineers, press “Enter” on a commit that forked the engine. It only takes about 45 minutes to process (just making changes, not assembly!).

When it was all over, there was liberating silence in the room: then we could only imagine what this step would allow us to do: start deleting the code, the favorite state of catharsis for each developer.

In the following months, layering IE's heritage was removed from the new engine. The document modes have disappeared. We removed the subsystem responsible for emulating IE8 composition features. We pulled out VBScript. Legacy tails like attachEvent, X-UA-Compatible, currentStyle have all been cleared from the new engine. Our code is now a little like Trident (but much different from it than Blink from Webkit). Project Spartan will have under its hood a new rendering engine and Chakra JavaScript engine introduced with IE 9.

Dual rendering engine architecture animation

What remained was a clean foundation. A modern web platform designed with interoperability and standards in mind. It is from here that we began to make large investments in interoperability with other modern browsers, to make sure that developers do not have to deal with the differences between browsers.

Today, we have fixed more than 3,000 interoperability issues (some related to code written in the 90s), including working on more than 40 new web standards that we are working on. For example, long-standing problems with innerHTML have been fixed. Even fresh standards like Flexbox receive a new batch of love from our developers to meet the latest version of the specification (you'll see this in a future Windows 10 release). Project Spartan also carries an updated version of the F12 developer tools .

To help you better understand what is at stake, here are a few of my personal favorite features that are already included in the pre-build or will soon be included:
  • Preserve-3d
  • The most advanced ES6 support to date
  • XPath
  • Web audio
  • Media Capture API
  • Web RTC 1.1 (ORTC)
  • Touch events
  • Content Security Policy
  • HTTP / 2

However, a modern and interoperable rendering engine is not enough to magically make the web just work. This can be achieved if the sites also offer the browser code made for "modern browsers." Therefore, our new engine also has a new user agent line . If the agent line were a sticker, then the UA-line of the new engine would resemble notebook covers of many today's web developers. However, unexpectedly, this gives a very positive result in terms of compatibility and allows many sites to give modern content to the new engine. It also gives me another reason to beat the drums:

sniffing out a user agent site should be ruled out at all costs!


To leave backward compatibility, we do not plan to completely get rid of Trident. Instead, we designed and implemented a dual engine approach, within which either a modern rendering engine or Trident can be loaded. This switch is transparent to the user. Windows 10 will use EdgeHTML for the web (so you don’t have to worry about document modes) and download Trident for legacy corporate sites. Such a double approach will allow businesses to upgrade to a new engine for the web, while continuing to use applications for which the old IE is critical, all within a single browser. Even better, in the approach with two engines, we plan for Trident to make only security-related corrections, which should minimize code changes and make sure that corporate sites remain compatible while focusing on innovations in the new (and always fresh) rendering engine.

We hope that on Windows 10 people will use Spartan. However, there are a number of business scenarios that involve tools created on top of the old Internet Explorer extension model (native ActiveX components, toolbars, BHO, etc.). Therefore, Internet Explorer will be available on Windows 10 for some enterprise web applications that require a deeper level of backward compatibility. This version of Internet Explorer will use the same two-engine approach as Spartan, including the default loading of EdgeHTML for the web. This means that developers will not have to separately consider Internet Explorer and Spartan, our plan for supporting standards will be the same. The browser will also include the Chakra JavaScript engine .


We know. This is just as painful for web developers as it is for our browser team. Earlier in May last year, we talked about updating users as a high priority for us . Later in August, we announced a browser support policy that will encourage users to upgrade to newer versions. An even more important announcement happened a week ago: Windows 10 will be a free updatefor users of Windows 7, Windows 8.1 and Windows Phone 8.1, which will be updated within the first year after launch. Moreover, we consider Windows 10 as a service, that is, we will constantly update the system, releasing new features when they are ready (“auto-update”), without waiting for some next big release. This means that the new rendering engine will always be fresh .

Future plans

Another important change that we introduced throughout the past year is the promise to increase our openness regarding plans for developing the web platform. Over the past year, we hope you may have noticed activities such as our public standards support roadmap (one of my personal add-on projects), our AMA sessions on Reddit , regular dialogs via @IEDevChat , and access to preview builds in the early stages of our development process. This year we will continue to develop this area.

Regarding the support of standards, we will continue to talk about the new features that we are working on. In the near future, you should expect Web Audio, Image srcset, @supports, Flexbox updates, Touch Events, ES6 generators and a number of other features - this has been commited over the past few weeks. The following are such large blocks as WebRTC 1.1 (ORTC) and Media Capture (getUserMedia () for accessing the camera and microphone). After that, we proceed to take into account your wishes (and other factors, for example, statistics on the use of various opportunities that Bing helps to collect; by the way, he can now also use our engine inside) to prioritize future investments in the platform.

Our plans for the platform in the initial release have not yet been fixed - feedback from developers has strongly influenced them and will affect. So flexible changes are possible along the way. Here's how you can help us now:
  • Test our new
    EdgeHTML engine today can be enabled inside Internet Explorer on the Windows 10 Technical Preview (Project Spartan preview will be available later) if you go to the about: flags page and enable the “Experimental Web Platform Features”. If you are using a Mac and don’t have a machine that you could upgrade to the Windows 10 preview builds, we recently launched the RemoteIE cloud service , which allows you to translate the version of IE running on the new engine without having to download a large image with a virtual machine (note: we still in the process of deploying the recently announced service build).
  • Send bugs
    Our investment in interoperability with modern browsers is fueled by bug reports and data on work on real sites.
  • Follow our standards support plans and give us your feedback: based on feedback from developers, more than 40 different standards have moved from the “considering” state to development since we launched the open development plan in May 2014.

Personally, I am pleased to share this inner look at the new web rendering engine behind Project Spartan in Windows 10 at such an early stage of development. We plan to tell more in the coming month. In the meantime, if you have something to say in essence, you can write to me personally and in general to our team . Let's make the web work for you.

Also popular now: