What the .NET team does on the technical side is almost universally wonderful. They've (ironically?) been a bit more successful than the Java folks at establishing multiple serious languages of different kinds running on and interoperating via the same runtime.<p>But it's still a Microsoft project and their sword keeps looming over its head. There have been some heavy-handed anti-developer choices in the past and one can safely assume that that has been their EEE-genes kicking in and it will probably not get better, but worse, the more they build up a community they feel they have (or should have) control over.<p>Wouldn't want to dive into that pool.<p>.NET is only as good as the parts Microsoft doesn't have too much control over and that doesn't even include the VSCode extension (or VSCode itself - Use VSCodium and you'll see).
They also added a TimeProvider to help with testing time objects. Maybe one day we will also get an FileSystemProvider..<p>TimeProviderFake: <a href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.time.testing.faketimeprovider?view=dotnet-plat-ext-8.0&viewFallbackFrom=net-8.0" rel="nofollow noreferrer">https://learn.microsoft.com/en-us/dotnet/api/microsoft.exten...</a><p>ReleaseNotes: <a href="https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8#time-abstraction" rel="nofollow noreferrer">https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotn...</a>
2MB for a standalone “Hello World” binary in C# is a similar size to one in Go. Do both languages produce similar-sized binaries for larger projects as well?<p>If so, would C# be a good choice for writing cross-platform command-line applications?<p>It seems that C# can produce easily-distributable binaries, while also hitting a sweet-spot in language design - not super complex like C++ or Rust, and also not overly simplistic like C or Go.
This is for native AOT binaries, not for the typical case. Though this release and the previous ones did contain improvements for trimming binaries, which is what you need to use to make non-AOT binaries smaller.
Everything dotnet is doing for cross-platform is great and better than alternatives --- except one HUGE issue: There is no official GUI on Linux.
Linux's exclusion from MAUI (while 25% of world's developers' primary dev machine is a Linux system according to Stack overflow survery) creates a huge hurdle for those developing on Linux to build any cross platform GUI app with dotnet.
If I , as a developer developing a windows/mac/mobile app with official dotnet, am using Linux for development , I cannot create a GUI app.
Hey dotnet folks! -- let me put a god damn button on the screen!
Sincerely
A Linux dev
[Don't get at me with Avalonia/Uno etc. I am talking about "official" GUI. A graphical user interface is not a specialized domain, or some niche to be left for others to fill. It is a core element of a user facing app. ]
Anyone knows other alternatives for Azure Functions, but for DIY hosting? ( eg. OpenFaas - <a href="https://www.openfaas.com/" rel="nofollow noreferrer">https://www.openfaas.com/</a> )
I've just tried to move an existing project to this and VS complained that the SDK doesn't support this version, even though I can create new projects with .net8. (preview SDKs are enabled) Is that some real limitation, or is VS being weird here?<p>There's <a href="https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.upgradeassistant" rel="nofollow noreferrer">https://marketplace.visualstudio.com/items?itemName=ms-dotne...</a> out there, but I haven't tried it yet.
This is a result of their focus on better serverless support. Having done that recently these are really welcome improvements along with AOT stuff for EF.
You can find summary of the release in my article: <a href="https://tomaszs2.medium.com/net-8-standalone-net-apps-now-50-smaller-on-linux-861fde887415" rel="nofollow noreferrer">https://tomaszs2.medium.com/net-8-standalone-net-apps-now-50...</a>
Is static linking supported now? It's the one blocker for me to use C# in weird places. I'm good at hacking the underlying environment to make it work, but dynamic loading is not on the table.