Microsoft shows off its next-generation 'Project N' compiler technology

Microsoft shows off its next-generation 'Project N' compiler technology

Summary: Microsoft execs quietly showed off new compiler technology under development at the company that aims to compile .Net code to native code directly.

SHARE:

"Monaco," Microsoft's browser-based Visual Studio dev environment, isn't the only codenamed technology that Microsoft demonstrated during its Visual Studio 2013 launch in New York.

projectN

Microsoft execs also showed off -- without using the codename -- a new technology in development for compiling directly .Net code to native code. That technology, from what I've heard from my sources, is codenamed "Project N."

Microsoft Project Manager Orville McDonald showed a quick demonstration during the Visual Studio launch of two different versions of Microsoft's FreshPaint app running on Microsoft Surface tablets. One of the versions made use of unspecified optimization technology that caused the application launch and run more quickly than the version without.

McDonald said the faster version used an experimental technology in development at Microsoft that involved the ability to compile .Net code to native code directly.

"We don't do JIT (just-in-time compile) and use optimization that we use for C++ code," McDonald told the audience. He said at some point in the future, Microsoft planned to make this technology available to the wider development community.

I've gotten a few tips in recent months about "Project N," which, according to my contacts, is designed to make applications developed in .Net/C# work better on Windows 8 and Windows RT via new compiler technology under development at the company. My tipsters have said Microsoft is planning to go public with its Project N plans in 2014.

It's not clear exactly how this new compilation technology will manifest. It could be something that Microsoft uses internally on the back-end, Microsoft to compile apps submitted by Windows developers before they are made available in the Windows Store.

Microsoft already has done work around improving compilation of Windows Phone apps involving Machine Dependent Intermediate Language (MDIL). This was Microsoft's cloud-compilation solution designed to help developers move their Windows Phone 7 apps more easily to Windows Phone 8.

I asked Soma Somasegar, Microsoft's Developer Division chief, whether Microsoft might also use some kind of cloud compilation to help improve application development and availability on Windows 8 and Windows RT. But he said cloud compilation doesn't figure into the company's strategy here.

