5 ms·
I'm a big fan of C#, but to be fair nothing else you've named is really aiming for the same niche. The better comparison would be Swift, Go, Java/Kotlin, stuff
by TillE 2y ago
I'm a big fan of C#, but to be fair nothing else you've named is really aiming for the same niche. The better comparison would be Swift, Go, Java/Kotlin, stuff like that.
But yeah I think C# is often unfairly viewed as a boring enterprise-y language when it's actually become a very comfy swiss army knife.
- LtWorf 2y agoIf it wasn't so linux distribution unfriendly…
- nickcox 2y agoIn what ways?
- LtWorf 2y agoBasically it's not included in any distribution. Mostly for license problems. Which means anything you write with it can't be included in any distribution. It's quite limiting. Basically it's only useful for proprietary software shipped by 3rd party.
- neonsunset 2y agoThe entirety of https://github.com/dotnet/dotnet https://github.com/dotnet/dotnet (which is a VMR for full-source build of Roslyn, runtime and everything else that goes into runtime-only and SDK packages) is MIT, which is as permissive as it gets, save for CC0 or Unlicense. Quick search shows that SDK and runtime packages are available in the official feeds for Archlinux: https://archlinux.org/packages/?sort=&q=dotnet https://archlinux.org/packages/?sort=&q=dotnet Fedora: https://packages.fedoraproject.org/pkgs/dotnet8.0/ https://packages.fedoraproject.org/pkgs/dotnet8.0/ Ubuntu: https://pkgs.org/search/?q=dotnet https://pkgs.org/search/?q=dotnet I always wondered what is the motivation behind the negative comments like these on .NET submissions. Is this because .NET is mostly made by MS employees instead of Google (which is an AdTech company) or Oracle (which has a license trap JDK distribution)?
- LtWorf 2y ago> I always wondered what is the motivation This is the motivation ↓ apt install dotnet-sdk-8.0 Error: Unable to locate package dotnet-sdk-8.0 Error: Couldn't find any package by glob 'dotnet-sdk-8.0'
- neonsunset 2y agoA lot of otherwise excellent software is not present in, for example, official Debian feeds. As a sibling comment pointed out, that’s no reason to throw a tantrum and is a trivially solvable issue.
- LtWorf 2y agoLol trivially… unless you want to distribute your software that is.
- neonsunset 2y agoYou can make a single file executable that does not require any dependencies with just the following. No runtime is required on the host, which I assume you allude to as lacking necessary package in the official feed might cause issues if it's required (and given it's present in everything that is not Debian, it is a Debian issue and something Debian must address). JIT: dotnet publish -p:PublishSingleFile=true -p:PublishTrimmed=true AOT: dotnet publish -p:PublishAot=true -p:OptimizationPreference=Speed* Use -o to specify destination. By default targets the host's OS RID, but can be overriden with e.g. `-r linux-musl-arm64`. Cross-architecture compilation is supported within OS, and there is a nuget package that switches the publish to Zig toolchain to allow publishing for Linux under Windows without relying on WSL2: https://www.nuget.org/packages/PublishAotCross https://www.nuget.org/packages/PublishAotCross This only concerns AOT as .NET uses the same linker to produce the final binary as your regular C/C++ code. It is a true native executable through and through that is understood by all standard tooling like native code profilers. For JIT binaries, anything that .NET supports can be published for under any other OS and ISA. * my recommendation as the size impact is negligible but codegen quality in edge cases improves quite a bit. Other flags that may be useful are -p:IlcInstructionSet=x86-x64-v3 (AVX2 and friends) and -p:IlcFoldIdenticalMethodBodies=true (it's disabled by default because it can mess up stack traces, naturally, in .NET 9, disabling stack trace information enables it as well).
- abcde777666 2y agoI've found it quite easy to build and deploy to Linux, also curious what challenges you've run into.
- LtWorf 2y agoIf it can't be included in the distribution, it's not "distribution friendly"
- mlhpdx 2y agoAlmost everything I build in C# runs on some flavor of Linux.
- LtWorf 2y agoI said nothing about running. I said about distributions.
- latentsea 2y agoWhat distributions specifically have you had a problem developing on? I've developed on Ubuntu and Pop_OS! in C# for years and never hit a problem.
- LtWorf 2y agoCan I apt-get install your software? If not, then you've just hit the problem.
- metaltyphoon 2y agoOh yeah so unfriendly. sudo dnf install dotnet-sdk-8.0. sudo apt install dotnet-sdk-8.0 sudo apk add dotnet-sdk-8.0
- LtWorf 2y agoapt install dotnet-sdk-8.0 Building dependency tree... 0% Error: Unable to locate package dotnet-sdk-8.0 Error: Couldn't find any package by glob 'dotnet-sdk-8.0' Works like a charm. Any more irrelevant things to say?
- metaltyphoon 2y agoAll this means is Pop OS doesn’t have it published. You don’t have to throw a piss because MS doesn’t publish it for Pop https://github.com/dotnet/core/blob/main/linux.md#packages https://github.com/dotnet/core/blob/main/linux.md#packages
- LtWorf 2y agoI use regular proper debian. The fact that it's not there (and it can't be there) was exactly my point. I use toilets normally. I don't throw excrements.
- tester756 2y agoI have no idea why he gave you some random link literally first link under "dotnet debian" is: https://learn.microsoft.com/en-us/dotnet/core/install/linux-debian#debian-12 https://learn.microsoft.com/en-us/dotnet/core/install/linux-... __________ wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb https://packages.microsoft.com/config/debian/12/packages-mic... -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0
- LtWorf 2y ago