[HN Gopher] Interactive Programming in C (2014)
___________________________________________________________________
Interactive Programming in C (2014)
Author : ofalkaed
Score : 47 points
Date : 2025-07-23 17:16 UTC (5 hours ago)
(HTM) web link (nullprogram.com)
(TXT) w3m dump (nullprogram.com)
| lkuty wrote:
| Tsoding made a video about hot code reloading in C
| (https://www.youtube.com/watch?v=Y57ruDOwH1g) and also used the
| same concept in "My Own 3b1b Animation Engine but in C"
| (https://www.youtube.com/watch?v=RVwuYgXNUCM).
| uticus wrote:
| > When the library loads without error, look up the GAME_API
| struct.... If looking up the GAME_API fails, close the handle and
| consider it a failure.
|
| Error handling strategies, and what fallback state things fall
| into when the hot code breaks, would be great to hear about.
| 90s_dev wrote:
| I did something similar ones as a vs code extension for love2d
| which I called live2d, so that you could develop your game while
| it was running. It was incredibly fun, but incredibly hard to
| use, and nobody had any interest in it, so I abandoned it and
| lost the source code eventually. But it worked so well. I had
| invented this thing called magic tables to go along with it and
| make it easier to use, I forgot what they did, I just remember
| the name and how cool it was.
| RustyRussell wrote:
| Andrew Tridgell's KnightCap did this differently: it's a network
| chess server, and it would dump its data to a file and re-exec.
| The trick here is that it would keep the (network) fds open for
| zero downtime. IIRC he used a Perl script called datadumper to
| gen the code marshal/demarshal the structures.
|
| This has the advantage that reboots can be handled fairly
| seemlessly too (though there will be reconnections then of).
| sitkack wrote:
| https://man7.org/linux/man-pages/man2/pidfd_getfd.2.html
|
| https://gist.github.com/kentonv/bc7592af98c68ba2738f44369208...
|
| For those curious research "SCM_RIGHTS" (Socket-Level Control
| Message) and sendmsg/recvmsg
___________________________________________________________________
(page generated 2025-07-23 23:00 UTC)