Vali, a C Library for Varlink
Posted3 months agoActive3 months ago
emersion.frTechstory
supportivepositive
Debate
20/100
C LibraryVarlinkSystem Programming
Key topics
C Library
Varlink
System Programming
The announcement of Vali, a C library for Varlink, has been met with interest and support from the HN community, with discussions focusing on the library's design and potential applications.
Snapshot generated from the HN discussion
Discussion Activity
Active discussionFirst comment
4d
Peak period
11
84-96h
Avg / period
5
Comment distribution15 data points
Loading chart...
Based on 15 loaded comments
Key moments
- 01Story posted
Oct 10, 2025 at 9:13 AM EDT
3 months ago
Step 01 - 02First comment
Oct 14, 2025 at 1:04 AM EDT
4d after posting
Step 02 - 03Peak activity
11 comments in 84-96h
Hottest window of the conversation
Step 03 - 04Latest activity
Oct 15, 2025 at 8:47 PM EDT
3 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45538628Type: storyLast synced: 11/20/2025, 1:48:02 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
This might enf up being be fine, but it gave me pause when I looked at it previously.
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.
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.
At the end of the day, local or remote, it is all just pushing data over sockets, no?
More realistically, adding HTTP where it is not needed adds unnecessary complexity.
Though my Haskell and Rust primed brain really dislikes the way ownership of the memory allocation for the response struct works.
It gets allocated by the caller (library), handed over to the function fully owned, and then gets consumed by the response function?