elderK has quit [Quit: Connection closed for inactivity]
notzmv has quit [Ping timeout: 264 seconds]
ldb has joined #commonlisp
<ldb>
am I still online?
<lispmacs[work]>
nope
<lispmacs[work]>
this is the other place, where bad connections go
Lycurgus has quit [Quit: leaving]
rgherdt has quit [Quit: Leaving]
pfdietz has quit [Quit: Client closed]
kevingal has quit [Ping timeout: 255 seconds]
thuna` has quit [Remote host closed the connection]
Renfield has joined #commonlisp
ldb has quit [Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.1)]
ymir has joined #commonlisp
akoana has joined #commonlisp
pfdietz has joined #commonlisp
<pfdietz>
The sharp-dot should be in front of pi, so it's converted to the appropriate value at read time.
<pfdietz>
(the pi inside the case)
amb007 has joined #commonlisp
dra has quit [Ping timeout: 272 seconds]
amb007 has quit [Ping timeout: 256 seconds]
NicknameJohn has quit [Ping timeout: 255 seconds]
ymir has quit [Ping timeout: 260 seconds]
pfdietz has quit [Quit: Client closed]
ymir has joined #commonlisp
FragmentedCurve has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life has joined #commonlisp
semz has quit [Quit: ZNC 1.8.2+deb2build5 - https://znc.in]
semz has joined #commonlisp
istewart has joined #commonlisp
X-Scale has joined #commonlisp
X-Scale has quit [Client Quit]
triffid has quit [Remote host closed the connection]
triffid has joined #commonlisp
flounders has quit [Quit: WeeChat 4.1.2]
<skin>
New version of sbcl just dropped. I'm compling it now.
<skin>
Asked this on the discord, but how do people manage dependency versions? I've been using qlot, but it's clunky.
<aeth>
hah, Feb 29 release, good job
<aeth>
only happens one in four years so might as well do it
notzmv has joined #commonlisp
<aeth>
of course by 2028-02-29 we'll all be using Lisp machines...
<bjorkint0sh>
would we though? we'd have our brains tethered to Xwitter via some LLM. the former burden of thought will no longer be necessary.
pfdietz has joined #commonlisp
waleee has quit [Ping timeout: 240 seconds]
fe[nl]ix has quit [Remote host closed the connection]
random-nick has quit [Ping timeout: 264 seconds]
<aeth>
nah, 2028 is VR, not BCI...
<aeth>
maybe the headsets will be waterproof enough that you never have to remove them, ever, though
fe[nl]ix has joined #commonlisp
triffid has quit [Ping timeout: 260 seconds]
rakka has quit [Remote host closed the connection]
rakka has joined #commonlisp
triffid has joined #commonlisp
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 255 seconds]
bilegeek has joined #commonlisp
akoana has quit [Quit: leaving]
dnhester has quit [Ping timeout: 255 seconds]
beach` is now known as beach
occ has quit [Ping timeout: 256 seconds]
josrr has quit [Remote host closed the connection]
akoana has joined #commonlisp
dnhester has joined #commonlisp
ymir has quit [Ping timeout: 264 seconds]
dnhester has quit [Ping timeout: 260 seconds]
childlikempress is now known as Mondenkind
akoana has quit [Quit: leaving]
dnhester has joined #commonlisp
dnhester has quit [Ping timeout: 256 seconds]
ymir has joined #commonlisp
<copec>
Has anyone studied how TidalScale works? It’s pretty interesting. For the most part it moves the virtual CPU thread closest to where the data is in memory… is there any sort of CL library that does that between a bunch of nodes in userspace?
NotThatRPG has quit [Remote host closed the connection]
NotThatRPG has joined #commonlisp
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
rgherdt has joined #commonlisp
traidare has joined #commonlisp
adlai has quit [Quit: WeeChat 4.1.1]
adlai has joined #commonlisp
kenran has quit [Remote host closed the connection]
kenran has joined #commonlisp
kenran has quit [Remote host closed the connection]
kenran has joined #commonlisp
shka has joined #commonlisp
danza has joined #commonlisp
markb1 has quit [Ping timeout: 260 seconds]
attila_lendvai has joined #commonlisp
dnhester has joined #commonlisp
varjag has joined #commonlisp
markb1 has joined #commonlisp
dnhester has quit [Ping timeout: 260 seconds]
danza has quit [Ping timeout: 260 seconds]
FragmentedCurve has quit [Quit: Leaving]
FragmentedCurve has joined #commonlisp
bilegeek has quit [Quit: Leaving]
Pixel_Outlaw has quit [Quit: Leaving]
dino_tutter has quit [Ping timeout: 255 seconds]
dra has joined #commonlisp
dnhester has joined #commonlisp
jon_atack has joined #commonlisp
dra has quit [Ping timeout: 246 seconds]
jonatack has quit [Ping timeout: 255 seconds]
donleo has joined #commonlisp
danse-nr3 has joined #commonlisp
<paulapatience>
skin: I believe people usually don't. Not beyond "same Quicklisp distribution"
<paulapatience>
You might consider looking into clpm
<aeth>
I think for most people, just overriding Quicklisp with a git checkout into ~/quicklisp/local-projects/ is what they do
<aeth>
obviously a very incomplete solution
<paulapatience>
skin: By the way, I discovered NRDL completely by accident. It is interesting. I have a few comments though.
<paulapatience>
You forbid leading hyphens to prevent confusion with numbers, but if I'm reading the grammar correctly, +123 is still allowed
snits has quit [Quit: No Ping reply in 180 seconds.]
Cymew has joined #commonlisp
snits has joined #commonlisp
<paulapatience>
What KDL does in this situation is allow signs as leading character if not followed by a digit
chomwitt has quit [Ping timeout: 256 seconds]
<paulapatience>
Also, KDL mandates a leading digit for numbers, like JSON, and thus a dot may be used as leading character for identifiers
defaultxr has joined #commonlisp
<paulapatience>
(symbols, in your case)
random-nick has joined #commonlisp
zetef has quit [Remote host closed the connection]
<paulapatience>
%0D is missing its x in the line-delimiter definition
<paulapatience>
KDL allows Unicode spaces and newlines to be treated as such, but I prefer your decision to restrict them to ASCII
amb007 has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
<paulapatience>
I notice your numbers also need to start with a digit, so nothing prevents leading dots in identifiers, except presumably possible confusion, which you could deal with in the same way as for signs
<paulapatience>
I do find it weird to treat colon and comma as whitespace. I would have chosen to allow at most one, or allow it only in those positions where JSON would allow them (plus allowing trailing commas), though that adds more cases to the parser
X-Scale has joined #commonlisp
bendersteed has joined #commonlisp
<paulapatience>
Finally, I may be misreading the grammar, but it seems to forbid files starting with comments
dcb has quit [Quit: Connection closed for inactivity]
dnhester has quit [Ping timeout: 246 seconds]
<shka>
happy defun day!
<shka>
today is 55 defun macro anniversary :)
rgherdt_ has joined #commonlisp
rgherdt has quit [Ping timeout: 255 seconds]
Posterdati has quit [Ping timeout: 256 seconds]
philipp_ has quit [Remote host closed the connection]
Posterdati has joined #commonlisp
X-Scale has quit [Quit: Client closed]
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
mm007emko has quit [Ping timeout: 264 seconds]
mm007emko has joined #commonlisp
_cymew_ has joined #commonlisp
dnhester has joined #commonlisp
mm007emko has quit [Read error: Connection reset by peer]
mm007emko has joined #commonlisp
dnhester has quit [Ping timeout: 264 seconds]
ym has joined #commonlisp
danse-nr3 has quit [Ping timeout: 246 seconds]
dnhester has joined #commonlisp
wacki has quit [Read error: Connection reset by peer]
wacki_ has joined #commonlisp
Odin-LAP has joined #commonlisp
dcb has joined #commonlisp
<pve>
Hi! Is my interpretation of eval-when correct, in that evaluation will occur when loading a lisp source file containing a top-level (eval-when (:execute) ...), but it will not occur when loading a fasl produced by compiling that file?
<beach>
Sounds right.
malaclyps has joined #commonlisp
mala has quit [Ping timeout: 268 seconds]
<pve>
beach: great, thanks
<beach>
Sure.
igemnace has quit [Read error: Connection reset by peer]
<ixelp>
GitHub - simendsjo/sijo-doctest: Doctests for Lisp
tyson2 has joined #commonlisp
<beach>
simendsj`: Why do you have blank lines inside a function? That style is not conventional.
<beach>
simendsj`: Instead of (if ... (remove-if #'writespace-p <a>) (remove-if #'writespace-p <b>)) you can do (remove-if #'whitespace-p (if ... <a> <b>))
<simendsj`>
That was done in the original library. I've only made the changes noted in the README.
<beach>
Why did you not make more changes? :)
traidare has quit [Ping timeout: 255 seconds]
<beach>
In the README, I would write "Print only when tests are failing" rather than "Only print when tests are failing". In the written language, the latter means something different.
<simendsj`>
Pretty impressive to only do a very limited amount of changes, right? ;) Thanks, I'll fix the wording.
<beach>
And I would be more consistent with upper/lower case, so either TEST-PACKAGE or run-doctest.
yitzi has joined #commonlisp
green__ has quit [Ping timeout: 272 seconds]
<beach>
Er, there is a (when (not ....) (unless ...)), that deserves to be improved as well.
<beach>
And EQUAL is used to compare characters.
dra has joined #commonlisp
dra has quit [Changing host]
dra has joined #commonlisp
<beach>
simendsj`: It sounds like you found yourself a maintenance project. :)
<beach>
s/sounds/looks/ I guess.
danse-nr3 has joined #commonlisp
<beach>
Wait, the entire (if (stringp string) (remove-if....)) seems useless. STRING applied to a string returns that string, so the second case is all that is needed.
dra has quit [Ping timeout: 264 seconds]
<simendsj`>
Thanks for the input, I'll go over these issues and improve the code a bit.
<beach>
Great!
chomwitt has joined #commonlisp
Oddity has quit [Ping timeout: 256 seconds]
X-Scale has quit [Quit: Client closed]
iska has quit [Ping timeout: 252 seconds]
iska has joined #commonlisp
prxq has joined #commonlisp
X-Scale has joined #commonlisp
green__ has joined #commonlisp
josrr has joined #commonlisp
<skin>
paulapatience: read your comments. just woke up. the notes o
<skin>
the joys of living in utah
chomwitt has quit [Ping timeout: 268 seconds]
<skin>
first, the master branch of nrdl is broken. I've been using the code tagged at 0.3.0. I need to clean that up. sorry
<skin>
second, thank you for your interest! I appreciate the feedback.
<skin>
many of the decisions you cite are due to my desire to implement nrdl using a simple single character look ahead parser.
<skin>
I want it to be easy not only for users but implementers. the idea is that other languages will need to implement it too, maybe, so I want the parser to be a sophomore homework assignment.
<skin>
I didn't know about the plusses on numbers. if that's there, it's a mistake. plus should start a symbol, not a number. I can fix.
<skin>
finally: ill have to look up this kdl of which you speak.
<paulapatience>
No, plus starts symbols
<skin>
oh good
<paulapatience>
I haven't tried the code yet, this was from just reading the readme
<skin>
I even toyed with the idea of a reader macro. I haven't really flushed that idea out yet though
green__ has quit [Ping timeout: 246 seconds]
<paulapatience>
I'm in the process of implementing a UCL (another configuration format) library, and intend to do KDL and TOML (I know there are already some TOML libraries for Lisp)
<paulapatience>
So I've been thinking of configuration formats quite a bit lately
traidare has joined #commonlisp
<skin>
that's great. the reason I wrote nrdl is I wanted a json superset config language that I didn't need cffi for.
igemnace_ has joined #commonlisp
<paulapatience>
Do you know of strictYAML?
<skin>
yaml parser is so complicated. pretty much everyone just uses libyaml and pyyaml, both of which were implemented by the creators of yaml. feels like no one else was able to figure it out how to do it
igemnace has quit [Ping timeout: 264 seconds]
<skin>
I don't. what is it
<paulapatience>
It's basically what the name is
<paulapatience>
YAML with some stuff removed, which presumably makes it simpler
<skin>
no billion laughs then.
<paulapatience>
There's just a python implementation though
<skin>
still, that's very interesting
<skin>
I'll definitely look it up. if I knew about it before nrdl I might have just implemented that, but I'm pretty happy with nrdl. it takes all the boxes for what I'd want in a better yaml
pranavats has left #commonlisp [Error from remote client]
pranavats has joined #commonlisp
<skin>
I come from clojure and I really liked edn
<paulapatience>
I might try my hand at (re)implementing nrdl and maybe eventually strictyaml for CL
<paulapatience>
Yeah, edn looks cool
<paulapatience>
I've never used Clojure though so haven't tried it
kenran has quit [Remote host closed the connection]
<skin>
I'd love it if you re-implemented nrdl. I'll clean the grammar up to make sure it's correct today. strictyaml sounds super interesting
<skin>
esrap makes parsers super easy
amb007 has quit [Read error: Connection reset by peer]
ronald_ has quit [Ping timeout: 264 seconds]
amb007 has joined #commonlisp
<skin>
if I knew about it when I wrote nrdl it would have been easier to write.
ebrasca has joined #commonlisp
<paulapatience>
I'll let you know when I give it a shot. I'm still figuring out how best to design my parser protocol. I'm trying to make it so users can decide how to parse documents directly into their own structures, rather than having to postprocess the AST
<prxq>
I tried to connect with postmodern, but it does not work. It bombs with "10 fell through ECASE expression. Wanted one of (0 2 3 4 5 6).". Any ideas?
<prxq>
The username password database combination is good, I tested it with the psql client
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
dra has joined #commonlisp
josrr has quit [Remote host closed the connection]
josrr has joined #commonlisp
<prxq>
Ok so digging deeper it seems the version of postmodern that got installed via quicklisp is not current. Thats weird
green__ has joined #commonlisp
cage has joined #commonlisp
<prxq>
oh no lol that's my fault
<skin>
you might look at com.inuoe.jzon, it lets younder
<beach>
The indentation of the body of PARSE-VALUE is incorrect.
<skin>
blatantly so or I-use-Vim-you-use-emacs so?
<beach>
The (ECASE is indented 8 positions instead of 2.
<skin>
right, I see it. good catch.
<beach>
In a LOOP a clause like while (not ...) can be simplified to until ...
<beach>
In a LOOP a clause like WHILE (NOT ...) can be simplified to UNTIL ... I should have said.
<skin>
fair.
<skin>
do you have a recommendation for a linter?
<beach>
No, sorry.
<skin>
I like ros fmt except it takes forever to run
<prxq>
lol my postmodern version is from 2008 :-D
<beach>
There is no particular reason to have a newline after DO or FINALLY if the following thing fits on the same line.
<beach>
Full-line comments inside a function take 2 semicolons.
<skin>
I also misindented defpackage looks like
<beach>
Yes, probably so.
<skin>
what I'm mostly getting out of this is use a formatter and read the docs on the comments thing. the until was just an Oops.
<skin>
I have a love-hate relationship with Ros. it makes something so easy but then failed spectacularly in the weirdest times or places
<skin>
but it has a formatter that I think I'll start using.
<beach>
I can't comment on what the code does because 1. I can't concentrate on what the code does if it is badly formatted, and 2. I don't know what the library you use is doing.
<beach>
Surely, Vim must have an indent function, no?
<skin>
the library is a json parser. the main library parses things into hash tables and vectors but I wanted to port it to using fset.
mm007emko has quit [Ping timeout: 256 seconds]
<skin>
it has an indent function but sometimes you forget to use it if things look sort of okay
mm007emko has joined #commonlisp
<beach>
I see.
<skin>
hence using a formatter would really help as maybe a pre-commit hook or something
<beach>
I have to take your word for it.
<skin>
maybe just tell vim to indent it right before saving. that's probably the best idea
<skin>
I understand how it feels to not be able to read something poorly formatted. I'll get better, just sort of new at this CL thing.
<beach>
Of course. If you were an experienced Common Lisp user, I would assume you did it deliberately wrong, and I would not make the effort. :)
<skin>
yeah thanks
<beach>
Pleasure.
varjag has quit [Quit: ERC (IRC client for Emacs 27.1)]
kevingal has joined #commonlisp
dnhester has joined #commonlisp
<prxq>
there was a way to limit the slime buffer to a certain number of lines. What was it?
azimut has joined #commonlisp
dnhester has quit [Ping timeout: 252 seconds]
rtypo has joined #commonlisp
dnhester has joined #commonlisp
dnhester has quit [Ping timeout: 256 seconds]
X-Scale has quit [Quit: Client closed]
<younder>
Is there some trick to make the error handlers work in hunchentoot? I keep getting the defaults. I have
<younder>
When I ran huncentoot-test they started working. When I restarted the lisp server they stopped working.
danse-nr3 has quit [Read error: Connection reset by peer]
danse-nr3 has joined #commonlisp
dnhester has joined #commonlisp
a51 has joined #commonlisp
kevingal has quit [Remote host closed the connection]
kevingal has joined #commonlisp
X-Scale has joined #commonlisp
dnhester has quit [Ping timeout: 260 seconds]
<younder>
When I (setf hunchentoot:*show-lisp-errors-p* t) they string into life.. Damnedest thing. That is just supposed to dump the output of trivial trace on internal error (500)
bendersteed has quit [Quit: bendersteed]
<josrr>
younder: normally, when I create the acceptor I pass the initarg :ERROR-TEMPLATE-DIRECTORY; I don't know if that solves your problem.
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
kevingal has quit [Remote host closed the connection]
<younder>
josrr. Ok Ill see if that helps. thx
kevingal has joined #commonlisp
kevingal has quit [Remote host closed the connection]
dnhester has joined #commonlisp
ym has quit [Ping timeout: 268 seconds]
dnhester has quit [Ping timeout: 264 seconds]
amb007 has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
yitzi has quit [Remote host closed the connection]
simendsj` has quit [Ping timeout: 256 seconds]
_cymew_ has quit [Quit: Konversation terminated!]
danza has joined #commonlisp
igemnace_ has quit [Quit: WeeChat 4.2.1]
dino_tutter has joined #commonlisp
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
danse-nr3 has quit [Ping timeout: 255 seconds]
zxcvz has joined #commonlisp
zxcvz has quit [Client Quit]
zxcvz has joined #commonlisp
kevingal has joined #commonlisp
notzmv has quit [Ping timeout: 264 seconds]
Cymew has quit [Ping timeout: 260 seconds]
tyson2 has quit [Remote host closed the connection]
alcor has joined #commonlisp
X-Scale has quit [Quit: Client closed]
danza has quit [Ping timeout: 260 seconds]
Lycurgus has joined #commonlisp
dino_tutter has quit [Quit: Leaving]
chomwitt has joined #commonlisp
dino_tutter has joined #commonlisp
chomwitt has quit [Ping timeout: 260 seconds]
* beach
is working on a real WSCL issue for ENSURE-GENERIC-FUNCTION.
<beach>
Does anyone know what the existing dictionary entry for ENSURE-GENERIC-FUNCTION means by a generic-function class being "compatible" with another generic-function class?
<beach>
It is going to be a fairly significant issue, so I would like to get it as complete as possible.
* beach
checks the glossary for "compatible".
<bike>
in the mop, "If the class of the generic-function-or-nil argument is not the same as the class specified by the :generic-function-class argument, an error is signaled.", which makes it sound like to be compatible they have to be the same class
<bike>
maybe the standard contemplated something broader but didn't develop the idea
<beach>
Thanks. Yes, that seems plausible.
<bike>
that quote is for ensure-generic-function-using-class to be clear
<beach>
Yes, I understand.
<beach>
I think it is safest to go the MOP way then.
<bike>
there's "Since metaobject classes may not be redefined, no behavior is specified for the result of calls to update-instance-for-redefined-class on generic function metaobjects. Since the class of a generic function metaobject may not be changed, no behavior is specified for the results of calls to update-instance-for-different-class on generic function metaobjects." which kind of directly contradicts the
<bike>
standard mentioning change-class
<beach>
Excellent! Thank you!
<bike>
no problem
<beach>
I should have checked the MOP before asking, I guess.
<bike>
whenever something in the standard CLOS seems weird or vague in any way i pretty much immediately check the MOP instead
<beach>
Good plan.
younder has quit [Remote host closed the connection]
dnhester has joined #commonlisp
<beach>
The issue suggests allowing all of the defaulting behavior of the MOP.
<beach>
And I am filling in some exceptional situations as well, like when the argument precedence order is given but not the lambda list (or the function has no lambda list yet).
<beach>
But this is going to take a bit more time, so I need to continue tomorrow.
dnhester has quit [Ping timeout: 264 seconds]
<beach>
I really should get into the habit of writing one WSCL issue per day.
kevingal has quit [Ping timeout: 252 seconds]
<beach>
Then if gilberth provides links to (parsed versions of) them in the Nova Spec, that would be fantastic.
X-Scale has joined #commonlisp
<beach>
I know scymtym's version of the parsed dpANS displays the X3J13 issues and the WSCL issues, but I don't know whether scymtym intends to keep his version alive or whether he thinks we should use the Nova Spec instead.
tyson2 has joined #commonlisp
rgherdt_ has quit [Ping timeout: 246 seconds]
<beach>
Oh, gilberth, I assume you know about my HTML version of chapters 5 and 6 of the AMOP, yes? The HTML version is freely available (as opposed to that other HTML version) so if you want to modify it and add it to the Nova Spec, that would be fine.
<beach>
I noticed that it looks like other specifications will ultimately be added to the Nova Spec.
tyson2 has quit [Remote host closed the connection]
mm007emko has quit [Read error: Connection reset by peer]
mm007emko has joined #commonlisp
waleee has joined #commonlisp
lucasta has joined #commonlisp
ymir has quit [Ping timeout: 264 seconds]
tyson2 has joined #commonlisp
rtypo has quit [Ping timeout: 260 seconds]
dnhester has joined #commonlisp
dnhester has quit [Ping timeout: 264 seconds]
ymir has joined #commonlisp
notzmv has joined #commonlisp
mm007emko has quit [Ping timeout: 272 seconds]
kevingal has joined #commonlisp
mm007emko has joined #commonlisp
X-Scale has quit [Quit: Client closed]
gxt_ has quit [Ping timeout: 260 seconds]
Posterdati has quit [Ping timeout: 260 seconds]
gxt_ has joined #commonlisp
pfdietz has joined #commonlisp
Posterdati has joined #commonlisp
rgherdt has joined #commonlisp
ymir has quit [Ping timeout: 268 seconds]
ebrasca has quit [Remote host closed the connection]
josrr has quit [Remote host closed the connection]
lucasta has quit [Quit: Leaving]
Oddity has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
<ixelp>
GitHub - bendudson/py4cl: Call python from Common Lisp
<chsasank>
Anybody used it and any reviews?
dnhester has quit [Ping timeout: 264 seconds]
`Pixel_Outlaw has quit [Quit: Leaving]
ymir has joined #commonlisp
pfdietz has quit [Quit: Client closed]
pranavats has left #commonlisp [Disconnected: Hibernating too long]
zetef has joined #commonlisp
pranavats has joined #commonlisp
zetef has quit [Remote host closed the connection]
zxcvz has quit [Quit: zxcvz]
tyson2 has quit [Remote host closed the connection]
<paulapatience>
chsasank: It checks a weird configuration file at load time.
<chsasank>
what do you mean?
<paulapatience>
I can't remember where exactly it had to be placed, but I didn't like the need for it.
<chsasank>
It worked just fine oob for me
<paulapatience>
Basically, loading the system requires a config file to exist in some place.
<paulapatience>
I *think* that place is in the directory the ASD file is located.
<chsasank>
I was using python from anaconda too. it picked just fine.
a51 has quit [Ping timeout: 252 seconds]
<paulapatience>
That caused problems when packaging it for Guix
<chsasank>
I am more worried about performance and interop
<paulapatience>
Further, I was unable to compile an executable with it, though perhaps I was missing an eval-when around module imports
<paulapatience>
It uses Numpy compressed format for exchanging arrays, but obviously exchanging many large arrays will be inefficient
<paulapatience>
You might also check out py4cl2
<chsasank>
yeah I think shipping it is painful because you'll need to work on python env
<paulapatience>
That too
<paulapatience>
For interactive use it is convenient. I like the chain macro
<chsasank>
I want to actually do the other way around: ship lisp as a python package
<paulapatience>
Then see cl4py
<chsasank>
`pip install lisp` and interop with python would be so amazing
<chsasank>
can I cl4py and py4cl both together?
<paulapatience>
I don't know
<paulapatience>
I don't see why not, but you end with with multiple python interpreters running
<chsasank>
yeah that's the problem
<chsasank>
I don't want that :(
<paulapatience>
I actually started working on a library that would make it easier to communicate from Lisp to other REPLs. Basically py+jl+etc4cl
<chsasank>
circular dependencies can break things
<chsasank>
any link?
<paulapatience>
But other priorities came in the way
<paulapatience>
It's not usable at all yet
<paulapatience>
Basically I found py4cl to have some things I didn't like, and I wanted to have a more general external REPL-interaction mechanism
<chsasank>
got it
<chsasank>
how exactly do py4cl and cl4py work?
<paulapatience>
They create a custom communication protocol on the Python REPL side, and change Python's REPL mode
<paulapatience>
So like x means "run command" or whatever (don't remember the exact details)
<chsasank>
yeah this seems to be mentioned in python
ymir has quit [Ping timeout: 260 seconds]
<chsasank>
in docs I mean sry
<paulapatience>
They parse some objects from the repl into whichever format, like python list to cl vector
<paulapatience>
py4cl keeps track of which objects are allocated on the python side and adds finalizers for them
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
<chsasank>
ok for garbage collection
<paulapatience>
What I ended up doing in my case is interpolate values into a string containing a Python program, and pass that directly to a new Python process
<chsasank>
so it's basically based on repl
a51 has joined #commonlisp
<paulapatience>
I have to pay the cost of Python startup time, but in my case that is negligible compared to the runtime of the Python part
<chsasank>
what is the 'channel' for data transfer?
zxcvz has joined #commonlisp
<paulapatience>
What do you mean?
<paulapatience>
Is that a specific term of py4cl or cl4py?
<chsasank>
no, I mean you said there is a custom communication protocol right
<chsasank>
I wanted to know how this protocol is run
<ixelp>
GitHub - bendudson/py4cl: Call python from Common Lisp
<paulapatience>
Hmm, I imagine that it should
<paulapatience>
At least, you could for sure give it as a callback
<chsasank>
what do you mean?
<paulapatience>
Well, that is the example given
<paulapatience>
I mean, if a Python module exports a function that takes a function argument, i.e., a callback
<paulapatience>
Then that works
<chsasank>
ok
<paulapatience>
But the Lisp code from py4cl cannot be used as a module in an external Python module
<paulapatience>
For that you need cl4py
<chsasank>
yeah the circle is the problem :(
<chsasank>
I want a circle
<chsasank>
I am not sure if it's possible
<paulapatience>
Anyway, with both cl4py and py4cl, the ideal usecase is to define as much as possible in a clearly delimited API boundary, and exchange between them as little as possible
<paulapatience>
Imo anyway
pve has quit [Quit: leaving]
<paulapatience>
I was similarly enthused when I discovered py4cl, but I would use it only if you have no other choice
<chsasank>
:(
<chsasank>
sad
<paulapatience>
Indeed
<chsasank>
it's so nice!
<chsasank>
so what would be the right way to make cl and py interop?
<paulapatience>
Probably using FFI to interface with CPython
<paulapatience>
Like Julia does via PyCall
<paulapatience>
CL has burgled-batteries that tries that but it is incomplete
<chsasank>
yeah seems to be very complicated to do that
tfeb has joined #commonlisp
<chsasank>
do you know of any nice libraries that can generate llvm ir for me?
<paulapatience>
Rust has PyO3
<paulapatience>
Not off the top of my head
<paulapatience>
However note that Clasp, a CL implementation, is built on LLVM
zyni-moe has joined #commonlisp
<paulapatience>
It might be suitable for your needs
tfeb has quit [Client Quit]
traidare has quit [Ping timeout: 264 seconds]
NotThatRPG has quit [Ping timeout: 264 seconds]
zyni-moe has quit [Client Quit]
<chsasank>
yeah I checked clasp, it's a bit slow :(
<chsasank>
ok it's very slow
<chsasank>
I'll use py4cl and see how far it will take me
tibfulv has quit [Remote host closed the connection]
<paulapatience>
Report back please, I'd be interested to know the results
<chsasank>
roughly speaking the approach is not very different from what cl4py/py4cl is doing!
<paulapatience>
Bah, 3000 is nothing
<chsasank>
text based interfaces seems to be more stable and easier to manipulate
<aeth>
usually CL wins in LoC contests, but that's because it puts its ))))s at the end of the line instead of on their own lines... significant whitespace would thus be equivalent in terms of lines, assuming nothing else changes
<chsasank>
haha. it's effort no. priority is to get something up and running asap
<aeth>
being expression-based (unlike Python) ought to help with LoC, too
<paulapatience>
Yes, but then you could start with py4cl and progressively rewrite llvmlite
<chsasank>
correct, that's exactly my plan
<paulapatience>
If that's the only thing you'd need py4cl for, it's a reasonable option
<chsasank>
if py4cl proves to be bad
<paulapatience>
Cool
NotThatRPG has quit [Read error: Connection reset by peer]
<chsasank>
I really hope I do
<chsasank>
I really hope I don't have to ditch lisp. I fell in love with it :(
NotThatRPG has joined #commonlisp
dnhester has joined #commonlisp
<paulapatience>
Generating LLVM IR from Lisp seems like a good thing to be able to do. Keep me updated. Maybe I could try my hand at porting the Python bits from llvmlite at some point
mariari has joined #commonlisp
amb007 has quit [Ping timeout: 252 seconds]
<chsasank>
sure will keep you posted
dnhester has quit [Ping timeout: 246 seconds]
amb007 has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 29.1]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
lagash has quit [Remote host closed the connection]
lagash has joined #commonlisp
OlCe has quit [Remote host closed the connection]
ronald has joined #commonlisp
kevingal_ has joined #commonlisp
kevingal has quit [Read error: Connection reset by peer]
Oddity has quit [Read error: Connection reset by peer]
zxcvz has quit [Quit: zxcvz]
Oddity has joined #commonlisp
younder has joined #commonlisp
chomwitt has joined #commonlisp
attila_lendvai has quit [Ping timeout: 272 seconds]
<Renfield>
If I've messed up definitions in my REPL, how do I clear it out? The only way I know how so far is to just quick Emacs and start it again.
<younder>
You could just restart sly. (exit) and the M-x Sly
<younder>
or slime
amb007 has quit [Ping timeout: 264 seconds]
<aeth>
with slime you can ,restart-inferior lisp or M-x slime-restart-inferior-lisp
<aeth>
I'd have to assume Sly has something similar
<aeth>
it's common enough of an operation to be one step
<Renfield>
Yea, I'm using slime.
<Renfield>
Thanks.
<aeth>
it's often easier to restart and then reload everything than it is to try to unbreak the image...
<aeth>
plus, you want to do this before git pushing so the CI doesn't fail on something that works locally for you because of a stale thing in your image
<younder>
I sometime use a 'playpen' for expermimenting. A package that I can then dispose of and take all the declarations with ot I have some code for it here:
<Renfield>
I see. I thought I read somewhere that people have their REPL running for a long time in general.
<ixelp>
(defpackage #:foo) => #<Package "FOO"> and (defpackage #:bar (:use #:foo)) => #<Package "BAR"> finally (delete-package '#:foo) ERROR: #<Package "FOO"> is used by (#<Package "BAR">)
<aeth>
So e.g. if you mess up foo, you have to make the decision of (1) delete all dependent packages and then delete foo and then reload, (2) try to fix it the "right" way, (3) restart the REPL and reload
<Renfield>
I'll work on (3). I see there's a way to set up slime to automatically load packages that I'm using.
wacki_ has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tyson2 has quit [Remote host closed the connection]
NotThatRPG has joined #commonlisp
<aeth>
there is?
Inline has quit [Quit: Leaving]
<aeth>
I just define a function in .sbclrc that basically does (dolist (system systems) (ql:quickload system :verbose (or verbose quicklisp-client:*quickload-verbose*)))
<aeth>
and (when test (dolist (system systems) (asdf:test-system system)))
<aeth>
then I can load and test whatever systems I currently care about on restart