freenode/#lisp - IRC Chatlog
Search
13:02:17
dlowe
Given the current size of the userbase, I think I'd rather have more people contributing to the quicklisp infrastructure than more infrastructures.
13:50:28
dlowe
Sure. Being able to subscribe to, depend on, and maintain multiple repos would be key here
14:07:57
Petit_Dejeuner
Er, what I mean is I used to be able to use them in slime without any configuration, but now they aren't bound.
14:13:13
pyc
Is buildapp necessary? Isn't sb-ext:save-lisp-and-die enough to build a distributable executable binary?
14:14:13
jackdaniel
pyc: buildapp is meant to be portable and make things easier. it works on sbcl and ccl
14:15:02
jackdaniel
I'm presonally using net.didierverna.clon which works on more implementations, provides good abstraction for command line options and on top of that is well documented
14:25:41
Xach
pfdietz: I am putting together a docker image that contains all the necessary foreign libraries for building everything shipped in quicklisp.
14:35:27
Xach
pyc: i made buildapp because i wrote the same type of lisp file to load stuff and call save-lisp-and-die all the time
14:35:50
Xach
it is a program that automates writing that kind of lisp file and loading it. i also could not figure out how cl-launch worked.
14:36:04
Xach
now there is cl-launch, net.didierverna.clon, asdf built-ins, and probably more besides.
14:57:36
Fare
I noticed, too late, that there was a difference in calling convention between cl-launch and buildapp -- cl-launch calls a main function with argv[1..] while buildapp calls it with argv[0..]
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...