libera/#commonlisp - IRC Chatlog
Search
18:03:48
mathrick
if I have two consecutive calls to the function that explodes after a change to its code is made, the first one works, but the second one sees the corruption
18:04:35
Bike
in situations like this i usually assume i've angered a witch, or possibly a congregation of gremlins
18:04:57
Bike
i think aeth mentioned a while back that you could be modifying a literal by accident- that is the kind of thing that could result in weird crap like that, so i'd be on the lookout
18:05:03
mathrick
gendl: also, if you come up with an automated way to compile shinmeraware / other stuff that doesn't play well with atypical readtable-case, I want a copy. I've given up on :invert in the past because of that
18:06:05
mathrick
although I thought modern SBCL allocated literals in the read-only segments, so it shouldn't even be possible to modify them
18:07:50
gendl
Yes modern mode needs to be a separate image because built in CL official symbols are all literally in lowercase. That's the ansi violation.
18:11:00
gendl
mathrick: cause :invert still reads mixed-case symbols in a case-preserving way, right?
18:13:30
mathrick
Bike: oh, because LOAD-TIME-VALUE will be evaluated if the compiler is active, but loaded from saved value otherwise?
18:14:23
mathrick
yeah, I was looking at the spec the other day, but it's one of the corners of the language I really don't understand well
18:15:52
Bike
like, you can do (defun inc () (incf (car (load-time-value (list 0))))) to make a counter - each call will increment
18:20:33
mathrick
are there any other literals than '(...) that are easy to modify in a spec-violating way? I don't use any array literals that I'm aware of, and no string modification that I know of either
18:21:25
mathrick
I reviewed all the instances of '(...) I could find, and as I thought, they were all in a read-only context because I've learnt my lesson about only using literals when I know what will happen to them back when I started using CL
18:32:57
mathrick
that's conceivable, but what makes me suspicious is that the thing that reliably makes it break for me is cl-openal + cffi:with-foreign-ptr + Verbose, but Shinmera's code also uses that AFAIK
18:34:55
mathrick
hmmm, I do have a custom Trivia pattern that works around the fact that '(foo 42) matches (name (&rest args)), but I don't think it could result in anything being modified
18:38:41
mathrick
at this point, I just want to find a reasonably small repro case I could submit for smarter people than me to look at, and also a workaround so I can move forward and work on what I'm actually trying to do
18:49:14
Shinmera
an openal backend for cl-mixed is on the todo, but I don't need it, because I already interface directly with the operating system APIs, which the other wrappers like openal ultimately do, too, anyway
18:50:52
mathrick
Shinmera: I've used OpenAL enough now to be able to say that it's an extremely poorly-designed API and if you have wrappers already, using it would be a step back, at least for plain output
18:51:39
mathrick
there's *some* merit to using OpenAL for 3D spatialised audio, but it's just a really bad design
18:51:50
Josh_2
::notify lips123mob BKNR doesn't properly handle :initform when modifying class definitions
18:52:24
Shinmera
libmixed has its own spatial audio system, though I think it's bugged at the moment.
18:52:44
Shinmera
Will get to fixing and polishing that whenever I get to preprod for Next Game Project(tm)
20:03:47
jcowan
I suppose you could emulate modern mode with a package modern-cl whose contents are symbols named "car", "cdr", etc and have their definitions copied over.
20:09:05
aeth
no library does (symbol-name '#:foo) because it's longer even though it's more correct
22:28:02
pjb
Josh_2: nope. Packages only have symbols. That said, method combinations are named with symbols.
22:28:28
Josh_2
If I define a method combination in X and :use X in Y will my method combination be found?
22:29:21
pjb
But you can also refer the method combination with a qualified symbol: x::my-method-combin