ruricolist / serapeum

Utilities beyond Alexandria
MIT License
420 stars 41 forks source link

Potentially improper use of LOAD-TIME-VALUE in STATIC-LET? #113

Closed Hexstream closed 2 years ago

Hexstream commented 2 years ago

Has the LOAD-TIME-VALUE trick been thoroughly tested on multiple implementations? Because I had done this for the first release of first-time-value but I later had to fix it because it didn't work properly in some situations on CCL. (The issue is easy to work around by using the value cell of a gensym, see the first-time-value source code for a simple example.)

What I had tentatively concluded at the time is that the value returned by LOAD-TIME-VALUE should always be treated as a real literal that you can't safely modify, even if the value is not explicitly declared read-only. I'm not sure if I was correct, but you may like to investigate and test further.

Hexstream commented 2 years ago

Confirmed, it seems. ;P

(I don't think the presented "solution" is sane or optimal, but that's another story...)

ruricolist commented 2 years ago

I believe this has been addressed so I'm closing this issue. Feel free to reopen if there's something I've overlooked.