.NET Core Runtime


#1

I’ve wanted to learn about the .NET runtime for a while and have tried studying Rotor and the spec but haven’t gotten very far. I was thinking of retrying with the .NET Core runtime but I can’t seem to find it in the GitHub repository.


#2

Excellent question. It is really two questions.

  • Where/when is CoreCLR? It is in a private repo on GitHub, but it isn’t ready yet. We’ll switch to public in the first part of next year. The team is focussed on making this happen.
  • We’ve been thinking about how to make it easy for folks to learn about the runtime, in order to understand the code and make quality PRs. We have a bunch of internal documentation that we were thinking about making available in a WH wiki. Sound like a good idea?

We have a bunch of requirements that are really important to satisfy. On another thread in the forums here, we’ve been talking about the relationship between .NET Core and the .NET Framework. We need an efficient way to flow code back and forth between .NET Core and the .NET Framework. Getting that right takes time, but will also pay dividends and allow us to take PRs more efficiently once we go public.

We had some of that infrastructure in place when we released the corefx repo, but we learned that it wasn’t quite enough. We’re taking more time upfront with the coreclr repo.

I’m glad to hear that you and others are excited to see the coreclr repo show up. We are too.


#3

Ok, makes sense, thanks!


#4

On Mac and Linux how will the .net core runtime execute .net core compiled applications? I know the runtime will be part of the application itself but how will we tell the OS to run something given that each OS behaves differently when starting “processes”. Is this something decided upon yet?

For example running a same basic compiled “Hello World” console application on each OS (I know development is currently focused on ASP.net and server applications, but a console application can indeed be a server for a service - I see corefx has support for System.Console anyway).

This would be good to document for people just getting started with the .net development stack or even for experienced .net developers quickly understand how to compile and run .net core applications on different OS’s.


#5

@xanather, I suspect this is something that can be handled by OS-specific functionality; I know that Linux has the ability to define application loaders to be able to execute non-native applications during the boot sequence, which I use to run some Windows software using the Wine emulator. This is how it can be done for programs that require the full .NET Framework/Mono runtime stacks, or for .NET Core CLR.


#6

@n8ohu That sounds about right. Its been 2 days, I wonder why Microsoft can’t answer my simple question, id be sad if there are not plans for this.

If the CoreCLR will not support, at minimum, deploy-able console applications across mac, linux and windows, may I ask why not, not the current focus? It well should be the focus. When many developers first heard about “open source .net” they all assume this is the case, and that its not just for ASP.net deployment.

I’m sure after a few years CoreCLR will support everything (even a proper cross-platform desktop GUI - could be third party library or not), but I don’t understand why it shouldn’t support running .net core compiled MSIL executables from the beginning on all platforms. No matter what Microsoft says now, it is clear to anyone paying attention that the .net framework will eventually become a second class citizen while .net core jumps ahead, one day it may even contain more features than the original framework itself. Let people get familiar with how .net core will work for simple compiled executables as early as possible.


#7

@xanather I’d suggest looking at Mono for the “how” behind running MSIL on Linux/Mac.


#8

@rstat1 does that mean .NET core will be taking a similar approach as mono?

.NET core isn’t like the .net framework/mono. For .NET core the runtimes will be part of the application itself, this means typing “mono or coreclr” in the terminal for running probably wont happen.


#9

@xanather CoreCLR will most likely run as Mono on Linux, MacOSX, just a simple native bootstrapper that will take a .NET assembly exe. I’m not sure they have even started to work on this part yet, so that’s why you can’t get an official and definitive answer, but still, I believe there is nothing to worry about.


#10

@xanather mono <app_name>" at the terminal is not the only way to launch .NET apps on Linux. There are ways of defining execuable file types and how to launch them, that don’t require a “mono <app_name>” command typed in to a terminal.

They could also do some compile time trickery that produces native Mac or Linux binaries that make this whole issue moot.


#11

Yeah, I do hope there is an option to create native blobs (packages?) that simply just invoke the CoreCLR runtime for each of the supported platforms, seems like the best solution.


#12

I don’t think .NET Core CLR will be invoked in Mono manner.
I suppose the idea is to use K runtime to run .NET Core apps.
“k web” will spawn the process and load .NET Core CLR.


#13

Hey guys, interesting descusstion.

For the case you are interested in: I wrote a blog post how you can call core clr yourself. I oriented this on the way klr.exe is doing this. Have a look here: http://www.fancy-development.net/hosting-net-core-clr-in-your-own-process

I also published this as an open source project at git hub. See here: http://www.fancy-development.net/fancy-coreclrhost-published

The work is currently constrained to windows. Maybee I extend it to support Linux too some day.

Regards


#14

That’s interesting, the native coreclr library will probably be called in the same ways on Linux/Mac. Maybe microsoft will provide functionality to spawn up the coreclr without having to write native, platform restricted code.


#15

The CoreCLR has been released but any idea when the documentation to help learn about how it works is coming out? Tried diving in and got lost very fast


#16

some of the documentation is their in the repo in the documentation directory.


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