Interactive Programming in C (2014)

(nullprogram.com)

89 points | by ofalkaed 1 day ago

6 comments

  • lkuty 1 day ago
    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).
    • RustyRussell 1 day ago
      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).

    • zoom6628 23 hours ago
      Maybe TinyC from Ballard et al could also be used given its ability to be a C interpreter?
      • uticus 1 day ago
        > 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 1 day ago
          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.
        • mrheosuper 21 hours ago
          iirc HolyC is an interpret language.