POSIX utilities are not great. Lex and Yacc included.
POSIX utilities are not great. Lex and Yacc included.
I say this only as it has been many years since I have written one, but I thought this OCaml presentation on a POSIX shell held the structure in high regard.
https://archive.fosdem.org/2018/schedule/event/code_parsing_...
I am partial to hand-coded recursive descent purely because I struggled with Lex and Yacc too much when I tried.
And a lot of magic, with special variables, macros, and functions that you must know. And unclear scoping.
[1]: https://gavinhoward.com/2023/02/why-i-use-c-when-i-believe-i...
I remember reading that post of yours a year or so ago! It was so bizarre to me, but also really fun. I feel like you are among what is probably a very small group of people who could write something security-sensitive in C, and I would feel comfortable using it. (I am still less than thrilled that I have to rely on OpenSSL, regardless of the process improvements its developer team has made in more recent years.)
I still (unfortunately, IMO) write a lot of C. Back in 2004 I thought it was great fun. But now that I've worked in safer, batteries-included languages, I find C to be a huge drag. I'm so much more productive in Rust or even Java. I could never ever ever ever approach the level of rigor you bring to your C code; I just don't find doing all that stuff to be fun or interesting... to the contrary, it feels like a huge drag: if I were "required" to do all that, I just wouldn't write any code at all in C in the first place, knowing that having to do all the testing and fuzzing and static analysis stuff would burn me out.
Anyhow, I hope I don't sound like I'm being critical... quite the opposite. I just think we live in a magnificent world where people's brains can work so so so differently when it comes to the same topic.
> I feel like you are among what is probably a very small group of people who could write something security-sensitive in C, and I would feel comfortable using it.
This is probably the most complimentary thing anyone has ever said to me. Thank you! I hope I can live up to that.
My take on POSIX utilities would be only to use them on Linux platforms where they effectively form a "native" part of the platform.
Yes, you should only use them on POSIX.
My utility does build natively on Windows, though.
https://en.m.wikipedia.org/wiki/Microsoft_POSIX_subsystem
Microsoft had previously been the largest AT&T UNIX licensee with Xenix sales on the TRS-80 model 2, so they were familiar with the need.
Does Windows claim POSIX compatibility these days? I didn't think so? I remember NT's old POSIX subsystem, but is that even a thing anymore?
> My take on POSIX utilities would be only to use them on Linux platforms
I mean, only use them on POSIX-compliant systems. Linux is just one of them.
At the risk of sounding childishly derisive, when someone is talking about "portability", I think they're generally not bothering to include Windows in the mix, as Windows doesn't really share all that much of a common denominator with much else.