Live data from Hacker News

Microsoft Launches Its .NET Distribution for Linux and Mac

techcrunch.com

231–240 of 249 posts

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#231
post #205
post #174

Earlier quoted context omitted.

> Think of it as like the Java runtime environment, but not terrible. What's terrible about the JVM/JRE? Many people complain about the language Java (conservative language, programmer culture of complexity...), or the web browser plugin for the JVM (security vulnerabilities, bad startup performance...), but I've generally heard good things about the JVM itself.

The JVM type system uses type erasure (which means that any generic type Blah becomes Blah at runtime), so you can't instantiate types based on generics at runtime. In C# it is valid to do "T foo = new T();" and because of reified generics, this works. You can't overload functions based on their generic type ("Foo(List ...) and Foo(List ...)" on the JVM (the bit gets erased!). This was done to preserve binary backwar…

There were experiments done some years ago for automated stack allocation in the JVM, by Azul. They had actual hardware support for it, it was very interesting. Basically they stack allocated everything by default and then moved stuff onto the heap when required.

What they found is that it didn't make a big difference to performance. The problem is that generational GCs make allocating short lived small objects very cheap, basically as cheap as stack allocation. The main difference is that with stack allocation you are (potentially) better exploiting the cpu cache, but whether this makes a noticeable difference depends a lot on complicated things. It's not as clear a win as you would imagine and eventually Azul stopped bothering with it.

I'd still like to see more aggressive stack allocation in the JVM. However, I am not expecting it to be some kind of silver bullet.

Re: generics. It's true that type erasure causes some annoying problems. Oddly though, it has a big advantage too - it allows other JVM languages more flexibility to experiment with different approaches to generics. For example Kotlin uses a different style of generics to regular Java. If the JVM enforced the Java semantics that innovation wouldn't be possible, or at least, not at all easy. And of course one reason the Java world has a larger library ecosystem than .NET is that the .NET designers kept breaking backwards compatibility whereas the Java guys didn't. That's the reason JVM generics works the way it does. So the tradeoffs are rather subtle.

It's not quite true that the CLR was designed to be language agnostic and the JVM wasn't. The JVM was intended to be language agnostic right from day one. However Microsoft had to try and unify the worlds of Visual Basic, Java/C# and C++ which were all popular on Windows at the time, so they emphasised it more from the start. However VB.NET and C# are very similar languages with the bulk of the differences being down to syntax. In particular, VB.NET is not really the same language as classical VB at all (e.g. different handling of threads).

These days the JVM has lots of very different languages running on it with quite acceptable performance. They've done a lot of work on making very dynamic languages fast, through things like invokedynamic and Graal/Truffle. That's because those languages are very popular. They've done less work on functional languages, but I'm sure stuff they would benefit from will come with time.

The real benefit of value types, by the way, is control over memory layout and thus CPU cache usage. Java tends to lose benchmarks against C++ partly because C++ programs naturally lay out data in more cache friendly ways. Value types in the JVM/Java language are likely to make a big difference here, though it's hard to say exactly how much ahead of time.

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#232
post #100

Earlier quoted context omitted.

Yep, the problem with Java is Oracle.

I have to say, the two best things that happened to language design in the last fifteen years was. 1. Sun sued Microsoft for trying to improve Java. And so Gates went out and hired the guy that designed Turbo Pascal and Delphi to head up C# development. Because of course java and it's libraries are completely unsuitable for desktop development. 2. Oracle bought Sun and suddenly every company that absolutely cannot to…

IIRC, Sun sued Microsoft for creating & pushing proprietary extension that, when used, limited the created application to Windows platform and MS' JVM.

Not for improving Java itself, afaik.

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#233

Earlier quoted context omitted.

How? Recent version of Windows come with recent versions of .Net out of the box. How would you 'win' here? The core clr is supposed to be bundled as far as I understand, so it'll be just another dependency of your application: You don't even NEED to install .Net (on the system/system-wide) anymore.

Ever tried to install an update to .net and powershell automatically without a restart remotely? You need the wrappers of defined state or sccm just to survive. Winrm can't even touch it. (except through ugly as sin scheduled commands)

To be honest: No experience with that.

But that's yet another example of something that has no relationship to the core clr (-> bundle, local installation, 'just a dependency').

So yes, Windows needs restarts to update some files. And yeah, for most stuff / everything but the kernel (?) you don't need that on Linux.

No relation to the ease of deployment of .Net, especially not the open source/cross platform thing that started this thread.

It is literally as easy to deploy as any application on your platform and doesn't need to be deployed explicitly.

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#234
post #48
post #28

F# is a real breath of fresh air in comparison to something like Scala. It's direct ML heritage really shows, also just diving in with an IDE (like Xamarin, or I suppose Visual Studio) is super easy. I see it as the future of pop-functional programming. For example look at the way it handles type inference w/ JSON parsing. Compare that to what you have to do to parse JSON in Scala. It's subtle, but a major usability…

I did a toy comparison of ML-derived languages running on Linux the other day ( http://thebreakfastpost.com/2015/04/22/four-mls-and-a-python... ) and found F# already simple to get along with and fast to run, at this beginner level. It could become a really interesting option.

Maybe you could try out Haskell also? I would gladly assist if you'd be in need of any.

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#235

Earlier quoted context omitted.

> For XCode, compare it to Visual Studio (IMO, VS is light years ahead) I agree. VS is the best IDE I've ever used by far. > For Mac Native, compare to the .NET runtime (IMO .NET is better but it's not as clear cut) The only thing I wish is that MS made it a bit easier to make .NET transparent for the user. Occasionally you need to install a version of the runtime when you install a new program, it'd be nice if that…

Strangely enough, the reason that this install step exists is because the .NET Framework _is_ built-in to Windows. For example, .NET 3.5 was built-in to Windows 7. If your app needed .NET 4, then it needed to formally install it on the system. If we didn't make that an option, then .NET 4 apps would not run on Windows 7, which would be bad. .NET Core is _not_ built-in to the OS, so apps can carry it within their pack…

Ah thanks for clarifying. I guess I was thinking more along the lines of just always grabbing the most recent .NET through Windows Update automatically.

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#236
post #137

I don't know who they're trying to fool. I don't run MS software in my computers and I never will.

In case you use linux, i have bad news for you. there is by now many code lines from MS.

Strictly speaking the statement is probably still true if lottin doesn't use Hyper-V (and most people don't).

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#237

