Make the reload form that does dependency graph recompile&reload of any changed files #422
Labels
No labels
UX
active development
backlog
blocker
bootstrap
bounty
bug
dependencies
discussion
documentation
duplicate
enhancement
flaky test
help wanted
invalid
javascript
question
release
tendentious
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mighty-gerbils/gerbil#422
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This feature has been waiting for many weeks:
Make the reload form that does dependency graph recompile&reload of any changed files.
The purpose is to enable incremental development, without restarting the whole gerbil environment. This means the latest version of modules will be reloaded so that they in a relatively dirty or blunt fashion overload their own old version. This will not work for all modules, but it will tend to work and this way serve as a quick and dirty code injection facility.
For use from repl, no idea if this would be relevant from some ide.
Looking forward to test ASAP, thanks!
Please be more considerate when asking for features.
Demanding stuff like that doesn't make them implement themselves; all it achieves is pissing off the developers.
Yes sure. Your original promise was you'd make this one two months ago. I totally see how priorities swamp and sometimes schedules grow totally unexpectedly, all fine.
I keep coming back to this one as it is the point where Gerbil has become an incremental dev tool.
(At least outside Emacs, could imagine there's some trick in Emacs for the same effect.)
If I got you right it's relatively low complexity for you who know the codebase, to implement.
Thanks again for Gerbil and can't wait to feed it with lots of code soon 😊
@vyzo hi Vyzo could you implement this before the holiday is over now or next days anyhow?
original plan was mid Oct right
@vyzo hi Vyzo, we've been waiting about four months now, if you'd like to implement it would be wonderful! Any ETA?
@vyzo bump on this one 👍
@vyzo Hi Vyzo, have you looked at this one? Would be awesome, best regards
Not going to happen soon. It would require some deep rewiring of the system. Also, the dependency graph may change, and then—what to load or not load?
On the other hand, you could use the data from your
build.ssto rebuild all the things that need to be rebuilt for your desired targets—andmake.ssis indeed incremental now. So the question is whether you can make things more like CL's ASDF and rebuild "the system"—and then also its dependencies?—when source code changes.You can implement it in userland by specifying a custom
importhook; this way you can take complete control of the import process and implement fancy recompliation and reloading that suits you needs.^ Even that is a lot of work, and not likely to happen soon. But at least it's a well-defined task, with well-known implementation strategies.
Other note: because systems get built on one machine then updated on another, using different timestamps, with race conditions when multiple processes may be compiling them, it would be nice if a fast cryptographic function like BLAKE3 were used instead of flaky timestamps to identify the inputs of the file loaded in the current (or being-debugged) image. This would necessitate the hash being made available early on via FFI, before the stdlib itself is compiled.