<NotThatRPG>
Because I have, of course, completely forgotten what you said
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
supercode has quit [Quit: Client closed]
<paulapatience>
NotThatRPG: Sure
<NotThatRPG>
Thanks!
seanw has quit [Quit: rcirc on GNU Emacs 29.4]
<paulapatience>
NotThatRPG: Doe
<paulapatience>
Done
<NotThatRPG>
Great! Appreciate it. I'll have a look when I can. rn I'm being held back by some issues w/ testing infrastructure, but the cl.net folks are helping.
<paulapatience>
There's no real rush, it's a trivial fix if I'm right.
<paulapatience>
I think it has gone undetected for so long because pathnames are passed directly to :input/:output in uiop:run-program
<paulapatience>
I've been writing a wrapper around uiop:run-program, that's why I happened to see the bug
<paulapatience>
s/are passed/are usually passed/
netdoll has quit [Quit: Konversation terminated!]
meaty has quit [Read error: Connection reset by peer]
meaty has joined #commonlisp
troojg has joined #commonlisp
drewjose has quit [Ping timeout: 244 seconds]
drewjose has joined #commonlisp
beach has quit [Ping timeout: 265 seconds]
beach has joined #commonlisp
<Bubblegumdrop>
nice work ...
semz has quit [Quit: ZNC 1.8.2+deb2ubuntu0.1 - https://znc.in]
semz has joined #commonlisp
rtypo has quit [Ping timeout: 265 seconds]
X-Scale has quit [Quit: Client closed]
istewart has quit [Quit: Konversation terminated!]
synchromesh has quit [Read error: Connection reset by peer]
Akbar-Birbal has joined #commonlisp
synchromesh has joined #commonlisp
alcor` has joined #commonlisp
alcor has quit [Ping timeout: 260 seconds]
bjorkintosh has quit [Quit: "Every day, computers are making people easier to use." David Temkin]
<paulapatience>
I will say that the implementation of uiop:run-program and uiop:launch-program is some of the most convoluted code I've ever read. I'm still not sure what half of it does.
<paulapatience>
Part of the issue all the feature checks for different implementations
<paulapatience>
Part of the issue is
troojg has quit [Ping timeout: 245 seconds]
<paulapatience>
In my CLOS-based wrapper equivalent of uiop:run-program, I will wrap each implementation in a separate package. It should be clearer then.
neuroevolutus has quit [Ping timeout: 256 seconds]
wacki has joined #commonlisp
chomwitt has joined #commonlisp
shawnw has joined #commonlisp
<jackdaniel>
another one is that uiop refuses to rely on the implementation behavior and instead of that it always transits data through its own streams
<jackdaniel>
and that's like supper inefficient sometimes
<jackdaniel>
say you write (uiop:run-program ... :output *my-stream*), then it calls (impl:run-program ... :output *uiop-vomiting-stream*), and marshalls all data from the vomiting stream to *my-stream*, so data is passed twice
<jackdaniel>
I want to believe that there is a sensible reason to do that
<aeth>
so you can define a method on the uiop stream?
Th30n` is now known as Th30n
<jackdaniel>
sensible reason is not necessarily the same thing as a technical desire of the creator ,)
<jackdaniel>
the question is not "what can you do with it?", but rather "why?"
alternateved has joined #commonlisp
<jackdaniel>
for my purposes this run-program does a job: https://turtleware.eu/static/paste/foo.lisp ; with a quirk that not all implementations support :wait nil, so a more sophisticated version could try to spawn a thread to manage such run-program instead; perhaps being able to communicate from a separate thread to a stream is the reason behind uiop's gymnastics?
pve has joined #commonlisp
mgl has quit [Ping timeout: 245 seconds]
treflip has joined #commonlisp
shka has joined #commonlisp
neuroevolutus has joined #commonlisp
neuroevolutus has quit [Client Quit]
random-nick has joined #commonlisp
random-nick has quit [Ping timeout: 244 seconds]
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
mgl has joined #commonlisp
<younder>
There is a package inferior-shell that can run programs
<younder>
Never-mind it uses uiop:run-program as well
shawnw has quit [Ping timeout: 255 seconds]
<beach>
Hmm, I never noticed this before; the SBCL TRACE function prints symbols with package prefixes upon function entry but without package prefixes upon function exit.
wacki has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<jackdaniel>
this description seems to be incomplete
<jackdaniel>
when trace is entered, then the package printer uses is the package FOO is defined in, and when trace returns, the package printer uses is the package user is in
<beach>
Yes, I see. Thanks. Still an interesting observation.
HER_ has joined #commonlisp
HER has quit [Ping timeout: 252 seconds]
spdegabrielle has joined #commonlisp
Akbar-Birbal has left #commonlisp [#commonlisp]
Akbar-Birbal has joined #commonlisp
chomwitt has quit [Ping timeout: 246 seconds]
chomwitt has joined #commonlisp
donleo has joined #commonlisp
X-Scale has joined #commonlisp
SummerEmacs has left #commonlisp [ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.91)]
SummerEmacs has joined #commonlisp
chomwitt has quit [Ping timeout: 272 seconds]
mwnaylor has quit [Ping timeout: 272 seconds]
rtypo has joined #commonlisp
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
<paulapatience>
jackdaniel: So, it only transits data through its own streams in some cases. On SBCL and CMUCL on Unix, stream arguments are passed directly to the underlying implementation. On other implementations it passes them through UIOP's stream functions.
<paulapatience>
But pathnames are passed to the underlying implementation.
<paulapatience>
I think the reason for the streams is that not all implementations support that.
<paulapatience>
E.g., I think passing octet streams to some implementations is unsupported, but theoretically with vomit and slurp it would be, because they get converted to files that are then ok.
<paulapatience>
But I'm not entirely sure yet.
edgar-rft` has joined #commonlisp
<jackdaniel>
in any case I've always been sceptical regarding uiop's run-program/launch-program design; I've studied it a little, but that was a few years ago
edgar-rft_ has quit [Ping timeout: 246 seconds]
<jackdaniel>
I wish there was a portable way of specifying by the programmer what is executed under certain optimization levels
pranav has quit [Remote host closed the connection]
<jackdaniel>
s/executed/compiled/
<jackdaniel>
but that's more a golden fish wish than a must have, so.. :)
pranav has joined #commonlisp
<paulapatience>
The optimization level used by run-program? Or were those two disjoint ideas?
varjag has joined #commonlisp
edgar-rft` is now known as edgar-rft
<edgar-rft>
I'm afraid that run-program can't optimize the programs it runs
<jackdaniel>
disjoint, just a loose thought inspired by what I'm doing at the moment
treflip has quit [Ping timeout: 244 seconds]
<edgar-rft>
but it would be cool to optimize programs just by running them from Common Lisp :-)
menad has joined #commonlisp
<jackdaniel>
I've meant something like (optimize-case ((and (< safety 1) (> speed 3)) nil) ((> safety 2) (check-type x float)) (otherwise (float x))) ; lousy example, I know
<jackdaniel>
technially something what compilers already do have for their own inner workings (in ecl it is called compilation policies)
<jackdaniel>
and they are named there btw, but hopefully you know what I mean
bjorkintosh has joined #commonlisp
decweb has joined #commonlisp
skeemer has joined #commonlisp
menad has quit [Ping timeout: 272 seconds]
<paulapatience>
Th
King_julian has joined #commonlisp
<paulapatience>
I've seen the policy-cond library that does something like that
<paulapatience>
It's used in magicl
<paulapatience>
(The linear algebra library)
* jackdaniel
ported magicl to ecl at some point
<paulapatience>
Oh cool
<jackdaniel>
as part of a gig from rigetti computing
<paulapatience>
I've been keeping an eye on that for when I need to do linear algebra, but the necessity has not arisen
menad has joined #commonlisp
menad has quit [Ping timeout: 255 seconds]
opinionplatform_ has quit [Ping timeout: 248 seconds]
X-Scale has quit [Quit: Client closed]
meaty has quit [Ping timeout: 255 seconds]
menad has joined #commonlisp
nkatte has joined #commonlisp
menad has quit [Ping timeout: 276 seconds]
puke has quit [Quit: WeeChat 3.8]
X-Scale has joined #commonlisp
puke has joined #commonlisp
cage has joined #commonlisp
cage has quit [Excess Flood]
cage has joined #commonlisp
spdegabrielle has quit [Quit: Connection closed for inactivity]
meaty has joined #commonlisp
treflip has joined #commonlisp
cmack has joined #commonlisp
varjag has quit [Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.3)]
shka has quit [Read error: Connection reset by peer]
shka has joined #commonlisp
random-nick has joined #commonlisp
menad has joined #commonlisp
Th30n has quit [Ping timeout: 246 seconds]
zxcvz has joined #commonlisp
zxcvz has quit [Client Quit]
menad has quit [Read error: Connection reset by peer]
menad has joined #commonlisp
Inline has joined #commonlisp
Inline has quit [Quit: Leaving]
King_julian has quit [Ping timeout: 244 seconds]
Inline has joined #commonlisp
X-Scale has quit [Ping timeout: 256 seconds]
treflip has quit [Ping timeout: 265 seconds]
menad has quit [Remote host closed the connection]
NotThatRPG has quit [Ping timeout: 244 seconds]
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
mgl has quit [Ping timeout: 252 seconds]
random-nick has quit [Ping timeout: 260 seconds]
random-nick has joined #commonlisp
triffid has quit [Remote host closed the connection]
lucasta has joined #commonlisp
shka has quit [Ping timeout: 248 seconds]
chomwitt has joined #commonlisp
triffid has joined #commonlisp
NotThatRPG has joined #commonlisp
JuanDaugherty has joined #commonlisp
shawnw has joined #commonlisp
st_aldini has joined #commonlisp
alcor` is now known as alcor
alcor has quit [Changing host]
alcor has joined #commonlisp
JuanDaugherty has quit [Quit: JuanDaugherty]
yitzi has joined #commonlisp
Akbar-Birbal has left #commonlisp [#commonlisp]
mgl has joined #commonlisp
yitzi has quit [Ping timeout: 260 seconds]
yitzi has joined #commonlisp
yitzi has quit [Client Quit]
yitzi has joined #commonlisp
lucasta has quit [Remote host closed the connection]
Posterdati has quit [Remote host closed the connection]
msv has joined #commonlisp
Posterdati has joined #commonlisp
Noisytoot has quit [Ping timeout: 246 seconds]
varjag has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
amb007 has joined #commonlisp
NotThatRPG has joined #commonlisp
NotThatRPG has quit [Client Quit]
Inline has quit [Quit: Leaving]
NotThatRPG has joined #commonlisp
NotThatRPG has quit [Client Quit]
JuanDaugherty has joined #commonlisp
Pixel_Outlaw has joined #commonlisp
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
neuroevolutus has joined #commonlisp
NotThatRPG has joined #commonlisp
NotThatRPG has quit [Client Quit]
chomwitt has joined #commonlisp
NotThatRPG has joined #commonlisp
shka has joined #commonlisp
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
JuanDaugherty has quit [Quit: JuanDaugherty]
cage has quit [Quit: rcirc on GNU Emacs 29.4]
NotThatRPG has joined #commonlisp
NotThatRPG has quit [Client Quit]
NotThatRPG has joined #commonlisp
mathrick has quit [Ping timeout: 276 seconds]
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
NotThatRPG has joined #commonlisp
wacki has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
notzmv has joined #commonlisp
<NotThatRPG>
paulapatience: Thanks for filing those issues.
mgl has quit [Ping timeout: 252 seconds]
cmack has quit [Ping timeout: 260 seconds]
<paulapatience>
NotThatRPG: My pleasure.
<NotThatRPG>
It's really helpful; wish I could fix these things more rapidly...
<paulapatience>
I mean, I could submit a PR for both of those if that would help. Is there anything specific to do beyond submitting the PR? Like tests and such?
<paulapatience>
What would be a good adjective describing a type of class whose instances are meant to just hold information? In other words, all slots have only readers (the instances are immutable) and they all have trivial readably printable representations, e.g., #.(make-instance 'class-name initargs...).
<paulapatience>
I thought of naming them data-classes, similar to Python's @dataclass decorator. Or plain-class.
<paulapatience>
But I'm not entirely satisfied.
Noisytoot has joined #commonlisp
<susam>
struct? structure? record?
<aeth>
no, structs are structs (defstruct)
<aeth>
"record" may work
neuroevolutus has joined #commonlisp
pillton has joined #commonlisp
alcor has quit [Remote host closed the connection]
alcor has joined #commonlisp
neuroevolutus has quit [Ping timeout: 256 seconds]