Thursday, June 26, 2025

Show HN: I built a JSON-RPC library for Zig with compile time reflection https://ift.tt/gyEKN3T

Show HN: I built a JSON-RPC library for Zig with compile time reflection Doing dynamic dispatching in a strict static typing language is hard. Something as simple as, map.put("add", add); map.put("hello", hello); fn add(a: i32, b: i32) i32 { return a + b; } fn hello() []const u8 { return "Hello World"; } is impossible because the value type of key/value of the map needs to be the same but all the function types are different. Calling functions with different number of parameters, different parameter types, and different return type dynamically is difficult. Other languages either use dynamic typing, runtime reflection, macro, or passing in one big generic parameter and let the function figure it out. In ZigJR, I use Zig's comptime feature to do compile time reflection to figure out a function's parameter types, return types, and return errors. I package them up into a specific call object and use the interface pattern to produce a uniformly typed object to be put into the map. It's not easy but doable. [1] [1] https://ift.tt/TZ5eXfg... https://ift.tt/SENLgf7 June 26, 2025 at 11:54PM

No comments:

Show HN: Tablr – Supabase with AI Features https://ift.tt/ltABMro

Show HN: Tablr – Supabase with AI Features https://www.tablr.dev/ June 30, 2025 at 04:35AM