3 ms·
They're an optimization in most dialects that support it: it's not like Smalltalk, where you can reload your app state and continue exactly where you left off.
by qwertyuiop924 10y ago
They're an optimization in most dialects that support it: it's not like Smalltalk, where you can reload your app state and continue exactly where you left off.
- lispm 10y agoSmalltalk doesn't do that and if it does, it's because the runtime is dumb. For example, a Smalltalk which saves and restores threads in an image, can only do that, because it does not use native threads. Various Lisp systems are using native threads. If a Smalltalk image starts, formerly open files may be opened again. If the files is not there, then nothing happens. Same for network connections. I would be very irritated if my Lisp Machine on start would reopen all network connections... But it has a controlled restart process, where I tell Lisp what to restart on a reboot. Actually a Lisp Machine has a list in memory, where the restart tasks are kept. If the image is restarted, one of the tasks it does is to go through this list and execute the various restart tasks...
- qwertyuiop924 10y agoI don't know all of smalltalk's semantics for transient connections: However, when a smalltalk image is shut down, a snapshot of all objects in a live system are kept. I would assume that the VM signals a shutdown, and that would tell all the transient entities to close themselves. Anyways, Lisp images don't work like that: a lisp image is a static preloaded environment. If you redefine some functions, exit lisp, and reopen the interpreter, those redefinitions won't be there.
- lispm 10y agoWhy would you exit? On a Lisp Machine you can make the image and continue working. It also has incremental images, etc. If I save and load an image, the new definitions are still there. What you refer to has very little to do with imags, Smalltalk keeps a database of code in files under system control. That's also how Interlisp worked. On a Symbolics Lisp Machine I would configure the machine, load my software and create an image. After starting that image I would on login load any changes from the code bases. If this would be too long, I would save an incremental image. The Lisp Machine had many more image related features...
- qwertyuiop924 10y agoWell, on a lispm, yes. However, most of us don't have lispms (as much as we might want one!), and the symbolics VM is a pain to run. In CL, you don't do that sort of thing. In any case, at least a few Schemes have images, so it's a moot point in that debate. It's still interesting, though.
- lispm 10y ago> In CL, you don't do that sort of thing Oh, something like LispWorks has extensive support for using images, too. It has a very extensive application/library delivery mechanism based on images. LispWorks can also save 'sessions', even automatically as periodically timed events. Even without quitting Lisp. Sessions are basically IDE states (files, listener history, lisp image, windows, ...).