6 ms·
In what ways?
by nickcox 2y ago
In 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).
- LtWorf 2y ago> You can make a single file executable that does not require any dependencies Which is not distribution friendly. Thanks for finally understanding you were wrong all along.
- neonsunset 2y ago> Which is not distribution friendly. Why is that?