Also it probably means blazor (which runs on mono) won't be able to share libraries with asp.net core...
Also it probably means blazor (which runs on mono) won't be able to share libraries with asp.net core...
I cannot find the comment from @terrajobst in Github anymore but it states that it is simply not possible to port some of the breaking changes to the .NET framework (because they are breaking changes in the CLR, and maintaining a third CLR version (2.0, 4.0, vnext) is very hard because of a number of shared components used).
edit: It appears some comments have been deleted, luckily we have still mail notifications from Github.
> > Do what you promised: make .NET Framework a stable framework that evolves slower instead of a dead end for the ones who trusted you when migrating to ASP.NET Core.
> That still makes the assumption that .NET Framework will eventually get all features .NET Core has, but with a time delay. We learned that's simply not realistic. We can either decide not to innovate drastically in .NET Core or accept the engineering reality that a good chunk of the new features will never make it back to .NET Framework. We believe that we serve our customers best to preserve .NET Framework's core value prop (a mature & rich development platform) while also allowing customers to exploit new capabilities on .NET Core. Moving forward, I'd expect that we'll be more willing to innovate in areas that require runtime, library, and language changes like we did for Span<T>. While these things are costly, they also allow us to change the way people can write code. A good example of this is default implementations of interfaces, the ability to author generic code involving arithmetic, being able to use hardware intrinsics etc. And those features are likely exactly the kind we're not going to backport to .NET Framework due to risk.
And later on:
> > What prevents you from introducing a new side-by-side .NET Framework version (let's say .NET Framework 5) that includes those "risky" changes? Again, it's not a technical issue.
> What makes you think it's not a technical issue? Shipping side-by-side versions of .NET Framework isn't a workable solution. First of all, it's fairly expensive due to the fact that it's an OS component and thus needs to be serviced. You have no idea how complex our branching/servicing/patching strategy for .NET Framework 3.5 and 4.x is. Adding a 3rd one is close to impractical. Secondly, just doing that also has risks, as we need to make changes to activation in order so select the correct runtime for things like COM activated managed components. And that begs the question of whether or not we support in-proc side-by-side as well and with how many combinations. It's not a simple task and not free of risk either.
I suspected that but it's good to see it written. It means not only the target will become independent and incompatible but that also the C# syntax will diverge between Core and Full. That's a death sentence for Full.
For users, having to install .NET Core 3 runtime (if the app doesn't ship it internally) doesn't seem like a different thing than having to install .NET Framework 4.x when it first came out.
It wouldn't be surprising if future versions of Windows started shipping with .NET Core pre-installed.
Why is .NET Core so different from this perspective?
The UWP .NET stack seems close enough to .NET Core (esp. when using .NET Native) to posit that this is already the case. (Though there are still subtle differences between UWP .NET and .NET Core, they seem very close to converging.)
This wasn't possible with the .NET Framework, it needed a global install and, from 4.0, it upgraded in-place only.
I hadn't fully appreciated prior to this post that .NET Core has things that aren't in .NET Framework, let alone .NET Standard. I thought it was a portable subset (a core, if you will) of the full .NET languages and APIs. I don't know whether that makes me more interested in Core, but I'm certainly less inclined to target any other flavor.
Then again, two hard problems in CS, etc. etc.
(Windows has also had several Core-branded things, at least as internal brands that have externally leaked over the last few years or been used to describe Windows Insider initiatives, but there they seem to more actually mean "core" as denoted as pure subset, though it sounds often in those cases they did imply nearly-from-scratch rewrites like the Developer initiatives with that branding.)
Though ASP.NET Core was never really a subset of ASP.NET.
.NET Framework only has the portable implementation though. The fast implementation requires support in the runtime, and Framework may never support fast Span<T> [2].
[1] https://www.nuget.org/packages/System.Memory/4.4.0-preview1-... [2] https://github.com/dotnet/coreclr/issues/18280#issuecomment-...