4 ms·
I'm kind of scratching my head here, can someone explain what problem this solves? There's already a CLR and already a way to build native apps for Win 8, etc.
by tdicola 13y ago
I'm kind of scratching my head here, can someone explain what problem this solves? There's already a CLR and already a way to build native apps for Win 8, etc. This is a new CLR that can run new 'native' apps?
- spo81rty 13y agoCLR apps require just in time compiling which can take a little time to first run. So this should speed up opening the apps.
- tdicola 13y agoSure, but ngen solved that problem years ago: http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.110).a...
- itsboring 13y agoYeah, and mono's AOT too. I wonder if this is really just ngen integration into VS and thus not really a big deal.
- spo81rty 13y agoSo I guess this is ngen in the cloud to skip doing it on the PC.
- sriramk 13y agoIf I remember ngen is very architecture/platform specific - that is why it has to be done on the target machine. This sounds like it is done ahead of time with support for a variety of architectures.
- andyjohnson0 13y agoSee https://news.ycombinator.com/item?id=7520687 https://news.ycombinator.com/item?id=7520687
- itsboring 13y agoIt seems like this is basically just the same thing that Mono has done for a long time with AOT. I'm not really sure how it differs from the Ngen tool, though.
- apardoe-MSFT 13y ago.NET Native addresses many of the same issues as Mono AOT but it has a radically different basis. We had the advantage of hindsight :) The biggest difference with NGen is the fact that .NET Native doesn't ever "fall back" to JIT compiled code. There are other differences--refactored runtime, static-optimized libraries, static marshalling, etc.--which can be seen by the perf wins over NGen. We're seeing 40% startup performance gain over NGen apps for top Windows Store apps.
- rajeevk 13y ago@apardoe, one question: where will the compilation to machine instruction happen? From some comments in this thread, it seems that it will happen at app store server and not at developer's box. If that is the case then why will I need anything to do any settings in VS for building projects?
- apardoe-MSFT 13y ago@rajeevk, we could compile from MSIL and not tell the developer. But you probably appreciate the chance to test out the app on your own the way your user will run it. After all, you'll want to profile it or maybe find that last on-device, optimized-only bug...
- thomasz 13y agoWhat about stuff like Il.Emit and Expression<T>.Compile
- apardoe-MSFT 13y agoReflection.Emit isn't allowed in the Windows Store profile so we haven't handled it in this go-around. Expression compile is supported and handled properly.
- plorkyeran 13y agoIt gives faster startup time (due to AOT compilation rather than JIT), and doesn't require that the .NET framework be installed. Possibly better runtime performance, but I wouldn't expect huge gains there. P/Invoke should have lower overhead, which may be highly relevant for some things. I suspect that there's things that require this which they haven't announced yet, since on its own it seems like something kinda nice but not beneficial enough to justify creating.
- tdicola 13y agoYeah I don't understand the need to get rid of a .NET framework dependency though. This only supports building Windows store apps, which only run on devices that have the .NET framework right now...
- itsboring 13y agoOne admittedly crazy theory is that this is laying the groundwork for building iOS apps and therefore would compete with Xamarin. Any kind of JIT would not be allowed on the iOS app store.
- deleted 13y ago[deleted]
- tsenkov 13y agoThe word is, that Microsoft is talking with Xamarin about a possible acquisition.
- ebiggs 13y agoStart up times could be a big deal to compete with iOS? Especially in similar app lifecycle models where apps could be stopped and restarted implicitly by the OS?
- Someone 13y ago"It [...] doesn't require that the .NET framework be installed." Are you sure? You still need the standard libraries, a garbage collector, its security checks when loading other code, and may want to use its compiler from your code. Together, that's a lot, maybe all, of what's in the framework.