freenode/#lisp - IRC Chatlog
Search
10:03:30
Nilby
A non-mutative circular buffer would just eat memory, so you're actually just making the garbage collector do the mutative circularity work.
10:43:42
White_Flame
ldb: since the root node of the tree has to change every time there's a change in the functional structure, the index can live there
11:14:23
White_Flame
but if you're just using a plain tree without multi-element nodes, then pruning old values may or may not amortize, unless you have a special function for it
12:48:06
Xach
ACTION prepares for purging a bunch of things that don't work with sbcl 2.1.1 and which are unmaintained
12:48:42
Xach
approximately http://report.quicklisp.org/2021-01-30/failure-report.html (cl-protobufs is not one of them)
12:52:14
theothornhill
whats the sly equivalent of slime-inspect-presentation-at-point? Can't seem to find anything
12:55:10
Xach
(i was really happy to learn about emacs's xterm mouse mode where clicking works even through ssh to a remote emacs)
13:00:31
Xach
I started using sly a few months ago and really like it. there are only a few things that trip me up in the slime->sly transition.
13:01:23
Xach
and very very occasionally my notion of * differs from sly's due to some unknown cause
13:04:32
Xach
Ahh, thanks. I thought I reported all errors but that one is new since the last big breaking change.
13:05:33
Xach
i have a program to go through all github-hosted projects and submit a bug if one doesn't already exist, but i haven't run it lately
13:06:28
phoe
Derived type of SEQUENCE is (OR VECTOR SB-KERNEL:EXTENDED-SEQUENCE), conflicting with its asserted type LIST.
13:06:34
phoe
https://github.com/j3pic/lisp-binary/blob/02ce88f285ef4c8e8b3c2be3385217490fab9628/utils.lisp#L293-L297
13:09:32
phoe
SBCL is indeed getting better and better at removing projects from quickli^W^W^W^Wfinding bugs in code at compile-time
13:11:07
Xach
i've been using allegro a lot lately and i really miss some of the bugcatching of sbcl
13:22:13
Xach
it's not a problem that arrived in the last month, and i'm not sure it will be fixed in the next month
13:23:24
Xach
there's certainly no rush for a third party (you) to fix things, i meant more that i didn't think that timeframe would see much action by the original authors.
13:59:43
ex_nihilo
Xach: I've seen you mention a couple of times recently that you have been building with SBCL 2.0.5 while there are issues with 2.1. Is there something special about 2.0.5?
14:33:37
Xach
ex_nihilo: i don't know the exact point it started to detect e.g. slot initform/type incongruence - i picked 2.0.5 somewhat arbitrarily.
14:45:43
Xach
i think sbcl's changes are a net good, they just create some temporary headaches for me
15:12:06
phoe
Xach: is there any help you'd need with regard to implementing PGP signatures in Quicklisp? Asking in context of that recent /r/lisp post
15:13:48
Xach
phoe: one sticking point is key rotation. i'm not sure how to adapt my initial implementation (which assumes an unchanging signing key) to a key that is periodically updated.
15:18:31
phoe
I assume that we could write a test suite that generates a signing key that expires in five seconds, tests that everything works, sleeps for five seconds, then tests with a derivative of the original key
15:26:25
phoe
basically, you have a non-expiring master key that you use only for generating temporary keys
15:26:39
phoe
and then when you create a new temporary keys, you sign the new key with the old one and vice versa
15:27:33
phoe
google-fu tells me https://danielpecos.com/2019/03/30/how-to-rotate-your-openpgp-gnupg-keys/
15:28:33
phoe
IIRC you sign a message that tells your favorite keyserver "hey, I am revoking this key, don't use it anymore" and then you send it
15:29:08
phoe
that's already an infrastructure question I think - you can possibly distribute your public keys via http://quicklisp.org
15:29:48
phoe
I mean, in theory, the client can download the file at http://quicklisp.org/keys/newest.zip and inflate it and scan the contents of that archive
15:31:12
Xach
Yes, there are many possible theories, but one must be chosen, and its strengths and weaknesses assessed, and implemented, and that's where things are at now.
15:34:39
Xach
the infrastructure is 100% there and it's a matter of policy and structure (as i mentioned)
15:46:38
Xach
phoe: i'm not sure. i don't think i like "whenever it's required" - i think i'd prefer a calendar cadence, but maybe a release cadence makes sense.
15:49:02
phoe
yes - I think that a dist may be secure or insecure, where insecure is the default and the only thing that currently exists
15:49:37
Xach
phoe: i have to go, but let's set up a separate chat location for this, i want to discuss further
15:49:38
phoe
and secure basically requires the new PGP stuff to fire before Quicklisp installs anything.
15:50:11
Xach
phoe: if you'd like to see what's in place now, see the gpg branch of quicklisp-client and quicklisp-bootstrap. it works all right for what it does but i don't think it can be the initial solution.
15:57:48
Josh_2
Xach: I have created 4 rectangles with Vecto, how do I colour each one individually?
16:00:48
Xach
you can have multiple independent subpaths but they all share the same graphics parameters when painting (fill color, stroke color, stroke size, join style, etc)
16:01:08
Xach
"independent" in the sense that they do not have to touch each other - they are separated by move-tos
17:52:25
jmercouris
what I am not certain about is whether UIOP would work on all platforms in that case, or how that would work
17:54:23
Bike
sicl has to generate code for the machine and operating system. the fact sbcl runs on, like, sparc, doesn't mean that sicl will be able to, unless beach or someone writes a code generator for sparc.
17:54:57
Bike
i don't think uiop does much machine specific stuff... i could be wrong though. more like OS specific and lisp implementation specific is my impression
17:58:56
jmercouris
Bike: if SICL can be bootstrapped by SBCL on a Sparc machine, why couldn't SICL run on that machine?
18:00:22
phoe
if you mean the current way SBCL is run, which is that it compiles to portable CL that is then executed on SBCL, then sure, it is going to work even now
18:00:53
phoe
if you mean that SICL runs without an underlying SBCL, then something needs to turn (defun square (x) (* x x)) into a vector of raw bytes for the SPARC CPU to execute
18:01:26
Bike
Once you've built it with sbcl or whatever, it runs by itself. It no longer uses sbcl.
18:01:52
Bike
In the same way that when you compile a program with gcc, you can then run it on a machine that does not have gcc installed.
18:01:57
phoe
you want to run SICL on top of SBCL on top of sparc, or SICL on top of sparc with no SBCL in the middle?
18:02:28
francogrex
SICL is to be an independent implementation no needing SBCL etc... that's my undersanding
18:03:14
phoe
I remember beach mentioning there's a 3-4x performance hit when running SICL hosted on top of SBCL
18:05:37
phoe
so if your Lisp implementation is a standard Common Lisp program, then I guess that you can run it as a Common Lisp program
18:06:07
phoe
and generate intermediate code that is standard Common Lisp and is then compiled by the underlying compiler into whatever further representation it does.
18:08:31
phoe
the kernel is written in C, the rest is bootstrappable from any conforming CL implementation
18:09:40
scymtym
but in contrast to SICL, the SBCL code is written with restrictions to make this bootstrapping work
18:10:55
Bike
so you have a machine where sbcl can run, and you use it to build an sbcl appropriate for tomato, and then move it to the tomato, and there you go
18:11:38
phoe
or you can try building ECL on Tomato OS (because you have a C library!) and use it to compile SBCL on the target machine without cross compiling at all.
18:12:30
phoe
cross compilation is actually easy to grasp - your compiler can generate SPARC code even if it runs on x86_64.
18:13:50
Bike
I mean, okay, let's take a step back here. What is a compiler? A program that transforms programs in one language into programs in another language.
18:13:55
phoe
you can teach your compiler what the SPARC assembly looks like and teach it to turn your intermediate representation into that assembly
18:14:20
scymtym
jmercouris: note that you initially asked about a different operating system, so what people described above assumed the target CPU was already supported
18:14:29
francogrex
jmercouris: sbcl doesn't spontaneously for example "run" on ARM, someone had to work for make it generate and execute ARM specific machine code, it's a lot of work
18:14:58
phoe
you can run it on x86, you can run it on MIPS, on SPARC, on ARM, on a piece of paper, whatever - the result is a pile of bytes that also happens to contain valid SPARC code.
18:15:33
Bike
It doesn't generate C code which is then translated by a c compiler, no. (ECL does that)
18:16:02
jmercouris
so every time a new instruction set comes out, they have to make some translation layer for it?
18:16:58
Bike
Yes, for clasp, we don't generate machine code. We generate LLVM-IR, which LLVM can then translate into a variety of machine code formats.
18:17:30
francogrex
and FYI, C compiler like GCC isn't generic it also required a lot of work to port it to different archs
18:17:50
jackdaniel
ecl (or, to be precise, kyoto common lisp) was designed to target C compiler precisely to avoid the hassle of porting the implementation to each Arch x OS combination
18:17:54
Bike
It means we don't have to write the last compilation step and can rely on other people doing it, but on the other hand, those other people might do stupid things.
18:18:56
francogrex
jmercouris: you always can even from lisp implementations like SBCL, you ca go low level
18:18:56
Bike
they have done stupid things, and they're harder for us to fix because we have to convince other people that they are problems that need fixing
18:19:28
Bike
well, "stupid" might be a little strong for most of it. Sometimes they just have done things that don't match well with what we're doing but work great for what they're doing.
19:00:54
nij
What would you do in lisp to replace functionalities offered by `sed`? I'm writing a script that will (un)comment certain lines in `/etc/hosts`, and I couldn't think of a better way than sed..
19:21:25
aeth
yeah, idk about sed, but you can write Perl-like code in CL just by doing READ-LINE in a LOOP
19:22:51
aeth
The hardest part is that if you know CL, you'll start trying to think about how to optimize things better when it's literally just supposed to be a throwaway script.
19:23:30
scymtym
http://www.nongnu.org/txr/txr-pattern-language.html may be a good source of inspiration
20:42:59
_death
nice.. I look at planet lisp and see a new blog added (mgr) with a post about lisp & m5stack.. just a few hours ago I got one :D