There also have been Microsoft Career posts that have indicated Microsoft has been working on technology that would allow the company to "compile C# using the native C++ compiler." (Thanks "Felix," for originally unearthing this and posting the information to Microsoft's Channel 9.)

"Felix" posted a Microsoft job description from 2012 that outlined early thinking about this nex-generation compiler. From that posting:

"We are looking for an exceptional candidate for the C++ optimizer team at Microsoft. The successful candidate must be able to (1) design new compiler innovations for both native and managed code, (2) bang out elegant code, (3) work hand-in-hand with some of the best compiler architects in the business, and (4) demonstrate a strong desire to learn. We offer a chance to help shape the future of high performance computing for many platforms by exploiting the ever wider vectors and the higher numbers of cores on each new generation of microprocessor that Microsoft will have to respond to in the next 12 to 18 months. For Windows 8, Microsoft has invested in the automatic vectorization and parallelization of unaltered C++ in an initial effort to move the entire Microsoft software platform to all the new hardware from Intel, AMD and ARM. Microsoft has an ambitious agenda to take those technologies to the next level. We want to expand that technology for both C++ and now C#.

"To accomplish this, the candidate will work on improving the optimization, vectorization and parallelization phases of the Microsoft C++ compiler both for C++ and C#...."

Again, it's not clear whether this would be compiler technology Microsoft itself would use internally/on the back-end, or something it would make available to developers for use in their own shops.

I've asked Microsoft for comment on Project N. No word back so far.

Update: A spokesperson sent me the following statement about today's demo: "Microsoft previewed today a future technology that enables .NET applications for the Windows Store to be natively compiled delivering improved start-up performance for Windows Store apps.”

Officials aren't answering questions about timing or delivery particulars at this time.

Topics: Software Development, Emerging Tech, Microsoft, Mobility, ARM, Windows 8

About

Mary Jo has covered the tech industry for 30 years for a variety of publications and Web sites, and is a frequent guest on radio, TV and podcasts, speaking about all things Microsoft-related. She is the author of Microsoft 2.0: How Microsoft plans to stay relevant in the post-Gates era (John Wiley & Sons, 2008).

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.

Talkback

62 comments
Log in or register to join the discussion
  • Microsoft innovates while Google steals (Java, web search results, media)

    Kudos MS.
    Owl;Net
    • Sorry, google already release this tech with kitcat...

      So Microsoft is still playing catch up.
      jessepollard
      • nop..

        Theys have been using it for sometime now. They will have it ready for developers way before everyone else.
        gbouchard99@...
      • Huh?

        ART does not do native code, it still compiles it using the same method that Dalvik did... it just does it AOT instead of JIT. It's hardly a game changing thing.
        Michael Alan Goff
        • You didn't read.

          It does native code.
          jessepollard
          • My bad

            Shows what I get for reading it when tired.

            My mistake
            Michael Alan Goff
        • ART does do native code

          Extreme Tech has a good article on this http://www.extremetech.com/computing/170677-android-art-google-finally-moves-to-replace-dalvik-to-boost-performance-and-battery-life
          Tim Jordan
          • Ooops

            Shows what I get for reading it when tired.

            My mistake
            Michael Alan Goff
          • @ Tim Jordan @ Michael Alan Goff

            AOT compliation still has issues. Instead of JIT's startup initial load and compile time delay, the AOT designers chose to compile the Android app code to machine native code at installation time. So the delay time is shifted from load phase to installation phase.

            Sure. That is an improvement. But except for small size gaming or messaging apps, this will not help with the general issue of lag in some part of Android.

            The general issue of writing code for Dalvik process VM and getting it complied to either Java byte code or machine native code remains an issue. The issue is with usage of process VMs itself for Android. Get rid of it to improve Android performance issues. That is the real solution. One does not have to write all apps in C# .NET for Windows 8. One can use C++/CX much like one can use C++ with Win32/MFC classes.

            My only issue with Windows Runtime is their not allowing the usage of C language. C is still a great language and the best performance of any app can only be obtained with C language facilities. Nothing like writing close to the machine.

            But backwards compatibility will prevent Google from being able to change existing apps easy enough in terms of code structure even if they improve Dalvik file or other VM structure issues.

            Again innovation can still occur here. I am not denying that.

            Dalvik Turbo is supposed to be 3 to 4 times faster than Dalvik VM for the same apps. I do not know how the devs achieved this since they do not talk about their compiler algorithms or VM execution methods. May be they used dex file compression or something like that.
            calahan
      • Except

        Art is for a mobile device not the company mandated Windows desktop I have to actually use. Lets try to stay on the topic, a compiler for Windows not one for mobile. Yes I use android for my phone and Linux when I can but some of us have to support Windows for better or worse and the noise about android is off topic and should be constrained to just the android related stuff please.
        yeah I know no-one is listening, since when do comments have to make sense about the actual story being presented.
        Tell you what, make art work for me on Windows. It already does work for me on Android so unless you can make it work on Windows too why compare it to something just for Windows. Oh yeah you want me to never use Windows, sorry my paycheck depends on me able to support users who only use Windows (as well as the ones using Linux and QNX and Android and Mac.)
        sysop-dr
      • @jesse. Since DotNet 1.0 it was always possible to generate native code....

        But it was a separate manual step (called ngen) But Microsoft had it before Android or Dalvik existed! Once done no JIT occurs. The downside is that the image is tied to the processor architecture whereas with the JIT it can adapt

        So perhaps it is the other way around. Perhaps you should follow Michael Alan Goffs example and do the rounds.
        DevGuy_z
      • Is the flag system broken?

        Or are people just expressing their discontent with a comment? We need a proper 'thumbs down' button.
        afedwin@...
      • Links please to

        show that they have not jealous revenge.
        ScanBack
    • Innovation is just about starting something.

      Innovation is about recognizing useful things. When a company like Google, Microsoft or Apple buy a company they will allow those products to be developed by those teams with more resources. Innovation is also about bringing those products to the masses which small companies cannot easily do without the support of good distribution and marketing skills.
      jsargent
      • Oops! I meant "Innovation isn't just about starting something."

        NT
        jsargent
    • ony microsoft paid propagandist can say something like that.

      how does one recognize microsoft paid propagandist? simple. they will lie without shame. just like goebbels. the greater the lie the more they believe in it.

      ms has a logn history of lost court cases from the things they stole. basically, they invented nothing, they either legally bought something and rebranded it, or stole it and paid after court
      veryevilempire
  • N stands for NO

    don't use it. FOSS has better options.
    LlNUX Geek
    • I assume you have sources

      that tell you about performance of other tools like this one, right?
      Michael Alan Goff
      • Try this one.

        http://www.talkandroid.com/182965-art-the-new-android-compiler-added-in-kitkat-gets-detailed-and-explained/

        Already released.
        jessepollard
        • Very close

          But ART still isn't compiling it to native code. Dalvik used a "JIT compiler" and this does that ahead of time. This is more efficient, yes, but it's not native code.
          Michael Alan Goff