New Projects, Initiatives and Progress



We should have a way and guideline on collecting suggestions, feedback and starting new projects as part of the foundation as means to improve .net.

Now comes the question, what would be new high impact projects the community / MS can start to further the .Net ecosystem?



1) As a .NET/C# game developer for the most part, I personally see the highest impact project to be IL2CPP from Unity3D becoming part of the .NET Foundation and Open Source efforts. To be honest it already sounds more portable then .NET Native. It also sounds like it might have a chance of even being faster if its not already. Don’t know what incentive the Unity guys would need to making this open from Microsoft and working with the .NET ecosystem, but it sounds like a win win to me if others could contribute to the efforts if it was open. I would encourage MS to look into this, not sure the politics but hope its not to complicated.

2) I see MS pushing HTML5 as a cross platform solution. But HTML5 to be frank just sucks in comparison to either WPF or Silverlight (as they are single implementations, not 5 or more). When I try writing a HTML5 app I get huge amounts of issues here and there from all platforms, IE, Safari, Chrome, Firefox… its juts a huge mess no one agrees on and is no solution (at least for me) at all. I would like to see a new Open Source effort like SIlverlight, but one thats supported by MS so its a Visual Studios first class citizen and targeted for Browsers (either by asm.js and Canvas/WebGL ect), WP8, Win8, Win10, Android, iOS, Desktops ect.

These are meant to be constructive points/arguments.


to be fair to HTML5, the idea is that you don’t need anything other than the (modern) browser that you’re using.
If you want somebody to use .NET, that means you have to make sure they have the relevant platform.


Just ran into something two days ago with Safari where window.Open(…) is not supported. This is just one small example out of way to many to count. Portability is a joke in HTML in modern browsers.

  1. I’m actually really curious if there’s any practical difference between IL2CPP besides who makes it. @joncham maybe knows?

  2. I think .NET Core is meant to be just that. Yes It’s currently UI less but given time it will have UI stacks, possibly even from Microsoft themselves.


May I ask where you found to not work in Safari?


Its officially not supported:

Other good examples would be sockets. Different APIs per browser if you want to create listeners. The HTML5/javaScript thing is a mess… Even people using OpenGL understand how messed up this multi-implantation thing is becoming and its ridiculous. As an example of things learned in a different project there is now going to be a standard GLSL bytecode and compiler because if you write shaders for Android you know how messed up some of those GLSL shader compilers are because people half ass random implementations that never get support.

Also browsers like chrome constantly disable WebGL for no reason. I had chrome disable WebGL on a Nvidia 350 GTS D3D10 card on Windows Vista.

Anyway i’m way off topic for this forum, but just trying to give good example of how much better Silverlight was or anything that has one code base ends up being. While Silverlight as a plugin is not a long term solution, something like browser agnostic UIs and code runtimes running in sandboxed asm.js or PNaCl environments would be (Silverlight could be made to run in a plugin-less environment like this).


That for developing extensions to Safari, something where no one claims the browsers are all equal. But you are right, we should leave this for another forum.


Well guess I sent you the wrong link. Either way it doesn’t work, I tested two days ago. A simple google search will show you plenty of others talking about it and how you can’t use the feature (its gives you the 404 error).

But yes enough about HTML ;p


As for what kind of projects the community can use… Not sure. I’m planning to give my Exchange ActiveSync framework to the foundation. Not sure how big a need for it there is though.


I think .Net Native and IL2CPP have a lot of things in common. I cannot speak for .Net Native, but from my perspective practical differences are:

  1. IL2CPP outputs standard C++, with portability as a primary motivation.
  2. IL2CPP will probably contain some optimizations specific to Unity. We haven’t done much in this area yet, but when using IL2CPP in the context of Unity there are a number of assumptions we can make.


From point #1 sounds like its already better as its designed to spit out “portable” C++ (does this mean non-C++11 ?) while .NET Native only targets VC++ and limited to Windows only platform lock in type of delio going on. Sounds like you guys already have a much more future proof design in comparison from what I know about .NET Native so far.

With IL2CPP you can target VC++ and GCC C++ ect while .NET Native is VC++/Windows only? Sounds like your guys project is going to go much further unless I misunderstand something or MS changes there strategy. To me MS needs to try and stay more relevant in the general software world as thats what there good at, not just the Windows world or there going to end up shooting themselves in the foot I think.


.NET Native adopted a different approach than IL2CPP. They are different approaches with different benefits and challenges. Our approach is much more similar to what Mono AOT does.

.NET Native integrates with the VC++ compiler at a lower level, skipping textual C++ and instead emitting compiler intermediate representation. Since our first target is Windows Store apps, our dependency on VC++ makes good sense. If our next target requires a dependency on another compiler, then we’ll adopt the same technique, but with that different compiler. The .NET Native architecture enables that flexibility. We did some very minimal experimentation with LVVM to ensure that the flexibility does indeed exist, and it does.


I wouldn’t be so hard on .Net Native. Their approach makes a lot of sense given their goals, existing tech, etc.

There are downsides to IL2CPP as well. We fight the portable C++ battle like any other codebase. We currently have longer than desired compilation times since we are feeding a lot of C++ to the compilers. We require the native C++ compiler toolchain to be available. Targeting C++ makes a lot of things easier, but it’s not all rainbows and puppies.


I realize I still have yet to give .NET Native a real chance and its speculation at this point.
But when .NET Native was first released and I had someone run the RayTraceBechmark on it the results were very disappointing. Sure the boot-time performance may have been better (not something I care about), but the runtime performance was actually worst then the normal .NET runtime on Win8 which is what really matters.

Runtime performance has always been the big issue with .NET and .NET Native didn’t seem to do anything to improve it. Now I may be jumping to fast, but in IL2CPP articles its been said it can get up to 3x the speed of what Mono 2.6 was and i’m sure that will only get better.

While .NET can get about 2x-3x the performance of Mono is in most cases, I’m scathing my head as to where the true bottle neck is here with all this vs C++ for numarical calculations in the Ray-Tracer. And is one reason I started my project on converting C# to C++ as the bottle neck seemed to be in the JIT having a hard time optimizing IL code. I keep having people tell me this and that about how its not, but C++ is at least 6x as fast in almost every case, so I’m left to think people are being to nice about .NET’s faults when related to performance issues.

So idk don’t want to be running circles here but its just a waiting game at this point. When IL2CPP and .NET Native are officially released I will be running performance tests vs my C#toC++ converter to see if my assumptions are indeed misplaced.


Since IL2CPP has been mentioned couple off times. Is there a way to convince this to be open sourced under a liberal license?


I’m not from the IL2CPP team but in my research about it they’re current stance is no but they’re open to the idea open sourcing it in the future possibly.

.NET Foundation Website | Blog | Projects | Code of Conduct