jackdaniel changed the topic of #commonlisp to: Common Lisp, the #1=(programmable . #1#) programming language | Wiki: <https://www.cliki.net> | IRC Logs: <https://irclog.tymoon.eu/libera/%23commonlisp> | Cookbook: <https://lispcookbook.github.io/cl-cookbook> | Pastebin: <https://plaster.tymoon.eu/>
JuanDaugherty has joined #commonlisp
random-nick has quit [Ping timeout: 245 seconds]
<owen> crazy it doesn't have threads out of the box, seems pretty essential for basically every project
<owen> and yeah, slime
akoana has joined #commonlisp
<Bubblegumdrop> I chalk it up to the two tests failing.
pillton has joined #commonlisp
<paulapatience> Bubblegumdrop: I guess the question is more "why clisp"
<Bubblegumdrop> I primiarly use sbcl and am interested in trying out different lisp implementations
<Bubblegumdrop> CLISP is pretty fast
dnhester26 has joined #commonlisp
dnhester26 has quit [Ping timeout: 272 seconds]
yitzi has joined #commonlisp
<yitzi> CLISP is virtually unmaintained. Yes, there is occasional activity on gitlab, but merge requests have been ignored for at least 2 years.
yitzi has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 264 seconds]
dnhester26 has joined #commonlisp
<Bubblegumdrop> I noticed the last release is from ~14 years ago
dnhester26 has quit [Ping timeout: 244 seconds]
msv has quit [Read error: Connection reset by peer]
<paulapatience> Bubblegumdrop: What did you measure to conclude that clisp is fast?
msv has joined #commonlisp
svm has joined #commonlisp
svm has quit [Client Quit]
msv has quit [Remote host closed the connection]
msv has joined #commonlisp
akoana has quit [Quit: leaving]
gorignak has quit [Quit: quit]
gorignak has joined #commonlisp
Akbar-Birbal has joined #commonlisp
<Bubblegumdrop> Here's what I'm running https://paste.debian.net/1331945/ messing around with maxima
<ixelp> debian Pastezone
<ixelp> GitHub - gmpalter/cl-forth: Common Lisp implementation of the Forth 2012 Standard
Josh_2 has quit [Remote host closed the connection]
JuanDaugherty has quit [Quit: JuanDaugherty]
theruran has joined #commonlisp
Akbar-Birbal has left #commonlisp [Error from remote client]
X-Scale has joined #commonlisp
decweb has joined #commonlisp
jonatack has quit [Ping timeout: 252 seconds]
amb007 has joined #commonlisp
jonatack has joined #commonlisp
ldb has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
ldb has quit [Client Quit]
amb007 has joined #commonlisp
decweb has quit [Ping timeout: 245 seconds]
synchrom1 has joined #commonlisp
`Pixel_Outlaw has joined #commonlisp
hineios23 has quit [Quit: Ping timeout (120 seconds)]
Demosthe1ex has joined #commonlisp
hineios23 has joined #commonlisp
fitzsim has quit [Remote host closed the connection]
synchrom2 has joined #commonlisp
crumbles has quit [Quit: ZNC - https://znc.in]
ello has quit [Quit: ZNC 1.9.1 - https://znc.in]
Artea has quit [Quit: ZNC 1.8.2 - https://znc.in]
crumbles has joined #commonlisp
ezakimak has quit [Remote host closed the connection]
amb007 has quit [Ping timeout: 272 seconds]
gorignak has quit [Quit: quit]
synchromesh has quit [Ping timeout: 252 seconds]
ello has joined #commonlisp
ezakimak has joined #commonlisp
zwr has quit [Ping timeout: 252 seconds]
mathrick has quit [Ping timeout: 252 seconds]
Pixel_Outlaw has quit [Ping timeout: 252 seconds]
skeemer has quit [Ping timeout: 252 seconds]
Demosthenex has quit [Ping timeout: 252 seconds]
synchromesh has joined #commonlisp
zwr has joined #commonlisp
puke has quit [Remote host closed the connection]
johnjaye has quit [Remote host closed the connection]
puke has joined #commonlisp
synchrom1 has quit [Ping timeout: 272 seconds]
johnjaye has joined #commonlisp
skeemer has joined #commonlisp
synchrom2 has quit [Ping timeout: 260 seconds]
drewjose has quit [Ping timeout: 260 seconds]
Lord_of_Life has quit [Ping timeout: 252 seconds]
drewjose has joined #commonlisp
Lord_of_Life has joined #commonlisp
mathrick has joined #commonlisp
Artea has joined #commonlisp
Akbar-Birbal has joined #commonlisp
<contrapunctus> Got an email from HN requesting me to repost this AP5 post I shared before...so I did - https://news.ycombinator.com/item?id=41805702
<ixelp> AP5 - Declarative Programming Library For Common Lisp (1995) | Hacker News
skeemer has quit [Ping timeout: 272 seconds]
Akbar-Birbal has left #commonlisp [Error from remote client]
brokkoli_origin has quit [Ping timeout: 255 seconds]
brokkoli_origin has joined #commonlisp
zwr has quit [Read error: Connection reset by peer]
<aeth> contrapunctus: does it still run?
<contrapunctus> Good question, I don't know 😅
<aeth> lots of necrocomputing here, #lispcafe, etc., lately
<aeth> or whatever the term is, for necromancy on computer programs
<aeth> beyond retrocomputing because usually those are for popular things that basically always worked, like DOS (DOSBox)
zwr has joined #commonlisp
`Pixel_Outlaw has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
johnjaye has quit [Ping timeout: 272 seconds]
johnjaye has joined #commonlisp
dnhester26 has quit [Ping timeout: 248 seconds]
<contrapunctus> aeth: FWIW the author still develops the library. There was a release last month, even. https://ap5.com/
<ixelp> ap5.com
rtypo has quit [Ping timeout: 252 seconds]
<aeth> more alive than clisp
tam has quit [Quit: Textual IRC Client: www.textualapp.com]
rainthree has joined #commonlisp
Akbar-Birbal has joined #commonlisp
<selpoke> clisp isnt dead
<ixelp> The Exploited - Punk's Not Dead - YouTube
thelounge82 has quit [Ping timeout: 276 seconds]
amb007 has joined #commonlisp
<jackdaniel> I think that there is an important difference between necrocomputing (bringing up old stuff) and software necromancy where you resurrect dead projects ,)
tam has joined #commonlisp
pve has joined #commonlisp
treflip has joined #commonlisp
amb007 has quit [Ping timeout: 244 seconds]
theruran has quit [Quit: Connection closed for inactivity]
pranav has quit [Remote host closed the connection]
Akbar-Birbal has left #commonlisp [#commonlisp]
amb007 has joined #commonlisp
wacki has joined #commonlisp
wacki has quit [Ping timeout: 252 seconds]
wacki has joined #commonlisp
rainthree has quit [Ping timeout: 244 seconds]
Th30n has joined #commonlisp
rainthree has joined #commonlisp
dino_tutter has quit [Ping timeout: 244 seconds]
shka has joined #commonlisp
mishoo has joined #commonlisp
dnhester26 has joined #commonlisp
thelounge82 has joined #commonlisp
dnhester26 has quit [Ping timeout: 245 seconds]
rainthree has quit [Ping timeout: 248 seconds]
rainthree has joined #commonlisp
drewjose has quit [Quit: Ping timeout (120 seconds)]
drewjose has joined #commonlisp
mulk has quit [Ping timeout: 255 seconds]
heisig has joined #commonlisp
donleo has joined #commonlisp
X-Scale has quit [Ping timeout: 256 seconds]
mulk has joined #commonlisp
chkhd has joined #commonlisp
awlygj has joined #commonlisp
chkhd has quit [Quit: ZZZzzz…]
chkhd has joined #commonlisp
pkal has quit [Remote host closed the connection]
rainthree has quit [Quit: Leaving]
Lord_of_Life has quit [Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine]
Lord_of_Life has joined #commonlisp
Guest76 has joined #commonlisp
chkhd is now known as chkhd`
tfeb has joined #commonlisp
elderK has joined #commonlisp
Akbar-Birbal has joined #commonlisp
tfeb has quit [Quit: died]
dnhester26 has joined #commonlisp
dra has joined #commonlisp
dnhester26 has quit [Ping timeout: 276 seconds]
dino_tutter has joined #commonlisp
wacki has quit [Ping timeout: 260 seconds]
chkhd has joined #commonlisp
wacki has joined #commonlisp
semarie has quit [Ping timeout: 260 seconds]
chkhd has quit [Quit: ZZZzzz…]
semarie has joined #commonlisp
chkhd has joined #commonlisp
meaty has quit [Ping timeout: 276 seconds]
Guest76 has quit [Ping timeout: 256 seconds]
mari-estel has joined #commonlisp
chkhd is now known as chkhd`
chkhd` has quit [Quit: ZZZzzz…]
chkhd has joined #commonlisp
shka has quit [Read error: Connection reset by peer]
shka has joined #commonlisp
chkhd has quit [Ping timeout: 265 seconds]
Artea has quit [Quit: ZNC 1.8.2 - https://znc.in]
srji has joined #commonlisp
srji has quit [Client Quit]
chkhd has joined #commonlisp
srji has joined #commonlisp
srji has quit [Client Quit]
pranav has joined #commonlisp
chkhd has quit [Ping timeout: 252 seconds]
cage has joined #commonlisp
cage has quit [Excess Flood]
cage has joined #commonlisp
pranav has quit [Read error: Connection reset by peer]
varjag has joined #commonlisp
elderK has quit [Quit: WeeChat 4.4.2]
Artea has joined #commonlisp
pillton has quit [Remote host closed the connection]
mari-estel has quit [Quit: shitty chrome system]
chkhd has joined #commonlisp
dnhester26 has joined #commonlisp
pranav has joined #commonlisp
Akbar-Birbal has left #commonlisp [#commonlisp]
chkhd has quit [Remote host closed the connection]
chkhd has joined #commonlisp
edgar-rft_ has joined #commonlisp
dnhester26 has quit [Ping timeout: 252 seconds]
edgar-rft` has quit [Ping timeout: 260 seconds]
Akbar-Birbal has joined #commonlisp
Lord_of_Life has quit [Excess Flood]
mulk has quit [Quit: ZNC - http://znc.in]
mulk has joined #commonlisp
Lord_of_Life has joined #commonlisp
Lord_of_Life has quit [Excess Flood]
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
synchrom1 has joined #commonlisp
synchromesh has quit [Read error: Connection reset by peer]
Lord_of_Life has joined #commonlisp
Lord_of_Life is now known as Lord_of_L
mari-estel has joined #commonlisp
Lord_of_Life has joined #commonlisp
Lord_of_L has quit [Read error: Connection reset by peer]
montxero has joined #commonlisp
mari-estel has quit [Quit: on the move]
pestctrl has joined #commonlisp
jonatack has quit [Ping timeout: 252 seconds]
yitzi has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
bjorkintosh has joined #commonlisp
decweb has joined #commonlisp
jonatack has joined #commonlisp
rtypo has joined #commonlisp
chkhd has quit [Quit: ZZZzzz…]
bitspook has joined #commonlisp
X-Scale has joined #commonlisp
tfeb has joined #commonlisp
tfeb has quit [Client Quit]
treflip has quit [Remote host closed the connection]
treflip has joined #commonlisp
bjorkintosh has quit [Ping timeout: 260 seconds]
varjag has quit [Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.3)]
X-Scale has quit [Ping timeout: 256 seconds]
easye has joined #commonlisp
Th30n has quit [Quit: going off]
NotThatRPG has joined #commonlisp
fitzsim has joined #commonlisp
zwr has quit [Read error: Connection reset by peer]
zwr has joined #commonlisp
cdegroot has joined #commonlisp
random-nick has joined #commonlisp
tam has quit [Quit: Textual IRC Client: www.textualapp.com]
X-Scale has joined #commonlisp
dnhester26 has joined #commonlisp
molson_ has joined #commonlisp
molson has quit [Ping timeout: 272 seconds]
dnhester26 has quit [Ping timeout: 252 seconds]
varjag has joined #commonlisp
synchrom1 has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
X-Scale has quit [Ping timeout: 256 seconds]
Akbar-Birbal has left #commonlisp [#commonlisp]
tam has joined #commonlisp
varjag has quit [Ping timeout: 244 seconds]
Akbar-Birbal has joined #commonlisp
mgl has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
amb007 has joined #commonlisp
tam has quit [Remote host closed the connection]
lagash has joined #commonlisp
mgl has quit [Ping timeout: 255 seconds]
theruran has joined #commonlisp
amb007 has quit [Ping timeout: 245 seconds]
treflip has quit [Remote host closed the connection]
amb007 has joined #commonlisp
treflip has joined #commonlisp
Akbar-Birbal has left #commonlisp [#commonlisp]
kevingal has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
yitzi has quit [Remote host closed the connection]
amb007 has joined #commonlisp
luis5 has joined #commonlisp
ldb has joined #commonlisp
triffid has quit [Remote host closed the connection]
triffid has joined #commonlisp
tam has joined #commonlisp
bitspook has quit [Read error: Connection reset by peer]
bitspook has joined #commonlisp
jonatack has quit [Ping timeout: 255 seconds]
jonatack has joined #commonlisp
bitspook has quit [Remote host closed the connection]
NotThatRPG has quit [Remote host closed the connection]
NotThatRPG has joined #commonlisp
tfeb has joined #commonlisp
tfeb has quit [Client Quit]
jonatack has quit [Read error: Connection reset by peer]
jonatack has joined #commonlisp
pranav has quit [Remote host closed the connection]
molson_ has quit [Remote host closed the connection]
ldb has quit [Ping timeout: 264 seconds]
molson has joined #commonlisp
molson has quit [Remote host closed the connection]
molson has joined #commonlisp
zwr has quit [Read error: Connection reset by peer]
molson has quit [Remote host closed the connection]
molson has joined #commonlisp
zwr has joined #commonlisp
mgl has joined #commonlisp
awlygj has quit [Quit: leaving]
yacin has quit [Ping timeout: 245 seconds]
mehlon has joined #commonlisp
younder has quit [Remote host closed the connection]
prokhor has quit [Ping timeout: 248 seconds]
mishoo has quit [Ping timeout: 252 seconds]
dnhester26 has joined #commonlisp
younder has joined #commonlisp
mehlon has quit [Remote host closed the connection]
dnhester26 has quit [Ping timeout: 252 seconds]
tfeb has joined #commonlisp
tfeb has quit [Client Quit]
cage has quit [Remote host closed the connection]
mgl has quit [Ping timeout: 252 seconds]
attila_lendvai has joined #commonlisp
tam has quit [Quit: Textual IRC Client: www.textualapp.com]
molson_ has joined #commonlisp
molson has quit [Ping timeout: 252 seconds]
tam has joined #commonlisp
treflip has quit [Remote host closed the connection]
drewjose has quit [Quit: Ping timeout (120 seconds)]
drewjose has joined #commonlisp
skeemer has joined #commonlisp
meaty has joined #commonlisp
amb007 has quit [Ping timeout: 245 seconds]
chiselfuse has quit [Ping timeout: 260 seconds]
chiselfuse has joined #commonlisp
tam has quit [Quit: leaving]
yacin has joined #commonlisp
attila_lendvai has quit [Ping timeout: 245 seconds]
tam has joined #commonlisp
drewjose has quit [Ping timeout: 246 seconds]
drewjose has joined #commonlisp
tam has quit [Quit: leaving]
tam_ has joined #commonlisp
tam_ is now known as tam
shka has quit [Ping timeout: 265 seconds]
drewjose has quit [Ping timeout: 248 seconds]
drewjose has joined #commonlisp
wacki has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 252 seconds]
amb007 has joined #commonlisp
pve has quit [Quit: leaving]
amb007 has quit [Ping timeout: 265 seconds]
dnhester26 has joined #commonlisp
donleo has quit [Ping timeout: 255 seconds]
skeemer has quit [Ping timeout: 252 seconds]
dnhester26 has quit [Ping timeout: 252 seconds]
<paulapatience> aeth: In your vector DSL, do you walk the forms to find *, +, etc., or are the arithmetic operators bound via macrolet or something?
<aeth> paulapatience: any *, +, etc., found at compile time is undone in a step, so yes, it walks
<aeth> rather than optimizing some reduce/fold on &rest, it just explicitly hardcodes a removal of 0, 1, and 2 length into a %low-level, with 2+ reduced to 2 at compilation time. (This is because e.g. - at 0 length is NIL, i.e. an error, while - at 1 length is %negate, i.e. completely different than the binary/dyadic form)
<aeth> (similarly, + at 0 length is the constant-returning-function %zero, different than the binary/dyadic form)
<aeth> sort of like how CL implementations often have %false and %true functions as optimizations of (constantly t) and (constantly nil)
<aeth> paulapatience: these are technically looking at zrvl:+, not cl:+, but since the API is identical, I can make the walker also work on CL:+ for lightly embedded vector stuff that seem more integrated into CL, in a separate sort of macro
<aeth> But people might not want CL:+ to have extended semantics within a tree-walker
<aeth> Note that this can't always be done, considering e.g. (f #'+) which then calls #'+ inside of F. So I will have to implement an alternative, "proper" implementation in such cases, which I will do once I add higher order functions back in.
<aeth> Well, I aggressively, aggressively, _aggressively_ inline and I will do so on higher order functions, considering the goal is efficient vector math. So (f #'+) might be handled, but you can just obfuscate that a few levels to get a place where a properly generic + is needed.
Bubblegumdrop has quit [Quit: ZNC 1.9.1+deb1 - https://znc.in]
<aeth> The three goals, and why it's a proper DSL, are (1) I want to just write things like (zrvl:+ a b) instead of having to think about the 5 different, more efficient ways of doing that (not heap-allocating a and b if possible) with a bunch of fallbacks. And (2) I want to be able to use higher order functions complete with currying, etc., where convenient without the typical performance losses. And (3) it
<aeth> also needs to compile to SPIR-V. So the whole thing _has_ to tree walk and only permit a subset of CL inside of the tree-walker for simplicity of implementation. Especially for #3.
Bubblegumdrop has joined #commonlisp
flounders has quit [Quit: WeeChat 4.3.3]
<paulapatience> aeth: I see. I'm defining a mini-DSL for something, and I wanted to shadow cl:* and cl:+ because I found the package prefix to be too long, but then I might need to use cl:* and cl:+ in the subforms in the macro.
<paulapatience> I was wondering whether to use :* and :+ instead, or to give an escape hatch to restore * and + to the usual meanings.
<aeth> well, that's why I picked the letter combination "ZR" for my game engine > 10 years ago. So I can say, e.g. "ZRVL" (Zombie Raptor Vector Language) and know that nobody in the world is going to name clash it
<aeth> so e.g. zrvl:+
<aeth> But I can also, separately, turn CL:+ into ZRVL:+ in a separate macro if I choose to. One downside being not everything is in CL
<aeth> For instance, I'm taking a few things from common libraries, with near-identical or identical APIs.
<aeth> e.g. FLOAT-FEATURES:FLOAT-NAN-P
<aeth> One advantage with this is that for the scalar version, I may be able to implement it with those functions. Because I am going to have three backends, scalar, non-portable (in implementation _or_ architecture) SB-SIMD, and SPIR-V
<paulapatience> aeth: Are you going to implement operator fusing?
<aeth> like fma?
<aeth> You can't do that... with floats, you have to assume that people know what they're doing and changing things around with identities assuming floats are reals (they're not) can greatly change results, especially on single floats.
<paulapatience> A higher level than that. I guess the question is, are you mapping the DSL operations directly to the underlying architecture, or are you doing some higher level optimization of the forms provided to the macro?
<aeth> What I _could_ do is do arithmetic identities on _two_ provided forms.
<aeth> It might be able to prove that f and g are equivalent mathematical functions, and thus the straightforward f and the fast g are the same (when you're modeling reals) despite g being better for floating point error while f is better for readability
<aeth> the kinds of things you can consider when you have to tree-walk a subset, anyway
<aeth> e.g. the LERP of (+ a (* t (- a b)) vs (+ (* (- 1.0 t) a) (* t b))
<aeth> there's one intermediate step (+ a (* t (- a)) (* t b)) to see that it's equivalent (and, yes, you can't use t in CL because of CL:T for true... e.g. alexandria:lerp uses v)
dra has quit [Ping timeout: 245 seconds]
jonatack has quit [Ping timeout: 255 seconds]
jonatack has joined #commonlisp
jonatack has quit [Excess Flood]
jonatack has joined #commonlisp
<paulapatience> aeth: I was thinking more of like omitting intermediate vectors in some operations, to reduce consing
<paulapatience> I guess "loop fusion" would be a better term
<aeth> paulapatience: for simd-pack in SB-SIMD, any intermediate heap consing for simd-pack vectors that stay within the scope of the function _should_ be reported to #sbcl as bugs (and I even noticed one once)
<aeth> For the CL scalar fallback, declare dynamic-extent can be used, but that probably only needs to be used for the longer stuff like matrices.
<aeth> Vectors don't have to actually exist at all because they can be converted to 2-4 (values) and handled with multiple-value-bind and multiple-value-call, which is one huge reason why a tree-walking transformer is easier than using it directly (m-v-c really makes things increadibly verbose, while m-v-b doesn't allow more than one binding, unlike let and let*, so it ruins the indentation levels)
<aeth> For looping, I will have to use my own loop macro that _only_ becomes for loops because CL:LOOP is frequently while loops and is quite advanced, CL:DO is kind of a while loop, and CL:DOTIMES isn't powerful enough
<aeth> Not just for optimizations, also for easier targeting of SIMD without having to generate GOtos and then turn those GOtos into structured programming, which seems to be a common IR request these days, whether SPIR-V or WASM
<aeth> s/targeting of SIMD/targeting of SPIR-V/
<paulapatience> Ah, of course, your vectors will be small, since you're writing this for your game engine.
<paulapatience> I was thinking about arbitrarily sized vectors.
<aeth> Right, it's graphics vectors, which become SPIR-V or SIMD vectors (or not; portable fallback is key). Any higher level vectors have to be constructed from lower level vectors, or from "arrays"
<aeth> Technically speaking, they're vecs (common to avoid the name collision), while vectors (1D arrays) are a separate data type
<aeth> Or I suppose in this sense they're %VECs
<aeth> It's possible that the higher level interface will permit things like complex vectors (a real and a complex %VEC paired together?) or longer vectors
<aeth> which would, again, for clarity be called VECs (but not %VECs)
<aeth> Similarly, matrices are strictly 2x2 through 4x4 in size and anything larger has to be made up of block matrices with blocks only up to 4x4. At least for %MATRIX, not necessarily for MATRIX
<aeth> Permitting smaller (e.g. 1x4 and 4x1) is a separate issue, especially since they'd overlap with the (column) vectors
<aeth> paulapatience: Another reason for tree-walking is creating types that don't exist at the CL level, but can be used for correctness. Since with DEFTYPE, a type defined for (simple-array single-float (3)) and another type defined for (simple-array single-float (3)) are the same, and if you wanted metadata, you'd have to put them in separate structs and have that extra cost at runtime. Similarly, the matrix
<aeth> representation could vary between 1D row-major, 1D column-major, 2D row-major, 2D column-major, etc., without having different user-exposed code and just do that at the tree-walking transformation level
jistr has joined #commonlisp
heisig has quit [Quit: Leaving]
amb007 has joined #commonlisp
dnhester26 has joined #commonlisp
dnhester26 has quit [Ping timeout: 252 seconds]
<paulapatience> aeth: How do you deal with such types in your macro?
kevingal has quit [Remote host closed the connection]
X-Scale has joined #commonlisp
tam has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tam has joined #commonlisp