Conversation

Eniko | Kitsune Tails out now!

why DID microsoft make .NET? like, the benefit of a VM is portability so why make a VM and then be like "... and it will only run on x86 windows computers! :3"

i guess so that they could have multiple languages all target the same common language runtime and interop easily?

11
3
0

@eniko feels a bit like everyone treated x86 as an end of history architecture.

0
0
0

@eniko When marketing has more say than the engineers...

1
0
0

@eniko I say marketing, but it's just an arbitrary restrictions the higher-ups added to keep those pesky non-windows machines away.

0
0
0
@eniko wasn't it for Windows Phone dev too?
1
0
1

@buherator was it, originally?

2
0
0

@eniko Wasn't Itanium going to be the next big thing when .net was getting done?

0
1
0

@eniko I mean, it does work on ARM64 Windows systems (although I don't know if compiled code is actually portable, or you'd need to recompile for ARM64 anyways)

2
0
0

@neocturne @eniko Fun fact: native support for .net 4 was only added in Windows 11 ARM64. On Windows 10 ARM64, .net worked through x86 emulator.

Anyway, as long as .net executable is marked as any architecture, it'll run (JIT) in ARM64 mode.

0
1
0

@eniko Oh, also 32bit ARM, the note I just read said that .NET doesn't support instruction sets *before* ARMv7

1
0
0

@eniko (Although I don't know if Windows is still a thing on 32bit ARM at all)

0
0
0

@eniko @buherator in a way! .net was a big deal on Windows CE, but it was a subset of .net - kind of like Java MIDP vs Java SE

0
0
1

@eniko because they wanted Java, but Java sadly had a very huge downside in MS's eyes: it was Not Invented Here 🤡

0
0
0
@eniko idk the history but IMO it'd make sanse to support the primary arch first (providing a memory safe option for devs too!) then use the abstraction of the bytecode as needed. E.g. a quick search shows that .NET 4 was available for Itanium too.
0
0
1

@eniko because java was taking off as a cross platform language and microsoft didn't want any of that?

0
1
1

@eniko because they wanted to be able to say "we have Java at home" whenever someone said they wanted Java

0
1
1

@eniko the whole point of .NET and C# were to have Java without having to follow the rules to say it was Java

Because heaven forbid that the Mighty Microsoft should ever need to follow rules set by anyone else

0
1
0

@eniko In the late ‘90s, Microsoft was worried about threats to the desktop monopoly. The biggest ones were from the web, because people who could replace a Windows app with a web app could then replace Windows with Macs, Linux, BeOS (which was about to be the next big thing briefly) and so on. Windows is not a great OS. Few people buy Windows because they want Windows, they buy Windows to run Windows apps.

They undermined Netscape in various ways, including bundling IE4 and building a load of Windows-only things into IE.

Java was another threat. Microsoft built J++, which was a good implementation of Java (faster than Sun’s) and also bundled a load of Windows-only things. In particular, it didn’t clearly mark the extensions (which Java implementations were required to do), so it was easy to think you were writing a portable Java App when you were actually writing a Windows app. Sun sued Microsoft over this, leaving them with good VM technology that they couldn’t put in products (the lawsuit wasn’t settled until a year or so after .NET was released but the writing was on the wall long before).

At the same time, Intel told everyone that Itanium was the future. x86 was going to die. An architecture transition had a risk of undermining the Windows monopoly because moving to a new architecture would reduce the value of legacy apps (if you are emulating the ISA, you might also emulate a legacy OS and run shiny new apps on a different system). Having an architecture-agnostic executable format would have made it easier to move.

Finally, looking as if you are able to transition to a different architecture gave Microsoft more leverage in talks with Intel. This made it easier to get features into the x86 architecture that Windows wanted (which is part of the reason why x86 is so awful now. The Windows team does not have good taste when it comes to proposing new architecture).

0
1
0

@eniko @catsalad a big benefit of the VM thing is ABI resilience. .Net started effectively as “Component Object Model 2”

0
1
0