mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
this patch renames ComptimeStringMap to StaticStringMap, makes it accept only a single type parameter, and return a known struct type instead of an anonymous struct. initial motivation for these changes was to reduce the 'very long type names' issue described here https://github.com/ziglang/zig/pull/19682. this breaks the previous API. users will now need to write: `const map = std.StaticStringMap(T).initComptime(kvs_list);` * move `kvs_list` param from type param to an `initComptime()` param * new public methods * `keys()`, `values()` helpers * `init(allocator)`, `deinit(allocator)` for runtime data * `getLongestPrefix(str)`, `getLongestPrefixIndex(str)` - i'm not sure these belong but have left in for now incase they are deemed useful * performance notes: * i posted some benchmarking results here: https://github.com/travisstaloch/comptime-string-map-revised/issues/1 * i noticed a speedup reducing the size of the struct from 48 to 32 bytes and thus use u32s instead of usize for all length fields * i noticed speedup storing KVs as a struct of arrays * latest benchmark shows these wall_time improvements for debug/safe/small/fast builds: -6.6% / -10.2% / -19.1% / -8.9%. full output in link above. |
||
|---|---|---|
| .. | ||
| crc | ||
| spirv | ||
| docgen.zig | ||
| gen_outline_atomics.zig | ||
| gen_spirv_spec.zig | ||
| gen_stubs.zig | ||
| generate_JSONTestSuite.zig | ||
| generate_linux_syscalls.zig | ||
| lldb_pretty_printers.py | ||
| process_headers.zig | ||
| stage1_gdb_pretty_printers.py | ||
| stage2_gdb_pretty_printers.py | ||
| std_gdb_pretty_printers.py | ||
| update-linux-headers.zig | ||
| update_clang_options.zig | ||
| update_cpu_features.zig | ||
| update_crc_catalog.zig | ||
| update_glibc.zig | ||
| update_mingw.zig | ||
| update_spirv_features.zig | ||
| zig_gdb_pretty_printers.py | ||