in reply to Making a reloadable module, allowing "live" edits

I played with reloading modules at runtime a few years back. But there are quite a few problems that really can mess things up in subtle ways:

I'm not discouraging the use of automatic reloads. Just saying while automatic reloads might be cool and solve some problems, they certainly introduce a set of their own. After a lot of extra gray hair, i have pretty much abandoned the concept of live-reloading code-in-development.

perl -e 'use Crypt::Digest::SHA256 qw[sha256_hex]; print substr(sha256_hex("the Answer To Life, The Universe And Everything"), 6, 2), "\n";'

Replies are listed 'Best First'.
Re^2: Making a reloadable module, allowing "live" edits
by Fletch (Bishop) on Apr 11, 2022 at 14:22 UTC

    Pre-caffeine random early morning musing: there's almost a continuum from "normal" C style development (every change necessitates a complete rebuild and restart of the "program") to Smalltalk-y / lisp-y tinkering with the code of the running instance live. There's neat stuff you can do on the latter end of that scale but (as you mention) there's also caveats you've got to start thinking of and unless the language / compiler / runtime provides support you may be out on your own limb.

    (As a specific (maybe) example, emacs has just now added support in 28.1 so that if you're interactively evaluating a defvar declaration it will now actually override an existing declaration (where previously it'd be ignored in subsequent evaluations same as if you'd re-eval'd the statement in the code (and any similarity of this paragraph and lisp is purely coincidental (probably)))

    Anyhoo, agree you've got to be aware of the limitations (and capabilities) of where you're trying to work because if you're in a strange land things may trip you up.

    The cake is a lie.
    The cake is a lie.
    The cake is a lie.