A History of .NET Runtimes
176 points by edroche 6 years ago | 100 comments- sureshv 6 years agoFew more missed include (Device CLR's were in C, Desktop/Server in C++):
(1) CLR for Sony/Ericsson phone OS and (2) Variant running on linux (in 2001/2002).
I worked on the Compact Framework team back in the day so there's a few more things to point out related to the internal politics of Microsoft at the time.
The devices strategy was a mess even back then due to Alchin/Valentine/Ballmers love of Windows desktop 'everywhere'. Windows and Office dominated the company so things like .Net were always going to be secondary to that.
The origins of the CLR can be found in the purchase of Colusa in 1996 which had the Omni VM for running C++ in a sandbox. The original C# language was called cool and came from that project.
- matthewwarren 6 years ago> The origins of the CLR can be found in the purchase of Colusa in 1996 which had the Omni VM for running C++ in a sandbox. The original C# language was called cool and came from that project.
Thanks, I'd heard about 'cool', but I didn't know the part about Omni VM, that's interesting to know
- dusanbab 6 years agoWas the framework you mentioned in (1) a Microsoft project, or something else?
As a matter of interest, what did you do on the CF team?
- sureshv 6 years agoWorked in the Compact CLR Execution Engine, IL Verifier, and other stuff. On (1) both were done at MS but ended up as proof of concept.
Post Sathya Microsoft has moved to a more open model, hence the full blown CLR on Linux.
- sureshv 6 years ago
- matthewwarren 6 years ago
- pjmlp 6 years agoThe AOT compilers misses NGEN, which is part of .NET Framework since v1.0, although it only does dynamic linking with very little optimizations.
And the cloud compiler created for Windows Phone 8.x, based on Bartok from Singularity.
https://channel9.msdn.com/Shows/Going+Deep/Mani-Ramaswamy-an...
https://channel9.msdn.com/Events/Build/2012/3-005
.NET Native is an improvement of this work.
- matthewwarren 6 years agoI tried to only focus on runtimes, although the line got a bit blurred at times! But yeah, it would be nice to have included a mention of NGEN. When I get a chance I'll update the post
> And the cloud compiler created for Windows Phone 8.x, based on Bartok from Singularity.
Interesting, I didn't realise that all this came from Bartok, thanks for the info
- pjmlp 6 years agoThey are not fully explicit about it, just talking about Bartok and MDIL as if invented for WP 8, but they are scattered all over Singularity documentation and papers, so it is quite obvious where they come from.
- pjmlp 6 years ago
- matthewwarren 6 years ago
- wildmusings 6 years agoSomething that makes following Microsoft tech different for engineers, in my opinion, is that naming has historically been driven by marketing/sales, not engineering. There is not a 1-1 mapping between the branded/advertised functionality and the technical components responsible for it. This makes sense when your audience is purchasers at a company. They care about what features/scenarios are supported, not how they are implemented (sorting through that is, at most, the job of someone lower on the totem pole).
Engineers, on the other hand, want to know how the system works. Even when it shouldn’t matter to us, we can’t help but think in terms of the actual mechanisms driving the system’s behavior. We don’t like black boxes, because we experience daily the leakiness of all abstractions. And for an engineer targeting Windows as a platform, the technical details obviously do matter.
I think this difference is especially jarring to developers used to the nix world, where everything is much more developer-oriented. I would bet that the early success of Microsoft products against Unix is partially due to this difference in focus. Ideally, you communicate differently with both groups, but in reality you have to make trade offs. It would just create more confusion if there was one set of names/brands for end-consumers and another totally different set for developers.
(Another difference is that Windows has historically been one big project, so features do in fact span technical components, which due to being under single management, are less regimented to begin with.)
The web has definitely changed things by making operating systems less important. At least the perceived importance of marketing to developers has increased. I think Microsoft has done a good job adapting to this change lately.
- jasode 6 years agoI think the history of the internal politics at Microsoft in regards to .NET and also the external industry trends is fascinating.
The common thinking is that C# & .NET was a ripoff of Sun Java because of the "write once run anywhere" threat. That's sort of true but missing some nuance.
I'm not a MS insider but here's my understanding of what happened. We have to separate the C# language from the CLR runtime. In the 1990s, Microsoft was already researching how to enhance and extend the COM interoperability model. (Otherwise known as "how do we get multiple programming languages to talk to each other?")
Based on some old interviews with Don Box[1], instead of this work being productized and released as "COM+ version 3" or whatever, it morphed into the CLR. This was a natural evolution that would have happened even without Sun's JVM threat.
C# the language, on the other hand, was a more direct response to Java the language since Microsoft's J++ (Java clone) was abandoned because of Sun's lawsuit.
As for .NET, it's interesting that Microsoft always had this large internal group of programmers (mostly Windows kernel and Office teams) that didn't fully buy into the .NET vision. On the other hand, Bill Gates himself was a big believer in it. My pet theory is that since Bill Gates programmed in BASIC in the 1970s and not in low-level C/C++/assembly, he had a natural affinity for the vision of high-level C# & .NET being pervasive throughout Windows. Even with Bill's support, there was always an ongoing internal tension between the C++ vs the NET framework camps. (On a related note, it seems like Apple's internal programmers are more happily embracing Swift over Objective-C to a greater degree than Microsoft's internal adoption of C# over C++.)
Two major forces outside of Microsoft's control curtailed .NET's planned world dominance: (1) the rise of Javascript in the browser which negated .NET Silverlight, and also Java applets and Flash. (2) the rise of Apple iOS and Android.
.NET is still very popular but it definitely did not fulfill the more ambitious dreams that Bill Gates had for it.
(On a related note, I also wrote an old comment about the decline of .NET's WPF and its limited adoption: https://news.ycombinator.com/item?id=14098832)
[1] Was MS Technical Fellow and author of 1998 COM book: https://www.amazon.com/Essential-COM-Don-Box/dp/0201634465
- ot 6 years ago> Bill Gates programmed in BASIC in the 1970s and not in low-level C/C++/assembly
He didn't program in BASIC, he programmed a BASIC interpreter in 8080 assembly.
- jasode 6 years agoThank you for the clarification. Yes that makes sense. I'm probably mixing it up with an interview where one of MS ex-employees (Joel Spolsky?) mentioned Bill's affinity for BASIC which is why early MS Word has WordBASIC (not Lisp or Pascal) as its first macro language. It later became VBA Visual Basic for Applications. This philosophy and influence continued all the way into the CLR languages VB.NET and C#. Bill was never a C/C++ guy like his employees who were working on Windows & Office codebases.
- mattl 6 years agoExcel BASIC, I believe.
https://www.joelonsoftware.com/2006/06/16/my-first-billg-rev...
- mattl 6 years ago
- maxxxxx 6 years agoTrue. But he definitely had a love for BASIC.
- jasode 6 years ago
- gambler 6 years ago>.NET is still very popular but it definitely did not fulfill the more ambitious dreams that Bill Gates had for it.
There is still time. It just recently got open-sourced, got a compiler written in itself and got a run-time unbundled form all the legacy crap. Those things held C#/.NET back. I feel this is a good time to adopt it for people who want to have reasonable performance, static typing and a mix of OOP/functional paradigms.
My two notes on C#:
1. It is possible to write reasonably "functional" applications in .NET. The only problem I had with that is lack of built-in copy-on-write data types and prevalent nullity.
2. LINQPad is the best damn scripting environment I ever worked with.
- louthy 6 years ago> 1. It is possible to write reasonably "functional" applications in .NET. The only problem I had with that is lack of built-in copy-on-write data types and prevalent nullity.
I've tried to minmise that pain over the past few years with my 'functional language extensions' for C# [1].
It's a library with most of the common monadic types (as structs so there's no null issues); Immutable collection types that don't have an unweildy naming scheme like like the System.Immutable.Collections library - which are all structs, so no nulls; A type called 'Record<T>' which when you derive a type from it gives your type value-semantics (equality, ordering, GetHashCode, ToString, serialisation/deserialisation) by default; and tons more.
You still have to do stuff like build your own With method for immutable types. I have written of how these can be achieved _realtively_ easily [2]
C# has made great strides over the past 10 years to make it easier for those of us that want to work functionally to do it. It still has some way to go (discriminated unions, higher-kinds, record types, etc.) but it's already possible to write code functionally - you just need to do some boilerplate every now and then.
[1] https://github.com/louthy/language-ext
[2] https://stackoverflow.com/questions/38575646/general-purpose...
- Flow 6 years agoWow, what a nice project you have there.
I've read that the next C# will have non-nullable reference types, have you thought about how to make your framework fit in with that? It's a "natural" Some/None in a way.
- Flow 6 years ago
- bunderbunder 6 years agoPart of me, though, worries that the ship has sailed. For a while .NET was probably completely fine from Microsoft's perspective, because the platform was (AFAICT) dominant in their target market of enterprise apps.
Then big data became a thing, and basically the entire core ecosystem was written in Java. I think it's becoming a bit of a wedge issue - Java has everything that .NET has, but .NET does not have its own equivalent of, for example, the Hadoop ecosystem.
- WorldMaker 6 years agoYou can do "big data" entirely in .NET.
You can use Hadoop "Streaming" with .NET easily enough and still take advantage of the "Hadoop ecosystem".
Orleans is not exactly Hadoop, but it's close enough that conversions between are relatively straight-forward, and Orleans is useful for a number of other work distribution patterns beyond map/reduce.
Beyond that, the map/reduce pattern is one of the easiest abstractions to reimplement yourself from scratch if you get the itch. I believe Hadoop is relatively over-rated from that standpoint, and arguably IMO another case of Java developers over-ceremonializing what should be a simple, lovely abstraction/design pattern into a weird spaghetti mess of configuration and ritual.
- Const-me 6 years ago> Java has everything that .NET has
Java offers nothing for game developers, there're multiple game engines written in .NET or using .NET. Java only runs on Android, .NET on all mobiles. Native interop in Java is a joke.
- svick 6 years ago> Java has everything that .NET has
C# certainly has many features that Java, the language, does not. It gets better if you consider Kotlin instead, but it's not clear to me if that language has a chance of becoming on par with Java, popularity-wise.
- WorldMaker 6 years ago
- jordanab 6 years agoLINQPad is awesome, and I'm always amazed to still find a lot of .NET developers who've never given it a try.
A cross platform version is high on my wish list.
- louthy 6 years ago
- pjmlp 6 years agoThe whole Longhorn/Vista debacle, with .NET components being rewritten in COM for Vista, followed up by the increasing the COM usage in Windows 7 and then bringing up WinRT as .NET replacement under Synofsky's leadership is another example of those political internal wars.
- stupidcar 6 years agoYeah, I think this was a far bigger contributor to the failure of .NET to achieve dominance. Silverlight was only ever a slightly weird sideline intended to compete with Flash, which became DOA the moment the iPhone launched and Jobs killed Flash overnight by saying the iPhone would never support it.
Microsoft's biggest internal teams turning against .NET during Longhorn created a schism that the company has never resolved. I often wonder what might have happened if they'd had the requisite leadership to force the change through organisation-wide, and MS had spent the last 15 years with a single, rational dev story.
- jasode 6 years ago>Microsoft's biggest internal teams turning against .NET during Longhorn created a schism that the company has never resolved.
From the fragments of leaks I read about the internal strife, the .NET code had huge performance problems and the C++ team was frustrated that "DevDiv" couldn't solve them. ("DevDiv" is Developer Division that owned NET Framework.) Therefore, they ripped a lot of "managed code" out and redid it in native code.
I hope that one day, an ex-Microsoft programmer or product manager writes a tell-all book of this period. It would be a fascinating case study.
- ASalazarMX 6 years ago> Jobs killed Flash overnight by saying the iPhone would never support it.
I think it was a forced choice. Even if Flash had been supported, most flash sites and games would not have worked well on a phone.
- pjmlp 6 years agoYep, they were forced to sort out the mess introduced with WinRT, UAP, UWP, by making UWP .NET Standard 2.0 compliant, and now making Forms, WPF and EF 6 runnable on top of .NET Core 3.0.
However given the last Office related announcements, it appears that the reorganization did little to sort out those political issues.
- jasode 6 years ago
- stupidcar 6 years ago
- jjordan 6 years ago> .NET is still very popular but it definitely did not fulfill the more ambitious dreams that Bill Gates had for it.
Remember when Microsoft was adding '.NET' to practically all of their product names for a time? That was fun...
- thrower123 6 years agoMy hypotheses is that C# would never have become as popular as it became if Java hadn't had the long stall between 1.6 and 7[1]. That long, long pause provided a window, and under the stewardship of the vampires at Oracle there is not the kind of direction to push things forward that C# has had.
[1] Four and a half years! Nowadays it seems like Angular and React are pushing major versions every four and a half minutes.
- wvenable 6 years agoI'm not sure Java would have changed at all if it wasn't for C#. From the start, Java was never particularly quick to get new features or break any sort of compatibility.
- wvenable 6 years ago
- nicoburns 6 years agoIMO .NET being closed source until recently was also a big factor in it's lack of world dominance. Why choose a proprietary language when there are several comparable opwn ones to choose from.
- iainmerrick 6 years agoIt does seem like all these .NET projects are reactions to rival technologies. C# is a Java clone, C# generics are an (arguably improved) Java generics clone, .NET Micro is J2ME, Silverlight is Flash, etc.
What are some examples of where C# / .NET paved the way and others followed? Maybe popularizing async/await?
I’m definitely not claiming MS as a whole is always a follower. It seems like Direct3D led the way for the whole industry, for example.
- pjmlp 6 years agoHow come C# generics are a copy of Java when they were invented first and the only reason they didn't make it to 1.0 was not to delay the release schedule?
Java annotations are based on .NET atributes, and initially had a clusmy implementation requiring an annotations processing tool until they finally got integrated into javac.
LINQ paved the way to more FP acceptance among enterprise developers. Check "confessions of a language salesman" from Erik Meyer.
Also .NET always had AOT/JIT from the very beginning, whereas AOT was tabu at Sun and only commercial JDKs always had it as option.
- iainmerrick 6 years agoHang on, Wikipedia says Generic Java was 1998, generics were adopted in J2SE 5.0 in 2004, and C# 2.0 wasn’t released until 2005. Am I missing something? I’m sure there was cross-fertilization both ways but it seems like Java generics came first.
LINQ is a good one though, that’s definitely a .NET innovation.
- iainmerrick 6 years ago
- GordonS 6 years ago> C# generics are an (arguably improved) Java generics clone
That one at least is incorrect - C# had generic types long before Java
- iainmerrick 6 years agoI didn’t know that, thanks for the correction! (Edit: although now I’m not sure I was wrong after all; see my reply to the other comment)
I had the wrong idea because (if I understand right) C#’s generic collections seem to be a copy of Java’s (which in turn were inspired by C++’s STL). Do I have that one the right way round?
The C# collections use generally poorer name choices (e.g. IEnumerator, which does not actually enumerate the elements) so I assumed they wanted to avoid making it identical to Java.
- iainmerrick 6 years ago
- Const-me 6 years ago> C# generics are an (arguably improved) Java generics clone
That depends on who you ask.
My opinion is Java doesn’t have proper generics. In Java they’re just language-level syntactic sugar.
Type system is broken i.e. type information is lost at compile time. This makes it hard to do functional-style programming in Java, that’s why other people made Scala.
Performance is broken too, generic containers box everything into objects causing huge performance penalty for containers with value types.
- iainmerrick 6 years agothat’s why other people made Scala
I think you mean “the same people”, at least in the specific case of Martin Odersky. :)
- iainmerrick 6 years ago
- hackerfromthefu 6 years ago> Generics in the runtime not the compiler (c# 2)
> Functional deeply integrated into a mainstream language (LINQ c# 3)
> Unified graphical application model incorporating all main styles of web, forms, svg, and 3d. (WPF .net 3.5)
> Compiler language services (c# 5)
> Async await (c# 5)
- pjmlp 6 years ago
- jorgeleo 6 years ago"Two major forces outside of Microsoft's control curtailed .NET's planned world dominance: (1) the rise of Javascript in the browser which negated .NET Silverlight, and also Java applets and Flash. (2) the rise of Apple iOS and Android."
I agree with those 2 forces:
1) the raise of javascript: Now is starting to develop an answer to this in Blazor (https://github.com/aspnet/Blazor)
2) iOS and Android: both are here to stay, so Xamarin is the answer. I have been using Xamarin for iOS and all though still lack of some maturity, in its actual form is very viable.
- hackerfromthefu 6 years agoShameless plug - do you want a system built with either Blazor or UNO.
I'm a .NET developer with the perfect experience to leverage this system. I've been doing full stack and front end on various platforms for 20 years, and .NET for 15 years (version 1) and thus can leverage UNO to provide rapid and quality development.
I've already done advanced XAML in Silverlight and WPF with MVVMLight and PRISM application architectures based on TDD/CI/CD, animations, transforms, control templates, control building, designing products.
I'm also good with Blend and do the roundtrip Blend designer to Visual Studio developer workflow, or do both parts myself to design a full front end UX, UI, and code, and well as the rest of the full stack.
I've also done a lot of Razor MVC and modern web front end and I can't wait to get into Blazor as well - it seems about the dream platform for my style of development.
If you're interested to build a system or product built on UNO or Blazor with me, get in touch!
- hackerfromthefu 6 years ago
- cm2187 6 years agoI think the game changer (one way or another) will be webassembly, which will level the playing field in term of portability. Then the popularity of the different languages being ported to wasm will be based on their own merits.
- ridruejo 6 years agoJ++ I completely forgot about that! It brings back memories :)
- bitwize 6 years agoMicrosoft developed .NET (internal codename COOL) to get back at Sun for suing them over Java compliance. Microsoft wanted to do embrace-extend-extinguish with the Java runtime and Sun would have none of it, so Microsoft took their ball and were like "Fine! We'll develop our OWN managed runtime and it'll be more better-er than yours is! Neener neener!"
And Bill certainly did program in low level assembly. The last Microsoft code he wrote himself was in the ROM of the Tandy 100 portable computer.
- Someguywhatever 6 years agoI think it is better-er than Java and the JVM and they have stewarded their language much better than Java, and now Java borrows heavily from C#. I think they will win in the long run if they haven't "won" already.
- bitwize 6 years agoConsidering the language and runtime in themselves, I agree.
But they sort of missed the point of Java, which was that it was cross-platform, and a single Java package could be expected to run on a variety of hardware and OS loadouts with no changes (except maybe in configuration). Microsoft, at the time, wanted .NET to be closely tied to Windows, and though the base libraries were submitted to ECMA, to get anything useful you had to have Windows and Microsoft's Windows-only libraries. (There was Mono, but it was not compatible with Microsoft's stuff and few on the Linux side wanted to touch it.)
Things are changing, obviously, with .NET Core. We'll see if Microsoft or someone else solves for cross-platform GUI and other end-user concerns, where .NET has historically been strongest.
- bitwize 6 years ago
- pjmlp 6 years agoThe Ext-VOS design document as provided by Don Syme, alongside other blog entries, tells another story.
- Someguywhatever 6 years ago
- ot 6 years ago
- mariusmg 6 years agoDoes anyone remember Rotor ? That thing (codeveloped with Corel) was pretty interesting. Too bad about the look but don't touch license model.
- teh_klev 6 years agoYes...and I also had Ted Neward's book "Shared Source CLI Essentials" to go along with it:
https://www.amazon.co.uk/Shared-Source-Essentials-David-Stut...
The problem with Rotor was that they ripped out of all the good bits and replaced with not so good things, for example they replaced the garbage collector with a naive implementation.
That said I still learned quite a lot from studying and playing around with it way back then.
- Boulth 6 years agoI've also read that book, it was excellent!
- Boulth 6 years ago
- teh_klev 6 years ago
- dusanbab 6 years agoBack in 2008/9 I was a co-founder at a company (Red Five Labs) that created a .NET Compact Framework runtime for Symbian OS (featured on most Nokia & Samsung smartphones at the time). We got to a .NET CF 2.0 level of compatibility.
It was a venture-backed startup out of Johannesburg, South Africa.
Although we wrote the runtime ourselves, we made extensive use of some of the mono libraries until we were able to rewrite most of these optimized for Symbian.
[1] https://web.archive.org/web/20100112091803/http://www.redfiv...
- matthewwarren 6 years agoNice! Thanks for the info. I think that an update to the post is due, turns out that I missed quite a few!
- voltagex_ 6 years agoWhat happens to that code once the company disappears?
- dusanbab 6 years agoUnfortunately it went with it. There were some superficial talks about it winding up in the Symbian Foundation, but those didn’t materialize.
And yes, it probably points to a major problem with a small company developing critical framework or tool components when the codebase isn’t participating in an open source license.
There were many mistakes made along the way, in retrospect.
- dusanbab 6 years ago
- jeremycarter 6 years agoI remember this! Good memories
- matthewwarren 6 years ago
- alexvoda 6 years agoIs the .Net environment in SQL Server since version 2005 considered a different runtime?
- teh_klev 6 years agoFrom memory, I think the runtime is pretty standard, what you got was a more restrictive environment in which the CLR and Framework can run so you had less chance of clobbering data, hanging SQL processes and shooting yourself in the foot.....unless you really, really needed to.
https://docs.microsoft.com/en-us/sql/relational-databases/cl...
https://docs.microsoft.com/en-us/sql/relational-databases/cl...
- danbruc 6 years agoNo, SQL Server just uses the normal .NET Framework to execute managed code which is also implied by the name of the feature, Common Language Runtime (CLR) Integration. Well, maybe one could also read this as integrating - in the sense of implementing - a CLR into SQL Server.
- sebazzz 6 years agoYes, SQL Server hosts the .NET framework runtime but with added security configuration. There are also other applications hosting the framework (like IIS), and you can actually host the framework yourself (both the full and core framework). I was actually playing with the idea of hosting .NET addons in Kodi but it turns out it is too much work for a single developer as a hobby project.
- snaky 6 years agoWhat would be the advantage of .NET Kodi addons over Python? They would be faster that's for sure, but if I understand it correct, addons are not the main reason of Kodi suboptimal performance. The downsides are obvious - while you can relatively easy skim over the source code of the Python addons, it wouldn't be easy with .NET binaries - and most of the addons wouldn't provide source code. And the regular user can easily hack the feature, fix or two into Python addon code by himself, that wouldn't be so easy with .NET addons.
- snaky 6 years ago
- sebazzz 6 years ago
- teh_klev 6 years ago
- nailer 6 years agoAs someone outside the .net world, is there a wasm version? Can I run a .net language in a web browser and have access to the DOM, or render the UI for a .net app as DOM objects on a web page? That would be super useful.
- codenesium 6 years agoBlazor is coming. It's not GA yet.
- hackerfromthefu 6 years agoYes there's UNO for XAML to phones/wasm, and Blazor for c#/html instead of js/html modern web.
Shameless plug - do you want a system built with either Blazor or UNO.
I'm a .NET developer with the perfect experience to leverage this system. I've been doing full stack and front end on various platforms for 20 years, and .NET for 15 years (version 1) and thus can leverage UNO to provide rapid and quality development.
I've already done advanced XAML in Silverlight and WPF with MVVMLight and PRISM application architectures based on TDD/CI/CD, animations, transforms, control templates, control building, designing products.
I'm also good with Blend and do the roundtrip Blend designer to Visual Studio developer workflow, or do both parts myself to design a full front end UX, UI, and code, and well as the rest of the full stack.
I've also done a lot of Razor MVC and modern web front end and I can't wait to get into Blazor as well - it seems about the dream platform for my style of development. I would favour Blazor because it's in the html and browser world and closer to the rest of the industry and an more open platform.
If you're interested to build a system or product built on UNO or Blazor with me, get in touch!
- SideburnsOfDoom 6 years agoYes, the WASM version is here: https://blazor.net/ It's an early preview
- benaadams 6 years agoAlso Uno if you prefer XAML https://platform.uno/
- s369610 6 years agoor if you like functional, http://fable.io/ compiles F# to js to run in the browser
- codenesium 6 years ago
- swolchok 6 years agoThe recent Software Engineering Daily podcast on "Unity and WebAssembly" mentions that Unity has a .NET to C++ toolchain. Is that some kind of stock Mono feature, or is that another .NET runtime?
https://www.softwaredaily.com/post/5ba9fdd63e3767000494fe01/...
- elisee 6 years agoThat's probably IL2CPP, developed at Unity: https://docs.unity3d.com/Manual/IL2CPP.html
- elisee 6 years ago
- memsom 6 years agoYou missed two that I can think of: (1) the runtime written in F# that Frank Krueger’s Continuous uses (and I believe also Xamarin Live player uses in some fashion.) (2) Goa WinForms was a C# compiler that targeted the Adobe Flash Player, and implemented part of the BCL and WinForms UI. If you include the CrossNet I think this also counts.
- matthewwarren 6 years agoNice! Thanks for the info, I'll check those out, I'd not heard of either of them.
I think that an update to the post is due, turns out that I missed quite a few!
- matthewwarren 6 years ago
- stevefan1999 6 years agoLet's look forward for .NET Core 3.0 and CoreRT: This would make it very competitive to Go not only being both native and self-contained but also going ahead in desktop-based, GUI programming.