snix/users/sterni/blipqn
sterni a9e121380b feat(sterni/blipqn): reuse address and socket for multiple Sends
This is achieved by storing the resources we need to acquire for
interacting with the flipdot (socket fd and addrinfo struct) in a
`struct flipdot` that is dynamically allocated and treated as an opaque
pointer object via the BQN FFI.

To make sure these resources are released correctly, we only provide a
lisp style WithFlipdot to the user which takes care of acquiring and
releasing the `struct flipdot`. This works even if an error occurs in
the function the user provides thanks to _defer_. I'm not sure if
calling it _defer_ is right since Go's error handling works differently,
so defer really is deferred execution in a sense which doesn't really
fit what we're doing here. The closest is probably Haskell's bracket,
but that name references it's triadic nature which doesn't fit our
implementation.

Change-Id: Iff65d277a448dbe0c6ac93e816ece5ab6fa10190
Reviewed-on: https://cl.tvl.fyi/c/depot/+/13011
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2025-01-17 15:50:33 +00:00
..
.gitignore feat(sterni/blipqn): interact with a flipdot display from BQN 2025-01-17 15:50:33 +00:00
blipqn.bqn feat(sterni/blipqn): reuse address and socket for multiple Sends 2025-01-17 15:50:33 +00:00
default.nix feat(sterni/blipqn): interact with a flipdot display from BQN 2025-01-17 15:50:33 +00:00
examples.bqn feat(sterni/blipqn): reuse address and socket for multiple Sends 2025-01-17 15:50:33 +00:00
flipdot.c feat(sterni/blipqn): reuse address and socket for multiple Sends 2025-01-17 15:50:33 +00:00
GNUmakefile feat(sterni/blipqn): interact with a flipdot display from BQN 2025-01-17 15:50:33 +00:00