- It involves making too many decisions on behalf of users. C++ dodges the question somewhat by making hash tables templated, so you can customize them.
- There are a hojillion hash table libraries out there which are written in C—just pick one and use it.
Furthermore, those wheels aren't necessarily interoperable the way something built into the standard library would be; it's not just a convenience.
What's with this strange desire to mandate One True Way to implement function calls in every language implementation? If I want to use rbx/r11/r10/r9 for argument passing and return results in rdx/rsi by default and have to use
@if os.LINUX and cpu.X64
import external func[[regseq("rdi,rsi,rdx,rcx|rax"), library("libc.so")]] fwrite(buff ptr, size int64, count int64, stream ptr) int64;
@endif
to interoperate with one particular implementation of libc for one particular OS on one particular ISA, then that should be perfectly fine.Not sure what “standardize ABI” is supposed to mean… each platform has its own ABI, and most of those ABIs are already standardized. The standards are just not part of the C standard.