[HN Gopher] Show HN: I built a JSON-RPC library for Zig with com...
___________________________________________________________________
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://github.com/williamw520/zigjr/blob/master/src/rpc/jso...
Author : ww520
Score : 4 points
Date : 2025-06-26 18:24 UTC (4 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
___________________________________________________________________
(page generated 2025-06-26 23:01 UTC)