21 ms·
A History of .NET Runtimes
- alexvoda 8y agoIs the .Net environment in SQL Server since version 2005 considered a different runtime?
- danbruc 8y 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 8y 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 8y 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.
- teh_klev 8y 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/clr-integration/database-objects/supported-net-framework-libraries?view=sql-server-2017 https://docs.microsoft.com/en-us/sql/relational-databases/cl... https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration/security/clr-integration-code-access-security?view=sql-server-2017 https://docs.microsoft.com/en-us/sql/relational-databases/cl...
- mariusmg 8y 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 8y 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-Stutz/dp/059600351X 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 8y agoI've also read that book, it was excellent!
- jasode 8y 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 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 https://www.amazon.com/Essential-COM-Don-Box/dp/0201634465
- pjmlp 8y 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.
- marcoperaza 8y 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.
- memsom 8y 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 8y 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!
- nailer 8y 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.
- SideburnsOfDoom 8y agoYes, the WASM version is here: https://blazor.net/ https://blazor.net/ It's an early preview
- codenesium 8y agoBlazor is coming. It's not GA yet. https://github.com/aspnet/Blazor https://github.com/aspnet/Blazor
- benaadams 8y agoAlso Uno if you prefer XAML https://platform.uno/ https://platform.uno/
- s369610 8y agoor if you like functional, http://fable.io/ http://fable.io/ compiles F# to js to run in the browser
- hackerfromthefu 8y 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!
- sureshv 8y 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.
- dusanbab 8y 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 8y 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.
- matthewwarren 8y 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 8y 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.redfivelabs.com:80/ https://web.archive.org/web/20100112091803/http://www.redfiv...
- jeremycarter 8y agoI remember this! Good memories
- matthewwarren 8y agoNice! Thanks for the info. I think that an update to the post is due, turns out that I missed quite a few!
- voltagex_ 8y agoWhat happens to that code once the company disappears?
- dusanbab 8y 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.
- pjmlp 8y 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-and-Peter-Sollich-Inside-Compiler-in-the-Cloud-and-MDIL https://channel9.msdn.com/Shows/Going+Deep/Mani-Ramaswamy-an... https://channel9.msdn.com/Events/Build/2012/3-005 https://channel9.msdn.com/Events/Build/2012/3-005 .NET Native is an improvement of this work.
- matthewwarren 8y 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 8y 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.
- swolchok 8y 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/Unity-and-WebAssembly-with-Brett-Bibby https://www.softwaredaily.com/post/5ba9fdd63e3767000494fe01/...
- elisee 8y agoThat's probably IL2CPP, developed at Unity: https://docs.unity3d.com/Manual/IL2CPP.html https://docs.unity3d.com/Manual/IL2CPP.html
- stevefan1999 8y 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.