3 ms·
> POSIX even changed their rules about binary in shell scripts specifically to let us do it. I'd seen this quote around. The fact that the standards were chang
by asveikau 2y ago
> POSIX even changed their rules about binary in shell scripts specifically to let us do it.
I'd seen this quote around. The fact that the standards were changed to allow it never struck me as a good indication that it should be relied upon. It seems rather backwards of how these standards work.
I got flamed on HN once for saying cosmopolitan libc shouldn't be used for production because it relies on weird behaviors and implementation quirks that aren't really an ABI.
- comex 2y agoLooking at this further, the standards change doesn't even match what Cosmopolitan is doing. From the 'changed their rules' link, the 'Desired Action' is to add this text: "The input file may be of any type, but the initial portion of the file intended to be parsed according to the shell grammar [..] shall not contain the NUL character." This handles things like shar archives where you have a shell script at the beginning, then an exit command, then binary gunk. But Cosmopolitan binaries are not just shell scripts with binary. They're hybrids of shell script and DOS executable. And apparently this requires putting nul bytes right near the beginning (see my other comment, https://news.ycombinator.com/item?id=41640331 https://news.ycombinator.com/item?id=41640331), in the "portion [..] intended to be parsed according to the shell grammar". Which explicitly violates the new text. I can understand why this hack is needed for what Cosmopolitan is trying to accomplish, but it makes no sense to claim POSIX blessed it.
- chubot 2y agoYeah exactly, that was my reading too! The claim in the link doesn't match what the POSIX bug says If it did, then would be a sign that the POSIX process is not working well Because POSIX is supposed to be descriptive of what exists, not prescribe new behavior
- enriquto 2y ago> POSIX is supposed to be descriptive of what exists, not prescribe new behavior Well, it can be argued that ape already existed when that POSIX change was written :) Everything is working as intended. Nothing to see here. Move along. Move along.