Remix.run Logo
kentonv 4 days ago

Yeah, JSON RPC doesn't support the pass-by-reference and lifecycle management stuff. You just have a static list of top-level functions you can call. This makes a pretty big difference in what kinds of APIs you can express.

OTOH, JSON RPC is extremely simple. Cap'n Web is a relatively complicated and subtle underlying protocol.

crabmusket 4 days ago | parent [-]

> You just have a static list of top-level functions you can call.

Actually the author of JSON RPC suggested that method names could be dynamic, there's nothing in the spec preventing that.

https://groups.google.com/g/json-rpc/c/vOFAhPs_Caw/m/QYdeSp0...

So you could definitely build a cursed object/reference system by packing stuff into method names if you wanted. I doubt any implementations would allow this.

But yes, JSON RPC is very minimal and doesn't really offer much.

kentonv 4 days ago | parent [-]

Right, your methods in JSON RPC could be dynamic. JSON RPC really doesn't specify anything, so you can do anything with it. But you need conventions around that, like how does a client find out that the server exported new methods, and how does the client indicate that it is done with them? That's exactly what Cap'n Web is all about -- defining those conventions in a usable way.