Hacker News new | ask | show | jobs
by martindevans 944 days ago
There used to be .NET Framework (which was a Windows only runtime built by Microsoft) and Mono (an open source implementation for various other platforms).

In 2016 they started building .NET Core which is new open source implementation (built mostly by Microsoft) which runs on more platforms. For a while all three existed side by side.

Eventually .NET Core caught up and overtook the other implementations. These days Framework is legacy. Core has been renamed to just .NET (since it's now _the_ runtime) and Mono (as far as I know) has been totally replaced by it.

This is all from memory, so apologies for any inaccuracies!

2 comments

While correct, modern .NET supports currently two VM: CoreCLR and MonoVM. The later mainly as AOT compilation target for iOS, Android and WebAssembly. Mono is still better suited for that, but the AOT compilation of CoreCLR is progressing.

I think there is nothing else left from the Mono project like the class library or the compiler/toolchain.

Actually, .NET Framework is the Python 2 of the .NET world, with all the references that it entails.

Still too many enterprise products stuck in the old ways.

Unlike with python, some things simply can't be ported, though. I maintain a webforms page, the only upgrade path would be a full rewrite
Python 2 => 3 also has the issue that some things don't exist in Python 3, or are done in incompatible ways.

As I mentioned a few times, I have been involved in projects were that full rewrite happened to be .NET Framework => Java, which shows how the customers were mad at what was left behind.

Although there is some irony in that, as Java's Python 2 problem is the transition into Java 9.

> as Java's Python 2 problem is the transition into Java 9

Binary incompatibility between 7 and 8 as well, we got an enterprise product that got bought by SAP and will eternally be stuck on Java 7, but at least unlike the other one, it doesn’t require much maintenance as it’s only used internally ;)

> Python 2 => 3 also has the issue that some things don't exist in Python 3, or are done in incompatible ways.

What doesn’t exist? I don’t like python, but it always seemed like those changes were all relatively minor?

The way unicode was handled, integer division semantics, some libraries went away, and a few other things change enough that 2to3 wouldn't handle everything, which in a dynamic language is a big pain to track down in a huge codebase.

Naturally some changes on the C API for native libraries as well.

Fair enough, thought that still sounds like things where an upgrade path is available, just not automatically, instead of "you have to throw the code away because it simply doesn’t work anymore".