top | item 45576785

(no title)

sam_bristow | 4 months ago

I've only had a cursory look at Varlink, but it almost felt too simple. In particular the lack of unsigned or sized integers.

This might enf up being be fine, but it gave me pause when I looked at it previously.

discuss

order

jauntywundrkind|4 months ago

Varlink exists only to be extremely simple.

The Linux ecosystem was using D-Bus for basically everything. But there was some need for IPC in early boot, before any D-Bus brokers were started.

Varlink was the answer, as a simple direct (vs DBus's broker mediated) IPC.

wolletd|4 months ago

It's JSON with some simple idea of RPC added to it. With the main idea apparently being that it is human-readable.

We've been using Varlink for one project, but I've never found myself in a situation where I had any benefit from the data being JSON. You rarely read the raw data. But compared to gRPC or CapnProto, you lost compile-time type checking and now you need 10mins of testing a vending machine before you get a "key not found"-error because you missed one spot on renaming.

Also, I've written varlink-cpp building on asio and nl-json at some point: https://github.com/wolletd/varlink-cpp. But as our varlink usage declined, it never found much usage and isn't maintained.

emersion|4 months ago

"you lost compile-time type checking" makes it sound like you haven't been using code generation? Varlink has an interface definition language which makes everything type-safe.