4 ms·
Modern C# and .NET are great. It still suffers from the bad reputation of the Windows-only .NET Framework. It's still a quite heavy platform with a lot of featu
by andix 10mo ago
Modern C# and .NET are great. It still suffers from the bad reputation of the Windows-only .NET Framework. It's still a quite heavy platform with a lot of features, but the .NET team invested a lot of time to make it more approachable recently.
With top level Programs and file-based apps[1] it can be used as a scripting language now, just add a shebang (#!/usr/local/share/dotnet/dotnet run) to the first line and make it executable. It will still compile to a temporary file (slow on first run), but it doesn't require a build step anymore for smaller scripts.
[1]: https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/tutorials/file-based-programs https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals...
- actionfromafar 10mo agoAlso, if you compile Ahead Of Time (AOT) you can cut down on the features and get basically as small a subset as you want of the libraries. IMHO C# and dotnet are really starting to become very impressive.
- andix 10mo agoAOT requires a lot of fiddling around, and might break the application unexpectedly, with very weird errors. It is mostly targeted to Blazor (WASM) and for serverless functions. The default runtime and JIT are fine for most use cases.
- neonsunset 10mo ago[dead]
- orphea 10mo ago> AOT requires a lot of fiddling around, and might break the application unexpectedly, with very weird errors. It hasn't been my experience. Native AOT does come with some limitations [1][2], but nothing awful. Mostly it's that you can't generate code at runtime and you have to tame the code trimmer. Just don't ignore code analysis warnings and you should be good. > It is mostly targeted to Blazor (WASM) and for serverless functions. Making your CLIs start fast is also a huge use case. [1]: https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/#limitations-of-native-aot-deployment https://learn.microsoft.com/en-us/dotnet/core/deploying/nati... [2]: https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/incompatibilities https://learn.microsoft.com/en-us/dotnet/core/deploying/trim...
- actionfromafar 10mo agoC# AOT may sometimes require fiddling around, but in my experience a lot less fiddling around than what my alternative used to be, which was to use C++.
- olvy0 10mo agoThere's also bflat [0]. Not an official Microsoft product, more of a passion project of a specific employee. "C# as you know it but with Go-inspired tooling that produces small, selfcontained, and native executables out of the box." Really impressive. Self contained and small build system. [0] https://github.com/bflattened/bflat https://github.com/bflattened/bflat