3 ms·
So just so I'm clear, .NET ECMA Spec ⊆ .NET Standard ⊆ (.NET Core ∩ Mono ∩ Xamarin ∩ Unity) ⊆ .NET Core ⊆ .NET Framework Correct?
by smitherfield 9y ago
So just so I'm clear,
.NET ECMA Spec ⊆ .NET Standard ⊆ (.NET Core ∩ Mono ∩ Xamarin ∩ Unity) ⊆ .NET Core ⊆ .NET Framework
Correct?
- cjsuk 9y agoI think we need some calculus in there too as it'll be different next week.
- vyrotek 9y agoHere's an analogy using classes and interfaces to explain it https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8baf1b7 https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8...
- jasallen 9y agoECMA spec is for the CLI, essentially the specification for runtime like type system and GC and all the other things that make an environment work at all Net Standard is a specification of APIs. So in order to be compliant to the standard you must have a class named X with parameters string Y, int Z. "Net Framework" is the name for the Windows "full .net framework" -- this doesn't have a descriptive name since it was before all the rest, but basically its an SDK that is a superset of the Net Standard (and therefore is .Net Standard compliant / interoperable) Mono is a open source implementation of "Net Framework" that runs on multiple platforms (linux, etc). It attempts to treat full .NET Framework's surface area as a spec but re-implement it cross platform. It is _also_ a open source CLI implementation. So in common speech "mono" like ".net" can refer to either the "basic sdk" _or_ the runtime environment. Xamarin is forks of mono for iOS, Android and Mac platforms plus libraries that include full support for interacting with those platforms Native SDKs Unity is a fork of Mono plus gaming tooling and runtime tools. Microsoft does not maintain this, it's a separate company.
- smitherfield 9y agoTo be more clear, I wasn’t actually confused, just commenting on how confusing the various meanings of “.NET” are getting, and maybe helping clear up some of the confusion for people who think visually and remember their discrete math (set theory). Of course it’s still helpful to plenty of people reading this thread to define all those terms. :)
- terrajobst 9y agoNot quite. See this comment for the relationships of the specs: https://news.ycombinator.com/item?id=14971769 https://news.ycombinator.com/item?id=14971769 .NET Framework, .NET Core, Mono, Xamarin, and Unity are all implementing all the .NET specs. They are share many aspects, but each also bring specific capabilities that the others don't have, so its not very useful to think of these having a superset/subset relationship.
- smitherfield 9y agoHence the intersection symbols.
- MarkSweep 9y agoI don't think .NET Framework is a supper set of all other implementions of .NET. For example, Mono's SIMD types are not in .NET Framework. It is even possible for types to exist in .NET Core that don't exist in .NET Framework. I think you could say the following: .NET ECMA Spec ⊆ .NET Standard .NET Standard ⊆ .NET Core .NET Standard ⊆ Mono .NET Standard ⊆ Xamarin .NET Standard ⊆ .NET Framework
- smitherfield 9y agoYou're confusing intersection and union.
- MarkSweep 9y agoOh, derp, you're right.
- terrajobst 9y agoStill, .NET Framework isn't the superset of everything. As I said, I find your description not useful because it simply doesn't capture how the .NET stacks are designed.
- zastrowm 9y agoI believe that .NET Core is not a subset of the .NET Framework; e.g. .NET Core might have things that are not yet in .NET framework. I believe that the things that go into .NET core eventually go into .NET Standard (and thus the framework), but at a slower pace. Thus it would be: .NET ECMA Spec ⊆ .NET Standard ⊆ (.NET Core ∩ Mono ∩ Xamarin ∩ Unity ∩ .NET Framework)