4 ms·
> The LoLa runtime is designed to be saved to disk at any point not executing any code. This means that you can let your script execute for 1000 instructions, s
by brundolf 5y ago
> The LoLa runtime is designed to be saved to disk at any point not executing any code. This means that you can let your script execute for 1000 instructions, save the runtime state to disk and resume execution a week later on another computer, not having any problems with script resumption. This is especially useful for games which often want to embed the state of their scripts into the save files.
This seems pretty cool. Don't know if this is more common in game scripting languages, but I've never seen it before
- Rochus 5y ago> I've never seen it before Common e.g. in Smalltalk VMs
- jhomedall 5y agoMany Common Lisp implementations allow you to dump the program state to an image, which can then be loaded later.
- igouy 5y ago"10.4 The image file provides a frozen in time snapshot of a running Pharo system. This is the file where all objects are stored and as such it's a cross platform format. An image file contains the live state of all objects of the system (including classes and compiled methods, since they are objects too) at a given point. An image is a virtual object container." https://ci.inria.fr/pharo-contribution/job/UpdatedPharoByExample/lastSuccessfulBuild/artifact/book-result/PharoTour/PharoTour.html https://ci.inria.fr/pharo-contribution/job/UpdatedPharoByExa... When the Smalltalk implementation provides lightweight processes, snapshot saves the state of the lightweight processes — so when Smalltalk is restarted, the lightweight processes restart and continue doing whatever they were doing.
- 7373737373 5y agoUnfortunately, Smalltalk will never have the protection aspect simultaneously due to its global access system.
- tompazourek 5y agoR does something like that, it's pretty cool.
- raizinho 5y agoCould you elaborate?
- tompazourek 5y agoR has this concept of workspaces. A workspace contains the loaded modules as well as the state of all user-defined variables, their values, etc. And a common workflow is that the entire workspace state is persisted in an RData file. It's like you were working in some REPL, but the last state of the REPL is persisted in between your sessions. So it's a different kind of programming, it's more interactive if you don't need to start from scratch every time. That means if something takes a while to compute, it's OK, because you only run it once, not every time you "run the program".
- raizinho 5y agoAh. I use R a lot but gotten so used to not saving RData and Rhistory that I forgot why they were useful.
- 7373737373 5y agoThese are indeed rare features, only very few languages have them: Stackless Python: https://stackless.readthedocs.io/en/2.7-slp/library/stackless/pickling.html https://stackless.readthedocs.io/en/2.7-slp/library/stackles... Also Tcl and some special versions of Java and WebAssembly VMs, Lua with some ugly hacks. I tried to find systems like these: https://github.com/void4/notes/issues/16 https://github.com/void4/notes/issues/16 Challenge for language designers: make this kind of sandboxing work recursively, and 100% securely: https://www.reddit.com/r/ProgrammingLanguages/comments/jxo92o/recursive_scheduling/ https://www.reddit.com/r/ProgrammingLanguages/comments/jxo92...
- paulddraper 5y agoDifferent of course, but virtual machines do this.