4 ms·
https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file https://docs.microsoft.com/en-us/dotnet/core/deploying/singl... You can do that now. Technic
by cameronh90 6y ago
https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file https://docs.microsoft.com/en-us/dotnet/core/deploying/singl...
You can do that now. Technically the binary contains an embedded runtime, but is that really much different?
Full AOT is possibly coming with the next version of .NET, mainly aimed at non-JIT-capable targets, such as WASM and iPhone. Currently they only work with Mono due to lack of AOT in .NET 5.
- Shadonototro 6y ago30mb for a hello world 60mb + for a HTTP server is not what i call a single binary without runtime at best it is called packing giant runtime together with user executable hack and their AOT story is far from being perfect, it has to deal with the fact that C# is a managed language first so exit system programming needs, it's just not playing on the same field c# is aimed at webdevs and game scripters with unity
- cameronh90 6y agoAs I mentioned it is mostly just packing a runtime with the binary. But for most use cases, does it matter? It won't work well for microcontrollers, but for most other things a 60MB binary is not a big deal. It takes under 3 seconds to download on an average internet connection. The main reason I wouldn't use it for system programming is lack of good Linux libraries.
- Shadonototro 6y agoit doesn't matter how long it takes for people to download it it is plain and simple, waste of bits, and bits is money, the more you have, the more money it'll cost you to move around, process and store scale this to billion of computers, and you'll understand what i mean by waste
- cameronh90 6y agoIt's an insignificant cost. Nobody cares about it at any scale except embedded development (or occasionally due to artificial restrictions created by app stores). The money saved by shaving a few MB off your binary is going to always be like 0.00001% of your costs, and even if you're at such a massive scale where that could justify developer investment, there's going to be lower hanging fruit to worry about. If you're at such a level of optimisation that it's correct to worry about deploying a 60MB binary, you must be doing exceptionally well. Most places (including Amazon and Google) are using 200MB+ docker images and serving poorly optimised image files. And if it _really_ bothers you, you can always install the runtime separately for a sub-1MB binary, or use trimming for a sub-10MB binary.
- Shadonototro 6y agoall i am saying is fact, it is a waste don't ship what's not needed, it's a waste and it tells a lot about the mentality of the developers/company 60mb, now CDN server need at least 60mb of storage to cache your file compare this to a developer that care and will produce the same with a native language for 6mb, that's 10x less the space needed it'll cost CDN 10x less money to store and serve since they'll need 10x less storage and will require less bandwidth too for you single dev, you apparently don't care, but it then hurts everyone, including global warming issue and at the end, it'll hurt me, now my 128gb SSD isn't enough to store all the electron shit, i need upgrade to install new update cpu and memory also has to take longer to load and cache all your program it is the reason why software sucks despite hardware becoming better, nobody care anymore and it all start at the developper computer, if you don't care, nothing will improve, and every bits matter, either you like it or not, that's how computers work
- xfer 6y agoIf you are talking about end user software, you can just depend on platform dotnet and just ship your library/executables. For server software 60mb is not much when you see most people ship gigabytes of docker containers for os runtime.
- Shadonototro 6y ago
- WalterBright 6y ago> 30mb for a hello world hello.d: import core.stdc.stdio; extern (C) void main() { printf("hello world\n"); } dmd hello -betterC comes to 23,068 bytes.
- Shadonototro 6y agoi was referring to the C# hello world that produces a 30mb executable
- WalterBright 6y agoI know. I was just constrasting it with D.
- teleforce 6y agoPerhaps someone needs to compare all the major programming languages for their "Hello World" default executable size. But again some programming languages will probably going to optimize it to oblivion wink Julia wink.
- WalterBright 6y agoIndeed they will. Gaming compiler benchmarks has been going on since the early 1980's. Datalight C was the first C compiler for DOS to do data flow optimizations. Since the benchmarks of the time simply did some operations and ignored the result, the data flow optimizations would delete the benchmark code. I was accused of gaming and cheating on the benchmarks. After they published, of course. Sigh. It wasn't long before other compilers did DFA, and the benchmarks (of course) were changed.
- eigenspace 6y agoWhat benchmarks exactly do you think the julia community is cheating at?
- mhh__ 6y agoI get around 6k and ldc
- pjmlp 6y agoNope, https://www.wildernesslabs.co/ https://www.wildernesslabs.co/ https://azure.microsoft.com/en-us/overview/iot/ https://azure.microsoft.com/en-us/overview/iot/