freenode/#lisp - IRC Chatlog
Search
16:05:44
beach
It just occurred to me, the Intel "bug" where speculatively executed instructions do not check for permission, wouldn't that bug also affect Common Lisp systems that rely on the hardware to for GC write barriers?
16:48:50
Xof
beach: the real problem in that bug was read permission of sensitive data that the user process shouldn't have been able to read
17:57:42
jasom
beach: I'm not sure why that mattters; it's a data-exfiltration bug, not something that affects the correctness of programs
17:59:16
Bike
the idea is something like, a write is speculatively executed in a way that ignores the write barrier,which fucks up whatever that fucks up?
18:01:34
phoe
the idea is: you guess a number, and try to check if some value at a memory address X is equal to that number. You are forbidden from reading that value by the system security.
18:03:07
phoe
But the CPU optimizes things in order to be fast. It pre-executes the instruction and keeps parts of it in its cache, so it can return the result as soon as it checks that you are allowed to read from that address.
18:04:46
phoe
You need to execute lots of instructions to be able to exploit that bug, and then you can only read memory that you have pointers to.
18:05:58
rme
the spectre/meltdown bugs wouldn't affect gc write barriers implemented via the vm system
18:09:49
yoel
Yes - that what I did. However, now quicklisp doesn't find any system (I used it to load a newer version of ASDF)
18:09:51
rme
memory reads made by speculatively executed instructions affect micro-architectural state (namely the L1 cache), enabling a side-channel leak. the defined architectural behaviour of the processor remains correct.
18:10:15
rme
In other words, unsuccessful speculatively-executed instructions leave evidence behind (in L1 cache) that they should not.
18:11:09
phoe
ros should automatically pull and install quicklisp and your systems should be located in ~/.roswell/local-projects
18:12:09
yoel
it seems that now ONLY the .clisprc is loaded. The content of my init.lisp is: #+clisp(load (compile-file #P"~/.clisprc.lisp"))
18:29:03
yoel
phoe: my mistake - setup.lisp IS being loaded but it can't find components (such as: *** - Component "alexandria" not found )
18:30:23
light2yellow
I don't understand the picture from https://en.wikipedia.org/wiki/S-expression . why is it branching to the left at the third empty node? why does it have nil as the right child?
18:30:34
yoel
it probabley has nothing to do with init.lisp per se but for loading ASDF 3.3.1.7 at the end of the process (as clisp built-in version is 2.26)
18:33:42
jasom
light2yellow: slight correction: (cons '* (cons 2 (cons (cons '+ (cons 3 (cons 4 nil))) nil)))
18:37:11
yoel
I usually use SBCL on Linux and CCL on a Mac. I tried CLISP and it didn't work so I decided to learn from the problem. Thank you both!
18:37:14
light2yellow
okay, now that I see how to construct a (* 1 2) through cons (there couldn't be any other way anyway, sigh), I guess I am able to figure this out, thank you jasom
18:37:49
jasom
light2yellow: of course most of the time you'd just do (list '* 1 2) but what's happening under the hood is the cons
18:38:40
light2yellow
yes, I know, spent quite some time trying to understand the recursiveness of all the definitions. in the end it's very simple
18:40:01
light2yellow
the eye-opener this time was that I can use an operator quote (which is just a function, which is just a symbol, which is an atom) in the cons
18:40:55
phoe
because, if it was a function, it would have its argument evaluated, which is exactly what we want to prevent.
18:41:22
light2yellow
no, I mean an arithmetic operator, phoe. by "operator quote" I meant (quote op), where op is some operator
18:42:57
light2yellow
jasom: that intern usage, is that to prevent name clashing or smth? if smb redefines * for me?
18:43:24
light2yellow
I mean, I suppose I know what intern does - it returns an object given a string
18:43:46
jasom
light2yellow: that intern is what the reader does for you when it encounters a symbol. (read-from-string "*") will intern "*" in the current package
18:44:17
jasom
assuming the current package has used the common-lisp package, then it will yield common-lisp:*
18:45:30
jasom
but the function returns the symbol, so it was a silly trick to get a symbol without having to use QUOTE
19:01:01
jasom
lisp does some really fancy things with some really simple primitives, so the first 3 years or so I used it I overthought *everything*
19:29:59
light2yellow
is sequential evaluating guaranteed by ANSI CL? I suppose it isn't? otherwise progn wouldn't exist?
20:05:08
light2yellow
a question about slime. with this snippet https://pastebin.com/LgrXKbZa , if I slime-eval-buffer, I get the correct NIL in the end, but if I select everything and slime-eval-region, it returns T. what's going on?
20:05:09
aeth
light2yellow: Quite a few forms have an "implicit progn" http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_i.htm#implicit_progn
20:17:04
light2yellow
phoe: I guess I figured it out. if I select the line after the last one too (which is the end of buffer or whatever), it returns T for some reason.
20:23:51
light2yellow
right, never mind, it returns nil and t in sequence after each evaluation - once former, once latter. so, thanks, rme, defparameter solves it
20:34:27
phoe
_death: I've applied your solution to PROTEST and it works much better now. Thanks for pointing the issue out to me!
21:40:19
caffe
i'm curious if anyone can explain what's going on here: (do ((x N)(c 0)(i 2 (+ i 1))) ((= x 1) R)
21:55:25
aeth
Do is basically let, but with a step form in the bindings section and then a termination form plus a result before the body
22:00:24
cgay
That CLHS page has some bad indentation in the examples. Is anyone maintaining it these days?
22:03:22
caffe
so if i break it up into smaller pieces, what exactly is something like (x N) supposed to do?
22:06:03
cgay
caffe: (x N) is binding the variable name 'x' to the value of the variable named 'N'. 'c' and 'i' are also being bound there.
22:07:54
caffe
okay. thanks. sorry for the dumb questions, but i haven't had much success testing single expressions from this program
22:11:37
cgay
caffe: You're in luck. I've had exactly zero Euler problems come up in the workplace in the past 40 years.
22:28:02
cgay
ok, that was uncalled for. What's up, mid-teir-lisper? Generally on IRC you should just ask your question...
2:17:53
insi
noob question, but, how do i avoid adding the same sublist to a list? like if i have a list (a b c (b d))
2:24:31
White__Flame
in real non-homework use, there's also PUSHNEW which you can modify the test as well
3:20:31
ealfonso
is there a good way to destructure a REST pathname in hunchentoot, like for extracting 123 and 456 in "/a/123/b/456"
3:39:43
PuercoPop
This is what I do https://gist.github.com/PuercoPop/fb40d1cb8025272c3ba2437e71f26a3a