freenode/#lisp - IRC Chatlog
Search
16:47:18
atw
I've got a question about http://metamodular.com/lispos.pdf, re the single memory abstraction. Does this mean that every time a program creates a cons cell or object, that thing is written in the slow, permanent secondary memory?
16:55:53
phoe
it gets written into RAM for sure, and I don't know what is the exact process of synchronizing data between RAM and non-volatile memory or what beach plans for this
17:02:20
atw
I'm making a toy lisp system and I wanted something like (persist o) which causes o to be written to disk and evaluates to o. I was curious if CLOSOS took an explicit approach like this or if there's something more implicit that makes sense to do
18:07:19
Bike
atw: don't quote me on this, but my impression was permanent storage is only done when a snapshot is taken, which may happen automatically but not at every moment
18:10:28
pjb
atw: in addition to snapshots, there may be logs written (of changed pages). but this would be performed in an efficient background task that wouldn't impact much the system performance.
18:10:58
pjb
atw: it worked like this on EROS and I found it was a nice feature. Unfortunately for some reasons, this feature wasn't kept for CoyotOS.
18:12:08
pjb
atw: for a lispOS system you may also choose to have hardware to ensure persistence of the core memory. Either with a different core memory technology, or by using eg. batteries to keep the DRAM alive.
18:13:08
pjb
atw: notice how systems such as macOS try very hard to give the user the impression of persistent core memory: when you crash and reboot, it can reopen all the open application and restore the state they were in (if the application implements the feature).e
18:13:33
pjb
atw: this means that this is a good feature for the users, so there's no reason why it could't be implemented in hardware (with battery backed DRAM).
18:13:51
pjb
atw: but of course, for that you need a system that wouldn't crash and destroy the DRAM contents…
18:48:15
mister_m
It is nice not having to re-implement various things like that certainly. split-sequence seems pretty common as well for that usage too or cl-ppcre's split
19:01:52
Jachy
I similarly like uiop:split-string because it's just there, but then some fraction of the time I also want to join and at that point might as well pull in cl-str...
19:13:50
remexre
any reason why the reader wouldn't be able to find a package (sb-introspect) but find-symbol can find symbols from it at compiletime or runtime?
19:15:10
Xach
remexre: case issues maybe. i can't think of anything else offhand but it would help to see the error or code or both.
19:17:29
remexre
code is just (format t "~s~%" (sb-introspect:function-lambda-list #'foo)) vs (format t "~s~%" (funcall (find-symbol "FUNCTION-LAMBDA-LIST" "SB-INTROSPECT") #'foo))
19:17:57
remexre
the former of which results in READ error during COMPILE-FILE: Package SB-INTROSPECT does not exist.
19:20:01
remexre
okay, looks like import-from works w/ package-inferred-system; thanks for the help!
21:45:04
npfaro
what is the current status on windows builds of SBCL? it looks like it has been sitting at 2.0.0 for a while
21:48:35
lotuseater
npfaro: or you check out the version in here https://portacle.github.io/#get-win
21:49:08
brandflake11
lotuseater: Haha, I was just looking there to see what the version was for npfaro
3:04:37
beach
atw: The CLOSOS specification calls for automatic persistence, so nothing explicit needs to be done. As with other persistent systems, it is handled by checkpointing. There is a chapter discussing the possible techniques.
3:23:48
beach
I kind of agree, but you still need checkpointing, which became clear to me when I forgot to put my laptop on a charger one day.
3:25:46
pjb
The thing is that then we require a system that doesn't crash (damaging the memory contents).
3:26:57
pjb
It looks like that we may have to integrate a computer platform eventually, specifically optimized for CLOSOS or lispos…
3:28:24
pjb
I mean that some modification to some motherboard may be required, so we may have to negociate with a vendor, or design our own.
3:29:34
beach
What I would like to se is a system like CLOSOS used in things like smartphones, in which case, the smartphone makers will do the adaptation.
3:29:49
pjb
Other components are concerned too, such as disk controllers. You want to ensure that data stored in the disk controller buffers is stored to persistent media when a power off event occurs.
3:41:47
beach
I find myself having mixed reactions to all those "toy Lisp" projects we learn about regularly. On the one hand, I think they are great, because they are going to be a way for the creators to learn about Lisp, programming-language design, compiler techniques, etc. On the other hand, I think that they are a gigantic waste of time, because the time could be spent on maintenance of some existing real Common Lisp implementation.
3:55:31
pjb
beach: existing implementation have to move in a specific direction; it may be difficult to experiment with them. Also, most implementations are not modular enough.
3:55:47
Bike
"same" is defined in the glossary to mean eql. i don't think the description of setq uses the word though.
3:56:28
pjb
jcowan: it's not possible return values that are EQ, since immutable lisp objects can be copied willy-nilly and not be EQ anymore.
3:57:17
pjb
jcowan: but there's still a difficulty. With SETF, we can mutate the place with a value that is different from the argument to SETF.
3:59:17
pjb
jcowan: and SETF says: "results---the multiple values[2] returned by the storing form for the last place, …"; this is different than for SETQ. For example, we could write (setf (double x) 2) (assert (= 1 x)) I understand that this setf should return 1.
4:03:31
jcowan
Scheme doesn't have this problem, because the setq and setf analogues return a single unspecified value
4:44:16
beach
Maybe we could persuade some of the creators of those "toy Lisps" to create the Bootstrap Common Lisp (BOCL) that I have been thinking about off and on.
4:46:07
beach
I mean BOCL is itself a "toy Lisp" in that performance is not (supposed to be) an issue.