theothornhill has quit [Ping timeout: 264 seconds]
anticrisis has quit [Read error: Connection reset by peer]
<Nilby>
I make the same vow as stylewarning, but irrelevantly, since I've classic-lisp-cursed myself to live out my years in 90% oblivion, and I'll never write a book, blog, or be employed.
<stylewarning>
Haha :[
<Xach>
i pledge never to sell out (and by that i mean use uiop functions)
<Nilby>
lol. nice. keep strong
theothornhill has joined #lisp
theothornhill has quit [Ping timeout: 260 seconds]
hineios has quit [Ping timeout: 256 seconds]
<charles`>
Xach: what is wrong with uiop?
mrios22 has joined #lisp
theothornhill has joined #lisp
theothornhill has quit [Ping timeout: 272 seconds]
<stylewarning>
Xach: haha
frodef has quit [Ping timeout: 272 seconds]
anticrisis has joined #lisp
theothornhill has joined #lisp
random-nick has quit [Ping timeout: 246 seconds]
theothornhill has quit [Ping timeout: 265 seconds]
pfdietz has quit [Quit: Ping timeout (120 seconds)]
jeosol has quit [Quit: Ping timeout (120 seconds)]
<aeth>
I plan to sell Lisp, anyone want to buy one? No?
<aeth>
:-p
zacts has joined #lisp
theothornhill has joined #lisp
theothornhill has quit [Ping timeout: 265 seconds]
Wezl has joined #lisp
zulu-inuoe has quit [Read error: Connection reset by peer]
theothornhill has joined #lisp
andreyorst has quit [Quit: WeeChat 3.0]
mikecheck has quit [Ping timeout: 272 seconds]
mikecheck has joined #lisp
theothornhill has quit [Ping timeout: 246 seconds]
theothornhill has joined #lisp
theothornhill has quit [Ping timeout: 246 seconds]
pankajsg has joined #lisp
gzj has joined #lisp
Josh_2 has quit [Remote host closed the connection]
theothornhill has joined #lisp
Alfr has quit [Quit: Leaving]
theothornhill has quit [Ping timeout: 272 seconds]
edgar-rft has joined #lisp
icov0x29a has joined #lisp
theothornhill has joined #lisp
Wezl has quit [Ping timeout: 258 seconds]
theothornhill has quit [Ping timeout: 272 seconds]
BCMCCMMNX has joined #lisp
didi has quit [Ping timeout: 260 seconds]
zacts has quit [Quit: leaving]
Nilby has quit [Ping timeout: 258 seconds]
ralt has quit [Quit: Connection closed for inactivity]
theothornhill has joined #lisp
v3ga has quit [Ping timeout: 240 seconds]
v3ga has joined #lisp
theothornhill has quit [Ping timeout: 265 seconds]
icov0x29a has quit [Ping timeout: 240 seconds]
jeosol has joined #lisp
logand` has joined #lisp
rumbler31_ has quit [Ping timeout: 246 seconds]
bilegeek has joined #lisp
logand has quit [Ping timeout: 246 seconds]
theothornhill has joined #lisp
mmohammadi9812 has quit [Ping timeout: 264 seconds]
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
mmohammadi9812 has joined #lisp
theothornhill has quit [Ping timeout: 256 seconds]
karlosz has quit [Client Quit]
karlosz has joined #lisp
mmmattyx has quit [Quit: Connection closed for inactivity]
karlosz has quit [Client Quit]
karlosz has joined #lisp
theothornhill has joined #lisp
karlosz has quit [Client Quit]
karlosz has joined #lisp
theothornhill has quit [Ping timeout: 272 seconds]
Christ0pher has joined #lisp
skapata has quit [Remote host closed the connection]
pfdietz has joined #lisp
theothornhill has joined #lisp
<pfdietz>
mfiano: the package with zero-length name is valid. Escape the package name with ||. So: ||::|| is the zero-length symbol in the zero-length package.
terpri has joined #lisp
zacts has joined #lisp
gzj has quit [Remote host closed the connection]
gzj has joined #lisp
theothornhill has quit [Ping timeout: 265 seconds]
theothornhill has quit [Ping timeout: 240 seconds]
<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
<White_Flame>
*batch pruning old values
theothornhill has joined #lisp
theothornhill has quit [Ping timeout: 246 seconds]
vegansbane696 has joined #lisp
aindilis has quit [Ping timeout: 240 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
theothornhill has joined #lisp
karlosz has joined #lisp
amb007 has quit [Ping timeout: 265 seconds]
theothornhill has quit [Ping timeout: 260 seconds]
amb007 has joined #lisp
karlosz has quit [Ping timeout: 256 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
theothornhill has joined #lisp
random-nick has joined #lisp
theothornhill has quit [Ping timeout: 265 seconds]
h4ck3r9696 has left #lisp [#lisp]
mindCrime has quit [Ping timeout: 264 seconds]
saganman has joined #lisp
euandreh has quit [Ping timeout: 260 seconds]
theothornhill has joined #lisp
theothornhill has quit [Ping timeout: 264 seconds]
euandreh has joined #lisp
gzj has joined #lisp
aartaka_d has quit [Ping timeout: 240 seconds]
<phoe>
SBCL 2.1.1 released.
theothornhill has joined #lisp
VincentVega has quit [Ping timeout: 248 seconds]
<Krystof>
\o/
theothor` has joined #lisp
theothor` has quit [Remote host closed the connection]
theothornhill has quit [Remote host closed the connection]
theothornhill has joined #lisp
* Xach
prepares for purging a bunch of things that don't work with sbcl 2.1.1 and which are unmaintained
<phoe>
Xach: please post a list of them when you have it
<Krystof>
it means :initial-contents sequence, I think
<Xach>
ah yes
<phoe>
!
<phoe>
oh right
<Krystof>
oh, no
<Krystof>
sorry
<phoe>
yes, it must mean it
jeosol has quit [Quit: Ping timeout (120 seconds)]
<Krystof>
it means :initial-contents (map 'list function sequence)
<phoe>
(LISTP SEQUENCE} is false
<phoe>
yes, this
<Krystof>
the initial-contents is where the function actually gets applied
<Xach>
phoe: i'll report that one
<Xach>
oh, i guess i already did
<phoe>
you already did
<Xach>
for me it's as easy as (report-bug-in 'lisp-binary) RET RET
<phoe>
and I just commented with a fix
<phoe>
Xach: nice
<Xach>
so i forget sometimes
<Xach>
i hate the github monoculture, but the convenience...!
<phoe>
SBCL is indeed getting better and better at removing projects from quickli^W^W^W^Wfinding bugs in code at compile-time
<Xach>
i've been using allegro a lot lately and i really miss some of the bugcatching of sbcl
<Xach>
simple things like invalid argument count to local functions are missed
<Xach>
and compile-time format-control checking
<phoe>
ow
<phoe>
Xach: when is the deadline for removing stuff?
<Xach>
phoe: no real deadline, but the next release will be at the end of february.
<phoe>
so more or less a month, okay
<Xach>
phoe: if things remain bad i may continue to build with 2.0.5
<phoe>
I might try to migrate the more popular projects to sharplispers to avoid that
<phoe>
and fix them there
<Xach>
phoe: that would be quite kind of you
theothornhill has quit [Ping timeout: 260 seconds]
<phoe>
OK - please remind me in a week or so if the fixes are not applied or something
<phoe>
I'll try to contact the authors and then fork what I can.
<phoe>
(if still necessary)
<Xach>
they are too busy for bug reports it seems
<phoe>
yes, but there's still a bit of time until the next QL release
<phoe>
lemme wait a bit longer and then we'll act.
<Xach>
well, the bug reports are sometimes quite old
<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
<phoe>
well then
<phoe>
I'll try to put it another way
<phoe>
let me be a lazy bum for another week and then I'll start forkin'
<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.
<phoe>
ooh, I understand now
attila_lendvai has joined #lisp
gutter has joined #lisp
Alfr has quit [Quit: Leaving]
ex_nihilo has joined #lisp
theothornhill has joined #lisp
McParen has joined #lisp
theothornhill has quit [Ping timeout: 240 seconds]
mmohammadi9812 has quit [Ping timeout: 246 seconds]
mmohammadi9812 has joined #lisp
iskander has joined #lisp
gzj has quit [Remote host closed the connection]
gzj has joined #lisp
krid has joined #lisp
iskander- has quit [Ping timeout: 240 seconds]
eden has joined #lisp
ldb has quit [Remote host closed the connection]
theothornhill has joined #lisp
aeth has quit [Ping timeout: 240 seconds]
aeth has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
theothornhill has quit [Ping timeout: 272 seconds]
<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?
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
mmohammadi9812 has quit [Ping timeout: 246 seconds]
ted_wroclaw has joined #lisp
mmohammadi9812 has joined #lisp
iskander has quit [Quit: bye]
gzj has quit [Remote host closed the connection]
gzj has joined #lisp
iskander has joined #lisp
gzj has quit [Remote host closed the connection]
gzj has joined #lisp
zulu-inuoe has joined #lisp
gzj has quit [Remote host closed the connection]
gzj has joined #lisp
theothornhill has joined #lisp
gzj has quit [Remote host closed the connection]
Lycurgus has joined #lisp
gzj has joined #lisp
gzj has quit [Remote host closed the connection]
gzj has joined #lisp
mmohammadi9812 has quit [Ping timeout: 272 seconds]
gzj has quit [Remote host closed the connection]
gzj has joined #lisp
mmohammadi9812 has joined #lisp
theothornhill has quit [Ping timeout: 256 seconds]
iskander has quit [Quit: bye]
iskander has joined #lisp
Wezl has joined #lisp
Wezl has quit [Read error: Connection reset by peer]
frodef has quit [Remote host closed the connection]
u0_a61 has joined #lisp
mmohammadi9812 has quit [Ping timeout: 240 seconds]
mmohammadi9812 has joined #lisp
gzj has quit [Ping timeout: 256 seconds]
theothornhill has joined #lisp
<Xach>
ex_nihilo: it finds fewer bugs
narimiran has joined #lisp
<ex_nihilo>
Xach: is 2.0.5 better than 2.0.6 - 2.0.11 in that regard?
theothornhill has quit [Ping timeout: 265 seconds]
<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.
davd33 has joined #lisp
<ex_nihilo>
I see; thanks
toorevitimirp has quit [Ping timeout: 268 seconds]
iskander- has joined #lisp
iskander has quit [Ping timeout: 264 seconds]
mmohammadi9812 has quit [Ping timeout: 272 seconds]
aindilis has joined #lisp
iskander has joined #lisp
iskander- has quit [Ping timeout: 240 seconds]
mmohammadi9812 has joined #lisp
luni has joined #lisp
<Xach>
i think sbcl's changes are a net good, they just create some temporary headaches for me
theothornhill has joined #lisp
Lycurgus has quit [Quit: Exeunt]
skapata has joined #lisp
theothornhill has quit [Ping timeout: 256 seconds]
<phoe>
it's the CL immune system kicking in as it becomes better
<ralt>
Xach: in sly you can move one line up for C-r to do in-buffer search
theothornhill has joined #lisp
Xach has quit [Ping timeout: 272 seconds]
narimiran has quit [Quit: leaving]
theothornhill has quit [Ping timeout: 240 seconds]
Xach has joined #lisp
<Xach>
ralt: indeed - but that feels a little weird and unnecessary
edgar-rft has quit [Quit: Leaving]
Kilomomo has left #lisp [#lisp]
<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
<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.
<Xach>
i have all the code and now i need to figure out the policy and structure.
ted_wroclaw has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
theothornhill has joined #lisp
<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
<phoe>
and asserts that the original fails
<Xach>
what good would that do?
waleee-cl has joined #lisp
<phoe>
it's a unit test for the thing that you describe - assert that key rotation works
<phoe>
and then try and fix the implementation until the test passes, in the TDD spirit
<phoe>
at least that's how I'd approach it
orivej has quit [Ping timeout: 265 seconds]
orivej has joined #lisp
theothornhill has quit [Ping timeout: 265 seconds]
<Xach>
i'm afraid that is not helpful to me.
u0_a61 has quit [Ping timeout: 260 seconds]
<phoe>
OK - I'll need to take a deeper dive into your PGP implementation then
<Xach>
i don't think it really has anything to do with that.
<phoe>
oh? you did mention key rotation though
<Xach>
yes. how do clients get updated keys? where do new signatures live?
<phoe>
hmmm
<phoe>
basically, you have a non-expiring master key that you use only for generating temporary keys
<phoe>
and then when you create a new temporary keys, you sign the new key with the old one and vice versa
<phoe>
s/a new/new/
saganman is now known as blackadder
<Xach>
"old"? like the previous temporary key?
<phoe>
yes
<phoe>
and then the old temporary key can either be revoked or it can expire on its own
<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
<Xach>
So how does the client get the new key, and where do new signatures live?
<phoe>
that's already an infrastructure question I think - you can possibly distribute your public keys via http://quicklisp.org
<Xach>
Key servers are not involved in the client.
blackadder has left #lisp ["WeeChat 1.6"]
<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
<phoe>
bam, there are the new keys with new signatures
orivej has quit [Ping timeout: 272 seconds]
galex-713 has quit [Ping timeout: 272 seconds]
<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.
<phoe>
Quicklisp already uses HTTP, so it can also use it to get its keys
<phoe>
that's one big plus, the infrastructure is already mostly there
<Xach>
the infrastructure is 100% there and it's a matter of policy and structure (as i mentioned)
theothornhill has joined #lisp
<Xach>
where things go, how they are updated, and how updates are visible to the client
<phoe>
I can scribble a proposal for that
<Xach>
i have as a given: fetch things, verify signature file x signs object y
v3ga has quit [Quit: WeeChat 2.8]
lowryder has quit [Ping timeout: 260 seconds]
v3ga has joined #lisp
thmprover has joined #lisp
theothornhill has quit [Ping timeout: 272 seconds]
lowryder has joined #lisp
<phoe>
Xach: how often do you want to rotate the keys?
<phoe>
once per release? once a year? now and then and whenever it's required?
rogersm has joined #lisp
chewbranca has quit [Ping timeout: 240 seconds]
billstclair has quit [Read error: Connection reset by peer]
billstclair has joined #lisp
chewbranca has joined #lisp
mmohammadi9812 has quit [Ping timeout: 260 seconds]
<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.
mmohammadi9812 has joined #lisp
<Xach>
another thing to consider is multiple dists, some of which are not from quicklisp.org
<phoe>
yes - I think that a dist may be secure or insecure, where insecure is the default and the only thing that currently exists
<Xach>
phoe: i have to go, but let's set up a separate chat location for this, i want to discuss further
<phoe>
and secure basically requires the new PGP stuff to fire before Quicklisp installs anything.
<phoe>
Xach: oh right
<phoe>
we should do it in #quicklisp
<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.
<Xach>
it's an initial proof of concept at best
<phoe>
Xach: fwiw, I think you should join #quicklisp
theothornhill has joined #lisp
<phoe>
and, sure, I'll take a look
Xach has quit [Changing host]
Xach has joined #lisp
mmohammadi9812 has quit [Ping timeout: 264 seconds]
rogersm has quit [Remote host closed the connection]
theothornhill has quit [Ping timeout: 264 seconds]
Josh_2 has joined #lisp
<Josh_2>
Xach: I have created 4 rectangles with Vecto, how do I colour each one individually?
<Xach>
Josh_2: set the color and use FILL-PATH after finishing each rectangle
<Xach>
FILL-PATH fills the current path with the fill color and clears the path
<Xach>
"clears" in the sense that further paint ops do not refer to it
<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)
<Xach>
"independent" in the sense that they do not have to touch each other - they are separated by move-tos
<Josh_2>
I tried the fill-path after each construction
<Josh_2>
I will try it again
<Xach>
Josh_2: did you also set the fill color?
<Josh_2>
Okay yes It's working
<Josh_2>
Thanks Xach
<Xach>
glad to hear it
zulu-inuoe has quit [Read error: Connection reset by peer]
<Xach>
share the pics when you are done!!
zulu-inuoe has joined #lisp
Nilby has quit [Ping timeout: 260 seconds]
theothornhill has joined #lisp
<Josh_2>
Will do
mseddon has quit [Read error: Connection reset by peer]
mseddon8 has joined #lisp
seeg1234 has quit [Quit: Ping timeout (120 seconds)]
CrazyEddy has quit [Read error: Connection reset by peer]
seeg1234 has joined #lisp
sveit has quit [Ping timeout: 260 seconds]
alanz has quit [Ping timeout: 260 seconds]
sveit has joined #lisp
alanz has joined #lisp
theothornhill has quit [Ping timeout: 264 seconds]
skapata has quit [Ping timeout: 265 seconds]
didi has quit [Ping timeout: 265 seconds]
skapata has joined #lisp
Jeanne-Kamikaze has joined #lisp
pfdietz has joined #lisp
ted_wroclaw has joined #lisp
gutter has quit [Remote host closed the connection]
h4ck3r9696 has joined #lisp
__jrjsmrtn__ has quit [Ping timeout: 240 seconds]
__jrjsmrtn__ has joined #lisp
aartaka has quit [Read error: Connection reset by peer]
aartaka_d has joined #lisp
gutter has joined #lisp
heisig has quit [Quit: Leaving]
galex-713 has joined #lisp
drbluefall has joined #lisp
drbluefall has quit [Client Quit]
mmmattyx has joined #lisp
wInNy is now known as winny
renzhi has joined #lisp
wsinatra has joined #lisp
rozenglass has joined #lisp
luckless has joined #lisp
mmohammadi9812 has joined #lisp
zacts has quit [Ping timeout: 256 seconds]
Grauwolf has quit [Quit: WeeChat 3.0]
IPmonger has quit [Quit: ZNC 1.7.5+deb4 - https://znc.in]
<francogrex>
beach: developement on SICL going on ok?
<beach>
francogrex: Yes, slowly, but fine. Thank you.
Anonymous_ has joined #lisp
Jeanne-Kamikaze has quit [Ping timeout: 240 seconds]
theothornhill has quit [Ping timeout: 246 seconds]
luckless_ has joined #lisp
theothornhill has joined #lisp
luckless has quit [Ping timeout: 268 seconds]
luni has quit [Quit: Connection closed]
theothornhill has quit [Ping timeout: 246 seconds]
jeosol has joined #lisp
galex-713 has joined #lisp
IPmonger has quit [Quit: ZNC 1.7.5+deb4 - https://znc.in]
<phoe>
3/1
<phoe>
oops
IPmonger has joined #lisp
<francogrex>
beach: is SICL planned to target all/most platforms?
<jmercouris>
I don't see why it couldn't target all platforms
<jmercouris>
if it can bootstrap from SBCL, it should at least be able to target those
<jmercouris>
what I am not certain about is whether UIOP would work on all platforms in that case, or how that would work
<jmercouris>
mostly because I don't know enough about UIOP
<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.
<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
aeth_ has joined #lisp
aeth has quit [Ping timeout: 272 seconds]
aeth_ is now known as aeth
theothornhill has joined #lisp
<phoe>
what machine specific stuff would need to be done by UIOP though?
<jmercouris>
Bike: I don't understand, can you please explain
rogersm has quit [Remote host closed the connection]
<jmercouris>
Bike: if SICL can be bootstrapped by SBCL on a Sparc machine, why couldn't SICL run on that machine?
<phoe>
someone needs to generate sparc assembly
<phoe>
who is it gonna be?
<phoe>
what is it gonna be?
<jmercouris>
phoe: isn't that only necessary for saving and reloading images?
<phoe>
depends on your definition of "bootstrapped"
<Bike>
lisp implementations compile stuff to machine code all the time.
<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
<Bike>
When you C-c C-k a file with sbcl you are making sbcl produce code for your machine.
<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
<jmercouris>
right, but as long as you have an SBCL
<jmercouris>
you can run SICL there
<jmercouris>
that's what I was thinking
<phoe>
what do you mean by "run"?
<Bike>
But the idea is that sicl is its own implementation.
<jmercouris>
that depends on the SBCL compiler...?
<jmercouris>
:-D
<Bike>
Once you've built it with sbcl or whatever, it runs by itself. It no longer uses sbcl.
<phoe>
jmercouris: we have a definition mismatch
<jmercouris>
hm
<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.
<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?
<jmercouris>
I don't care how it runs as long as there is a SICL REPL
<phoe>
oh, then the former could in theory be attempted even now
<jmercouris>
and I believe it can be achieved via SBCL on any machine SBCL can be ran on
<francogrex>
SICL is to be an independent implementation no needing SBCL etc... that's my undersanding
theothornhill has quit [Ping timeout: 265 seconds]
<phoe>
AFAIK you can run it hosted on SBCL at the moment.
<jmercouris>
why jettison SBCL though
<phoe>
because of the performance penalty
<jmercouris>
I see
<phoe>
I remember beach mentioning there's a 3-4x performance hit when running SICL hosted on top of SBCL
<jmercouris>
ah, that is significant
<jmercouris>
I was thinking of SBCL as a sort of LISP VM
<phoe>
compared to SBCL native-compiled code, that is.
<jmercouris>
kind of like the JVM
<phoe>
more like SICL VM
<jmercouris>
yeah
<phoe>
which is only possible because SICL is meant to execute on top of portable CL
<jmercouris>
SICL VM
<jmercouris>
was it designed that way for any technical reason?
<jmercouris>
was it because beach likes LISP and wanted to program his LISP in LISP?
<jmercouris>
because that would be a reason I can imagine
<phoe>
more like it was meant to be bootstrapped from portable CL
<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
<jmercouris>
I see
<phoe>
and generate intermediate code that is standard Common Lisp and is then compiled by the underlying compiler into whatever further representation it does.
<jmercouris>
here's what I am missing
<jmercouris>
why can't SICL have like a 'compatibility' mode or something
<jmercouris>
where it always uses SBCL
<jmercouris>
sure, it will be way slower, but you could use SICL specific features
<jmercouris>
on ANY machine that can run SBCL
<francogrex>
jmercouris: it was explained: SICL is planned to be independet
<jmercouris>
I get that, but they are not mutally exclusive things
<francogrex>
not needing SBCL
<jmercouris>
s/mutally/mutually
<phoe>
I guess that it could, sure, why not
<jmercouris>
also, 3x4x slower than SBCL doesn't sound too bad for light computation
<phoe>
as a CL-on-CL implementation for people who actually need it
<jmercouris>
is SBCL bootstrapped from SBCL too?
<jmercouris>
or from C?
<jmercouris>
or from ASM?
<jmercouris>
or from ???
<phoe>
the kernel is written in C, the rest is bootstrappable from any conforming CL implementation
<jmercouris>
so that makes SBCL very portable then
<jmercouris>
that's a good design
<scymtym>
SBCL needs a C compiler and a CL compiler (not necessarily SBCL) to build itself
<phoe>
that's the whole idea behind SBCL
<phoe>
and AFAIK the reason why it originally forked from CMUCL
<jmercouris>
OK so let's say we have a new system
<jmercouris>
called Tomato
<jmercouris>
and we have a C compiler for Tomato
<phoe>
an OS, you mean?
<scymtym>
but in contrast to SICL, the SBCL code is written with restrictions to make this bootstrapping work
<jmercouris>
sure, an OS
<phoe>
Tomato OS with a C compiler, yes
<jmercouris>
how would we port SBCL to Tomato?
<jmercouris>
we just have to have a C compiler?
<francogrex>
jmercouris: no
<jmercouris>
that's what I was afraid of
<jmercouris>
you also mentioned a CL implementation
<jmercouris>
well, who writes that proto CL implementation
<jmercouris>
would you use ECL for example?
<Bike>
sbcl can cross compile itself, i think
<phoe>
the OS-specific parts need to be added to SBCL source code, if any
<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
<jmercouris>
I see
<phoe>
like, all calls into the OS and its standard library
<phoe>
and then cross-compile as Bike said.
rogersm has joined #lisp
<jmercouris>
cross compilation is still such a mystery to me
<jmercouris>
I really don't get it
<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.
<francogrex>
forget al that.
<jmercouris>
phoe: yeah, so you can use ECL to bootstrap to TomatOS
<phoe>
cross compilation is actually easy to grasp - your compiler can generate SPARC code even if it runs on x86_64.
<phoe>
it's all ultimately vectors of bytes after all.
<jmercouris>
how can my compiler know what SPARC looks like?
<francogrex>
the essential thing is that it generates specific machine code for execution
<phoe>
jmercouris: uhhhh
<Bike>
because your compiler was written by someone who knows sparc?
<jmercouris>
will it translate MV into some other thing
<phoe>
because it has a code generator backend for it?
<Bike>
i'm not sure i understand the question.
<jmercouris>
I see
<Bike>
What is MV?
<jmercouris>
mv like the command
<phoe>
because that's what compilers do?
<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.
<jmercouris>
OK
<phoe>
you can teach your compiler what the SPARC assembly looks like and teach it to turn your intermediate representation into that assembly
<jmercouris>
So far, so good
<phoe>
and then who cares what architecture or OS your compiler runs on
<phoe>
it's just a program that pops out SPARC assembly
<scymtym>
jmercouris: note that you initially asked about a different operating system, so what people described above assumed the target CPU was already supported
<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
<jmercouris>
francogrex: shouldn't that be the job of the person who wrote the C Compiler?
<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.
<francogrex>
no
<phoe>
jmercouris: what does C have to do with this?
<jmercouris>
why should the SBCL team at all care about the instruction set of the processor
<phoe>
we're compiling Lisp code
<francogrex>
we are not talking C compiler. SBCL doesn't use C compiler
<Bike>
Because SBCL generates code in that instruction set?
<jmercouris>
AH!
<jmercouris>
SBCL generates ASM
<jmercouris>
I get it inow
<phoe>
jmercouris: because SBCL does *NOT* need the C compiler to generate machine code
<Bike>
It doesn't generate C code which is then translated by a c compiler, no. (ECL does that)
<phoe>
so it needs to know how to do it.
<jmercouris>
it doesn't use some low level intermediate representation?
<phoe>
it does
<jmercouris>
it LITERALLY makes ASM?
<phoe>
but that representation is independent of C
<Bike>
I mean, the end point is it makes actual machine code, not even just assembly.
<jmercouris>
so every time a new instruction set comes out, they have to make some translation layer for it?
<phoe>
jmercouris: try #'DISASSEMBLE
<Bike>
Yes.
<francogrex>
indeed
<jmercouris>
OK, wait a seocnd
<jmercouris>
maybe I'm getting confused here
<jmercouris>
CLASP useses LLVM?
<Bike>
it does, yes.
<francogrex>
absoltely confused
<jmercouris>
that's probably what I was thinking of
<scymtym>
for every combination of instruction set and operating system, to be precise
gareppa has joined #lisp
<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.
<jmercouris>
right
<jmercouris>
so as long as LLVM runs, you can use CLASP
<Bike>
It's unfortunately more complicated than that, but ideally, yes.
<jmercouris>
that is a much smarter way than SBCL I must say
<francogrex>
and FYI, C compiler like GCC isn't generic it also required a lot of work to port it to different archs
<Bike>
Well, it has the pros and cons of outsourcing.
<phoe>
smarter for some definition of smart though
<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
<jmercouris>
sure, GCC is a ugly monolith, or so I've been told
theothornhill has joined #lisp
<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.
<jmercouris>
they might, but probably won't
<jmercouris>
and if they do, you can potentially fix their stupidity layer
<phoe>
depending on LLVM introduces an overall giant dependency in form of LLVM
<jmercouris>
I guess that could be a problem on embedded systems, for example
<francogrex>
jmercouris: you always can even from lisp implementations like SBCL, you ca go low level
<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
<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.
<jmercouris>
as an old proverb once said
<jmercouris>
"stupidity is in the eye of the beholder"
frodef has joined #lisp
<Bike>
the other applicable proverb is "if you want it done right, do it yourself"
<jmercouris>
anyways, can you please continue explaining cross compilation
renzhi has quit [Ping timeout: 265 seconds]
<phoe>
a compiler is basically a pure function
<jmercouris>
X -> Y
<jmercouris>
where X is 1 form and Y is another
<phoe>
X is a Lisp form like (lambda (...) ...) and Y is a vector of bytes
<jmercouris>
OK
imode has joined #lisp
<jmercouris>
wait a seocnd
<jmercouris>
is cross compilation just targetting a different compilation architecture?
<phoe>
yes
<jmercouris>
ah, then I do know this
<jmercouris>
the terminology is just messing with me
<phoe>
a different combination of CPU, OS, flags, optimization settings, and all the stuff
<francogrex>
not a big fan of cross compilation... jfyi
<jmercouris>
it is called cross compilation because we compile for a different machine?
theothornhill has quit [Ping timeout: 256 seconds]
Ratattatat has joined #lisp
rumbler31 has joined #lisp
ted_wroclaw has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
francogrex has left #lisp ["ERC (IRC client for Emacs 24.5.1)"]
rumbler31 has quit [Ping timeout: 256 seconds]
nij has joined #lisp
<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..
<phoe>
nij: if you want regular expressions, then cl-ppcre
<shka_>
nij: perhaps combination of regexs and optima?
<shka_>
or trivia
<shka_>
optima is obsolete
<phoe>
or just split the file into lines and parse them that way
<shka_>
or call sed from lisp :-)
<nij>
phoe: split into lines, parse, edit, and rewrite?
theothornhill has joined #lisp
<phoe>
yes
<nij>
cl-ppcre + phoe's method => neat
theothornhill has quit [Ping timeout: 265 seconds]
Lycurgus has joined #lisp
anticrisis has joined #lisp
mindCrime has joined #lisp
ted_wroclaw has joined #lisp
<aeth>
yeah, idk about sed, but you can write Perl-like code in CL just by doing READ-LINE in a LOOP
theothornhill has joined #lisp
<aeth>
Not the most efficient way to process text, of course.
<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.