4 ms·
Fair enough. I'm not against your project. I realize that open-source projects have time/funding constraints and that you don't owe me anything. By "baking i
by comex 6y ago
Fair enough. I'm not against your project. I realize that open-source projects have time/funding constraints and that you don't owe me anything.
By "baking in native support for other architectures", I guess you're thinking of an approach similar to Apple's "fat binaries", which are just multiple independent binaries built for different architectures bundled together? That's a good pragmatic option, and definitely the best choice size-wise for small programs. On the other hand, it lacks forwards-compatibility: you're limited to the set of architectures the original developer decided on. And for large programs, the cost of N copies of the program can add up.
Personally, I'm a fan of bytecode VMs such as WebAssembly. That way the binary can be truly architecture-independent, capable of supporting many different architectures or special architecture variants without bloating the size of the executable. On the other hand, if you wanted the binary to run out of the box with no dependencies, you would have to bundle an entire VM implementation into the binary for at least some architectures, and then you'd have your own share of "hello world" bloat. (I'm assuming there would be an option for the user to supply their own VM for less common architectures.)
I do wonder how small one can make a WebAssembly VM, if its design prioritizes minimal size over maximal speed, while still aiming to get reasonable speed (i.e. not an interpreter)…
- _roqj 6y agoCheck out Wasm3 which is the fastest WebAssembly interpreter, and since they recently adopted Cosmopolitan it's now the most universal one too. https://twitter.com/wasm3_engine/status/1354699030165676033 https://twitter.com/wasm3_engine/status/1354699030165676033 Cosmopolitan is designed to be complementary to visions like yours. If you believe bytecode is the future then Cosmopolitan can help your vision be successful by giving it the best performance and portability across PCs and servers.
- spockz 6y agoIn order to solve the “forward” compatibility option you could have both Specialized binaries and a generic version in (wasm) bytecode. Then you can have all the performance optimisations you care about and retain compatibility with all platforms. Optionally you could consider a binary that on first run (&prompt?) removes the binaries irrelevant to the current host.