Earlier quoted context omitted.

Wow yes, apt-get install dotnet anyone? Should Microsoft provide a few common platform install methods?

It would be hilarious if it became easier to install .NET on Linux than it is to install Java.

Well, `brew install mono` is pretty simple on mac.

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#238
post #228

Earlier quoted context omitted.

Graal/Truffle looks lot like DLR. Are they similiar ?

I assume their purpose is similar, but they are really a framework for building very sophisticated JITs -- much more than HotSpot's current optimizing JIT, which is state-of-the-art -- with user-controlled code generation. The CLR has a very primitive JIT to begin with. So while the purpose might be similar, Graal/Truffle represent the future of JITs, while DLR is just a framework that helps implementing dynamic lang…

Minor correction: what I said about a similar purpose is true for Truffle. Graal is a general-purpose, optionally-user-controlled JIT, that can (and probably will) be used to JIT Java bytecode in addition to Truffle AST nodes. So it's basically just Hot Spot's next-gen optimizing JIT compiler.

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#239

Earlier quoted context omitted.

Strangely enough, the reason that this install step exists is because the .NET Framework _is_ built-in to Windows. For example, .NET 3.5 was built-in to Windows 7. If your app needed .NET 4, then it needed to formally install it on the system. If we didn't make that an option, then .NET 4 apps would not run on Windows 7, which would be bad. .NET Core is _not_ built-in to the OS, so apps can carry it within their pack…

Ah thanks for clarifying. I guess I was thinking more along the lines of just always grabbing the most recent .NET through Windows Update automatically.

Makes sense. There is a latency of when .NET Framework versions are released and when they show up on Windows Update. Also, customer do not have to install them even when they do show up. Also, some versions don't show up on Windows Update for various reasons. That's why the install step exists.

Re: Microsoft Launches Its .NET Distribution for Linux and Mac

#240

Earlier quoted context omitted.

>Microsoft will support .NetCore for at least 20 years. Without doubt. On Windows for sure. Not on *nix though.

I think they will. I think we're slowly moving to a post-Windows Microsoft world and MS is taking a leap to be a big part of that through tools. I do not think Windows will be a thing in 2025.

I think, you think... any CTO, or CEO/owner of a company won't as easily put so much at stake (and IT is crucial part of every major company of any type). MS has a long history of hating and subverting anything other than Windows, it's almost cartoonish when looking back.

This might be just my experience (over 11 years, over +-10 companies) that noone takes MS servers seriously. Only exceptions are Active directory, Exchange and some special reasons where MS SQL server needs to be used (for whatever reasons). Never seen any bussiness-critical app apart from those mentioned running on anything except Linux or Unix.

They're moving in right direction, but thy need to climb really big hill, which they built themselves.

Post reply on HN