Comment by zamalek
20 hours ago
To Odin's credit, it is used for production software that _isn't_ a toy (by the language's own authors). It is probably 1.0 quality already.
20 hours ago
To Odin's credit, it is used for production software that _isn't_ a toy (by the language's own authors). It is probably 1.0 quality already.
If you want to imagine a "1.0 quality" which means "Is used in some software that isn't a toy" then all kinda of crap counts. Bill has given specific goals, I don't think he'll meet them or perhaps even understands how high those bars are†, but even by his understanding Odin hasn't reached those goals.
Unlike Jai you can just download Odin and see for yourself, it has the particular things Bill prioritized (swizzling, a very particular way to do generic programming) and it doesn't have things which Bill feels are a mistake (most obviously package management, but also closures, first class user-defined types, macros, I could go on). The resulting perf isn't very good, and to me it "feels" clumsy to use.
One of the striking things in the Handmade languages is that they're so often wedded to LLVM and so in that respect they're much worse than C which of course isn't even wedded to modern architectural choices like 8-bit bytes, much less LLVM. Zig is the most free of this peculiar curse, which is ironic because years ago Bill called out Zig as unable to escape this, while insisting Odin would not require LLVM - the reverse of what actually transpired.
† In particular Bill thinks he's going to completely specify the language. Anyone who works on this problem for WG14 (C), WG21 (C++) or Rust knows that's basically a rabbit hole made entirely of more rabbit holes. I think Oracle's Java has a complete specification, and maybe TC39 has one for "Javascript" neither of those were uh, cheap or easy.
Zig too. But this is far from being mainstream. Rust took around 5 years I think to become accepted in major companies, and those languages are harder to justify.
I've started distrusting anything good people have to say about Zig because of the wide variety of untrue claims made about it - unless those claims come from Andrew himself. Last time I was assured that compile-time memory guarantees were possible and were going to happen (they didn't: the recent announcement is runtime/debug assertions). Zig is still making massive breaking changes, and while that is not a bad thing, it makes it categorically _not_ production ready.
Also note that isn't much different from debug heap that MSCV was already having in 2000[0], assuming you didn't want to shell out some money to Insure++{1], BoundsChecker[2] and similar products.
Or something like SoftBound, from 2009,
https://llvm.org/pubs/2009-06-PLDI-SoftBound.pdf
It hasn't been for lack of choice.
[0] - https://learn.microsoft.com/en-us/cpp/c-runtime-library/debu...
[1] - https://www.parasoft.com/products/parasoft-insure/
[2] - https://en.wikipedia.org/wiki/BoundsChecker