igemnace has quit [Remote host closed the connection]
<jmercouris>
thanks for your help moon-child
<jmercouris>
I will have to learn more about the MOP
igemnace has joined #commonlisp
waku has quit [Ping timeout: 256 seconds]
xaltsc has quit [Remote host closed the connection]
notzmv has quit [Ping timeout: 240 seconds]
igemnace has quit [Remote host closed the connection]
<Bike>
jmercouris: ensure-class is the more direct function equivalent to defclass. it will take care of the (setf (find-class ...)) part for one
waleee has quit [Ping timeout: 240 seconds]
waleee has joined #commonlisp
rotateq has quit [Quit: ERC (IRC client for Emacs 27.2)]
wyrd has quit [Ping timeout: 276 seconds]
igemnace has joined #commonlisp
waku has joined #commonlisp
wyrd has joined #commonlisp
tyson2 has joined #commonlisp
waku has quit [Ping timeout: 256 seconds]
igemnace has quit [Ping timeout: 240 seconds]
wyrd has quit [Ping timeout: 276 seconds]
waku has joined #commonlisp
wyrd has joined #commonlisp
igemnace has joined #commonlisp
waku has quit [Ping timeout: 240 seconds]
IPmonger has joined #commonlisp
miique has quit [Ping timeout: 256 seconds]
IPmonger has quit [Remote host closed the connection]
IPmonger has joined #commonlisp
IPmonger has quit [Remote host closed the connection]
tanners has quit [Quit: Quit]
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
waku has joined #commonlisp
monaaraj has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
waku has quit [Ping timeout: 240 seconds]
<beach>
Good morning everyone!
s-liao has joined #commonlisp
waleee has quit [Ping timeout: 256 seconds]
semz has quit [Ping timeout: 268 seconds]
perrierjouet has quit [Quit: WeeChat 3.4]
pillton has joined #commonlisp
semz has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
miique has joined #commonlisp
notzmv has joined #commonlisp
<fe[nl]ix>
morning beach :)
<fe[nl]ix>
is there an ASDF-based project that uses Github workflows to test on multiple implementations ?
x88x88x_ has quit [Quit: leaving]
<fe[nl]ix>
I need to copy working workflow configs from someone because figuring out Github docs is not trivial
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
<etimmons>
fe[nl]ix: probably worth looking at https://github.com/40ants/ci . But I can't speak to it's quality (I don't use GitHub Actions and even if I did, it looks too opinionated for my tastes)
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Quit: leaving]
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
x88x88x_ has joined #commonlisp
x88x88x_ has quit [Client Quit]
pranavats has left #commonlisp [Error from remote client]
pranavats has joined #commonlisp
waku has joined #commonlisp
<fe[nl]ix>
wow, that's rather unreadable
<fe[nl]ix>
but it's a start
tyson2 has quit [Remote host closed the connection]
waku has quit [Remote host closed the connection]
waku has joined #commonlisp
Bike has quit [Quit: Connection closed]
waku has quit [Ping timeout: 256 seconds]
Alfr has quit [Remote host closed the connection]
aartaka has joined #commonlisp
antonv has joined #commonlisp
Alfr has joined #commonlisp
Alfr has quit [Remote host closed the connection]
Alfr has joined #commonlisp
Alfr has quit [Remote host closed the connection]
Jing has joined #commonlisp
waku has joined #commonlisp
<jmercouris>
fe[nl]ix: take a look at Nyxt
<jmercouris>
We have that
s-liao has joined #commonlisp
akoana has quit [Quit: leaving]
jealousmonk has quit [Quit: ERC (IRC client for Emacs 27.1)]
beach` has joined #commonlisp
beach has quit [Killed (NickServ (GHOST command used by beach`!~user@2a01:cb19:150:3400:a173:2cef:ba0f:9b68))]
beach` is now known as beach
karlosz has joined #commonlisp
dre has quit [Ping timeout: 240 seconds]
rotateq has joined #commonlisp
aartaka has quit [Ping timeout: 240 seconds]
Oladon has joined #commonlisp
karlosz has quit [Quit: karlosz]
_whitelogger has joined #commonlisp
monaaraj has joined #commonlisp
peterhil has quit [Remote host closed the connection]
s-liao has quit [Ping timeout: 256 seconds]
waku has joined #commonlisp
waku has quit [Ping timeout: 256 seconds]
monaaraj has quit [Ping timeout: 240 seconds]
Algernon69 has joined #commonlisp
Algernon91 has joined #commonlisp
monaaraj has joined #commonlisp
Algernon69 has quit [Ping timeout: 240 seconds]
Oladon has quit [Quit: Leaving.]
amb007 has quit [*.net *.split]
igemnace has quit [*.net *.split]
makomo has quit [*.net *.split]
x88x88x has quit [*.net *.split]
psf has quit [*.net *.split]
thomaslewis has quit [*.net *.split]
joast has quit [*.net *.split]
z3t0 has quit [*.net *.split]
_death has quit [*.net *.split]
Patternmaster has quit [*.net *.split]
Mrtn[m] has quit [*.net *.split]
frodef has quit [*.net *.split]
Mandus has quit [*.net *.split]
Posterdati has quit [*.net *.split]
Spawns has quit [*.net *.split]
scymtym has quit [*.net *.split]
hineios has quit [*.net *.split]
sterni has quit [*.net *.split]
triffid has quit [*.net *.split]
unyu has quit [*.net *.split]
wyrd has quit [*.net *.split]
azimut_ has quit [*.net *.split]
gxt has quit [*.net *.split]
anticomputer has quit [*.net *.split]
Gnuxie has quit [*.net *.split]
cgenie[m] has quit [*.net *.split]
nworb has quit [*.net *.split]
amk has quit [*.net *.split]
yitzi has quit [*.net *.split]
pieguy12- has quit [*.net *.split]
gabc has quit [*.net *.split]
dcx has quit [*.net *.split]
xantoz has quit [*.net *.split]
even4void has quit [*.net *.split]
conjunctive has quit [*.net *.split]
zups has quit [*.net *.split]
lonjil has quit [*.net *.split]
linjian has quit [*.net *.split]
edmrk[m] has quit [*.net *.split]
rudi has quit [*.net *.split]
Colleen has quit [*.net *.split]
iquites has quit [*.net *.split]
gko has quit [*.net *.split]
ullbeking_ has quit [*.net *.split]
drmeister has quit [*.net *.split]
zephyr has quit [*.net *.split]
griffinmb has quit [*.net *.split]
lisp123win has quit [*.net *.split]
aeth has quit [*.net *.split]
jgkamat has quit [*.net *.split]
paul0 has quit [*.net *.split]
frgo has quit [*.net *.split]
alvaro121 has quit [*.net *.split]
hisacro has quit [*.net *.split]
Inline has quit [*.net *.split]
okflo has quit [*.net *.split]
Noisytoot has quit [*.net *.split]
contrapunctus has quit [*.net *.split]
mister_m has quit [*.net *.split]
srji has quit [*.net *.split]
bollu has quit [*.net *.split]
Shinmera has quit [*.net *.split]
utis has quit [*.net *.split]
stack has quit [*.net *.split]
snits has quit [*.net *.split]
mfiano has quit [*.net *.split]
dstein64 has quit [*.net *.split]
mzan has quit [*.net *.split]
specbot has quit [*.net *.split]
minion has quit [*.net *.split]
markasoftware has quit [*.net *.split]
Bi[m] has quit [*.net *.split]
sp has quit [*.net *.split]
katco has quit [*.net *.split]
luis` has quit [*.net *.split]
loke[m] has quit [*.net *.split]
dieggsy has quit [*.net *.split]
shinohai[m] has quit [*.net *.split]
ultera has quit [*.net *.split]
sirufer has quit [*.net *.split]
mht-wtf has quit [*.net *.split]
resttime has quit [*.net *.split]
vegai has quit [*.net *.split]
zbrown[m] has quit [*.net *.split]
jgart has quit [*.net *.split]
saturn2 has quit [*.net *.split]
spec has quit [*.net *.split]
edgar-rft has quit [*.net *.split]
Kabriel has quit [*.net *.split]
axvr has quit [*.net *.split]
sm2n has quit [*.net *.split]
easye has quit [*.net *.split]
dbotton has quit [*.net *.split]
payphone has quit [*.net *.split]
susam has quit [*.net *.split]
borodust has quit [*.net *.split]
fe[nl]ix has quit [*.net *.split]
froggey has quit [*.net *.split]
zacts has quit [*.net *.split]
epony has quit [*.net *.split]
kakuhen has quit [*.net *.split]
Spawns_Carpet[m] has quit [*.net *.split]
Arcsech has quit [*.net *.split]
luna-is-here has quit [*.net *.split]
empwilli has quit [*.net *.split]
MetaYan has quit [*.net *.split]
antoszka-r has quit [*.net *.split]
fitzsim has quit [*.net *.split]
dale has quit [*.net *.split]
GreaseMonkey has quit [*.net *.split]
mmk2410 has quit [*.net *.split]
copec has quit [*.net *.split]
drakonis has quit [*.net *.split]
lieven has quit [*.net *.split]
hirez- has quit [*.net *.split]
bldr has quit [*.net *.split]
nckx has quit [*.net *.split]
rdrg109 has quit [*.net *.split]
sepanko has quit [*.net *.split]
opalvaults[m] has quit [*.net *.split]
Duuqnd has quit [*.net *.split]
icepic1984[m] has quit [*.net *.split]
jaimelm has quit [*.net *.split]
theBlackDragon has quit [*.net *.split]
anddam has quit [*.net *.split]
selwyn has quit [*.net *.split]
jackdaniel has quit [*.net *.split]
samebchase has quit [*.net *.split]
les has quit [*.net *.split]
iisi has quit [*.net *.split]
fiddlerwoaroof has quit [*.net *.split]
krjst has quit [*.net *.split]
Fade has quit [*.net *.split]
thonkpod has quit [*.net *.split]
Algernon91 has quit [*.net *.split]
madnificent has quit [*.net *.split]
CodeBitCookie[m] has quit [*.net *.split]
akater[m] has quit [*.net *.split]
saltrocklamp[m] has quit [*.net *.split]
MatrixTravelerbo has quit [*.net *.split]
opc0de has quit [*.net *.split]
alanz has quit [*.net *.split]
sgithens has quit [*.net *.split]
sukaeto has quit [*.net *.split]
pok has quit [*.net *.split]
gendl has quit [*.net *.split]
Schnouki has quit [*.net *.split]
IUSR has quit [*.net *.split]
skn has quit [*.net *.split]
jfb4 has quit [*.net *.split]
phoe has quit [*.net *.split]
ChanServ has quit [*.net *.split]
jeosol has quit [*.net *.split]
spiaggia has quit [Quit: ERC (IRC client for Emacs 26.3)]
<beach>
What would be a good collective name for functions like that one ^, which return a class based on the class of some other object?
azimut_ has quit [Remote host closed the connection]
azimut has joined #commonlisp
<beach>
I need a term so that I can name a file in which to put some such definitions.
<pjb>
beach: what kind of definitions?
<moon-child>
'class mappings', perhaps? Though that is not entirely unambiguous
<beach>
pjb: What I said a few minutes ago.
<pjb>
yes. Meta-slots?
pve has joined #commonlisp
<beach>
Slots? That doesn't sound right.
<pjb>
well, this is what you want to put in there, classes-of-slots.
<moon-child>
I think 'slots' is fine, but 'meta' is not. I would assume a metaslot accessor accessed some slot of an object's metaclass
<phoe>
metaclass accessors
<beach>
It's a fairly common situation. In Gsharp for instance, the kind of cluster that is allowed depends on the type of the staff.
<rotateq>
hm "meta" reversed is "Atem" and such also a German word which translates to "breath" :)
<beach>
In this case, it is for Trucler. The kind of variable/function/etc-description depends on the CLIENT argument.
<pjb>
Oh, but slot-definition-class is not the class of an individual slot, right? It's a class that will help define a set of slots for those instances?
<pjb>
beach: isn't slot-definition-class like a factory class?
<pjb>
so you could name the file factories.lisp
<phoe>
what's the difference between a factory and a metaclass though
<phoe>
standard-class is a factory of classes too if we think about it
<pjb>
Any object that can create new objects is a factory.
<beach>
In the case of the mop, it's the class of a class that determines the class of a slot-definition object.
<beach>
But that's just for the MOP.
<rotateq>
so with changing the slot-definition-class it's possible to change slot options and such?
<beach>
pjb: Yes, I guess it is like a factor.
<beach>
That's a good word for it.
<pjb>
beach: but as a class, the slot-definition-class can determine the class of all the slot-definition objects of an instance.
<beach>
Yes.
<pjb>
I assume there's a method on the slot-definition-class that takes a slot-definition argument to produce the class of the slot.
<pjb>
Perhaps slot-factories.
<beach>
Again, in general it is not about slots. Not in Trucler, and not in Gsharp.
<rotateq>
saw some example last week how to adjust behavior if a slot is touched, but didn't really get it yet
<phoe>
dependent metaclasses? something like that
<beach>
Ah, so it's a "factory function", i.e. a function that produces a factory.
<phoe>
a factory factory? so, a metafactory?
<beach>
Well, either the factory is a class or it's a function.
<beach>
Which one is it?
<rotateq>
phoe: when I tell people about what SETF is, then also mostly a factory for setters ^^
<loke[m]>
phoe: it's not metaclasses anymore. It's facebookclasses
<phoe>
beach: in the Lisp world I'd rather call a function a factory - MAKE-INSTANCE is what actually produces new stuff whereas classes are blueprints
<rotateq>
noooo loke[m] not that :D
<phoe>
in the Java world factories are classes but that's only because Java is so dumb that everything is forced to be a class
<beach>
OK, so it's "blueprint factories".
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<phoe>
rotateq: might be my code, I was working on this recently
rain3 has quit [Remote host closed the connection]
s-liao has quit [Ping timeout: 256 seconds]
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
VincentVega has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
monaaraj has quit [Read error: Connection reset by peer]
monaaraj has joined #commonlisp
nature has joined #commonlisp
iamFIREcracker has quit [Ping timeout: 240 seconds]
MajorBiscuit has quit [Ping timeout: 240 seconds]
bendersteed has quit [Ping timeout: 256 seconds]
frodef has quit [Ping timeout: 240 seconds]
frodef has joined #commonlisp
pillton has quit [Quit: ERC (IRC client for Emacs 27.2)]
waku has joined #commonlisp
waku has quit [Ping timeout: 240 seconds]
notzmv has quit [Ping timeout: 240 seconds]
igemnace has quit [Remote host closed the connection]
igemnace has joined #commonlisp
kevingal has joined #commonlisp
igemnace has quit [Remote host closed the connection]
bendersteed has joined #commonlisp
Alfr has joined #commonlisp
igemnace has joined #commonlisp
mgl has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
s-liao has joined #commonlisp
kevingal has quit [Ping timeout: 256 seconds]
igemnace has quit [Read error: Connection reset by peer]
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
tyson2 has joined #commonlisp
s-liao has quit [Quit: Ping timeout (120 seconds)]
s-liao has joined #commonlisp
euandreh has joined #commonlisp
perrierjouet has joined #commonlisp
dec0d3r has joined #commonlisp
perrierjouet has quit [Quit: WeeChat 3.4]
perrierjouet has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
MajorBiscuit has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
waku has joined #commonlisp
amb007 has joined #commonlisp
<ns12>
In Hunchentoot, are session data stored on one server only?
<ns12>
For example, I have server A and server B serving a web app. If server A creates a session using Hunchentoot, will server B have access to the session data?
<moon-child>
ns12: I believe 'JWT' is a solution to this
waku has quit [Ping timeout: 256 seconds]
<ns12>
moon-child: So, the session data is saved on the client instead of being saved on the server? Isn't there a limit to the amount of data that can be saved on the client?
<ns12>
Is this solution widely-used?
<moon-child>
'limit' sure. How much data do you want to store?
<moon-child>
I am not sure how you expect two servers to be able to share data with each other without any manual configuration
<ns12>
I mean, cookies are limited to around 4000 bytes each.
<moon-child>
what do you want to store?
<moon-child>
are you looking for a database?
myrrh has quit [Remote host closed the connection]
<ns12>
I am spoiled by web frameworks such as Django that have database-backed sessions by default. Thanks for the help.
IPmonger has joined #commonlisp
<moon-child>
I think fukamachi has some integrated web orm stuff
IPmonger has quit [Remote host closed the connection]
<flip214>
moon-child: much too complex. Or do you want to do a paxos for each user login?? NFS or a database is as simple as it gets.
<moon-child>
as I said: probably not the right thing in this instance
Bike has joined #commonlisp
monaaraj has quit [Remote host closed the connection]
monaaraj has joined #commonlisp
mon_aaraj has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
aphextwin has quit []
notzmv has joined #commonlisp
<ns12>
In the REPL, I can use up to three asterisks (*, **, and ***) to get the previous return values. Is there a way to get return values older than *** in the SBCL REPL? **** (four asterisks) is not valid ...
<pjb>
ns12: yes, there is a way.
azimut has quit [Remote host closed the connection]
<pjb>
With this REPL, you can use !-254 for the 254th previous expression.
<ns12>
The only solution is to use a custom REPL implementation?
<pjb>
If the implementation doesn't provide hooks to implement it otherwise, yes.
xsperry has quit [Remote host closed the connection]
xsperry has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
<Bike>
ns12: yeah, nothing standard.
<mfiano>
ns12: SLY has back-references, the feature that allows for referring to any previous value.
<mfiano>
In the REPL, a reader macro #v is available. #v0,1 means to retrieve the second return value of the first result in the REPL history.
jealousmonk has joined #commonlisp
<mfiano>
This also means that they are persistent, unlike the *'s.
<mfiano>
Up until you clear the REPL history that is, at which point the counters start from 0 again.
nature has quit [Ping timeout: 240 seconds]
varioust has joined #commonlisp
epolanski has joined #commonlisp
<flip214>
I just store values that I might be interested via (defparameter ...); and as all forms are written down in a file somewhere (for documentation purposes), I can just go back and wrap a (defparameter) around an old form easily
* phoe
is now officially a SBCL contributor
<moon-child>
;o
varioust has quit [Ping timeout: 276 seconds]
<phoe>
beach: the thing we talked about, regarding a rollback at a failed U-I-F-{R,D]-C, got merged into SBCL
mon_aaraj has quit [Ping timeout: 256 seconds]
<beach>
Congratulations!
<ns12>
mfiano: Is there similar functionality for SLIME?
<mfiano>
No
mon_aaraj has joined #commonlisp
<_death>
I have some read/eval hooks for slime repl.. you can use the eval hook to store and retrieve references
<_death>
*real/eval hooks patch
kevingal has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
* edgar-rft
wants a REPL reader macro for accessing values evaluated before 1958
<phoe>
you mean a macro for a punchcard reader?
amb007 has joined #commonlisp
<rotateq>
maybe other intelligent species have this with their version of CL
varioust has joined #commonlisp
waku has joined #commonlisp
waku has quit [Ping timeout: 256 seconds]
mon_aaraj has quit [Ping timeout: 240 seconds]
thomaslewis has left #commonlisp [#commonlisp]
IPmonger has joined #commonlisp
IPmonger has quit [Remote host closed the connection]
mon_aaraj has joined #commonlisp
morganw has joined #commonlisp
Dima[m] has joined #commonlisp
varioust has quit [Ping timeout: 276 seconds]
scymtym has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
lisp123 has quit [Read error: Connection reset by peer]
scymtym has joined #commonlisp
Algernon91 has quit [Read error: Connection reset by peer]
Algernon91 has joined #commonlisp
Algernon666 has joined #commonlisp
Algernon91 has quit [Ping timeout: 240 seconds]
kevingal has quit [Ping timeout: 240 seconds]
Algernon666 has quit [Ping timeout: 240 seconds]
scymtym has quit [Remote host closed the connection]
scymtym has joined #commonlisp
varioust has joined #commonlisp
fitzsim has quit [Read error: Connection reset by peer]
varioust has quit [Ping timeout: 276 seconds]
Everything has joined #commonlisp
mon_aaraj has quit [Ping timeout: 256 seconds]
mon_aaraj has joined #commonlisp
varioust has joined #commonlisp
Algernon666 has joined #commonlisp
Algernon91 has joined #commonlisp
loke has quit [Ping timeout: 240 seconds]
Algernon666 has quit [Ping timeout: 250 seconds]
OlCe``` has quit []
jstoddard has joined #commonlisp
dec0d3r has quit [Quit: Leaving]
OlCe has joined #commonlisp
cage has joined #commonlisp
bauripalash has joined #commonlisp
waku has joined #commonlisp
Algernon666 has joined #commonlisp
bauripalash has quit [Quit: Quit]
Algernon91 has quit [Ping timeout: 240 seconds]
amb007 has quit [Read error: Connection reset by peer]
waku has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
Oladon has joined #commonlisp
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
sander has quit [Ping timeout: 240 seconds]
bendersteed has quit [Remote host closed the connection]
varioust has quit [Quit: varioust]
sander has joined #commonlisp
fitzsim has joined #commonlisp
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
thomaslewis has joined #commonlisp
makomo has joined #commonlisp
dfluk_ has joined #commonlisp
<bollu>
Why does this use of let* not create a compiler error? When I write |(defgeneric errormsg (x)); (let* (x (errormsg nil)) x)| It compiles successfully and gives me the error |style-warning: The variable ERRORMSG is defined but never used.| But this is nonsensical. let* need TWO parens, not one.
treflip has quit [Quit: ERC (IRC client for Emacs 27.2)]
waleee has joined #commonlisp
Algernon666 has quit [Ping timeout: 240 seconds]
epolanski has quit [Quit: Connection closed for inactivity]
dfluk_ has quit [Quit: Leaving]
waku has joined #commonlisp
<bollu>
etimmons how do I convert ALL types of warnings into errors?
waku has quit [Ping timeout: 256 seconds]
<Josh_2>
catch a warning then signal a condition?
<White_Flame>
bollu: if the problem is that QL muffles them, you can pass an option to it to let all the warnings display, I think :verbose t
reb` has joined #commonlisp
<Josh_2>
I am deploying my lisp image, then as it loads the condition "Don't know how to REQUIRE sb-posix."
<White_Flame>
you probably need to require it before building your image
<Josh_2>
bit odd
<Josh_2>
Alright let me try that
<White_Flame>
since once you deploy, it's (potentionally) dislocated from wherever sbcl's install was
<White_Flame>
*potentially
<Josh_2>
So I should require in the build function?
<White_Flame>
or toplevel or whatever init or wherever you want :-P
<White_Flame>
just as long as it executes before you build your image
<Josh_2>
Right
Oladon has quit [Quit: Leaving.]
<Josh_2>
Okay I eval (require 'sb-posix) before the call to asdf:make but the deployed image still has the same problem
<Josh_2>
Alright
<Josh_2>
the problem seems to be with using clack
<Josh_2>
I commented out the code that starts the hunchentoot listener (using ningle) and the problem is now gone
theothornhill has joined #commonlisp
Guest2560 has joined #commonlisp
Guest2560 has quit [Client Quit]
<White_Flame>
yeah, some of those more frameworky libs do try to pull in libs lazily at runtime, and it's not good
tyson2 has joined #commonlisp
<White_Flame>
it effectively makes them non-deployable
<Josh_2>
hmm
<Josh_2>
What is the solution? Quickloading clack?
<Josh_2>
That means I can no longer just distribute a binary but the target system will also need quicklisp installed
theothornhill has quit [Remote host closed the connection]
theothornhill has joined #commonlisp
<White_Flame>
correct
<etimmons>
Josh_2: Clack has helper systems like "clack-handler-hunchentoot" those are the ones you need to explicitly load before dumping, IIRC
mgl has quit [Ping timeout: 256 seconds]
<Josh_2>
I see
<White_Flame>
it all depends on where the REQUIRE call is
<White_Flame>
it might be that at build time, you actually launch & shut down your server just to flex it in the build environment
<Josh_2>
Okay epic
<Josh_2>
that worked etimmons tyvm
<etimmons>
bollu: I'm confused about what you're actually trying to do. Do you want warnings while compiling to be treated as errors? ASDF already does this. If you want to do it not at compile time you need to wrap your code with a handler that resignals the warning as an error
<Josh_2>
White_Flame: Thanks for the info, I had not considered such things
<etimmons>
Josh_2: np. I've wrangled clack many times by now
<White_Flame>
I'm just spitballing :)
<White_Flame>
I gave up on clack pretty quickly :-P
<etimmons>
yeah, that's my current boat. I'm feed up with it and just using hunchentoot directly for the most part
<White_Flame>
someone else used the term "fukamachiware", and I think the label is meaningful
<Josh_2>
Yes
<Josh_2>
Although Woo is cool
<jackdaniel>
hunchentoot is a brilliant piece of software - its api is well thought and the code is very comprehensible
<etimmons>
agreed
<Josh_2>
if I want to be able to use Woo with my deployed app, I assume all the target system needs is libev?
<Josh_2>
Hunchentoot is great, but it is real slow :(
<jackdaniel>
is it though?
<Josh_2>
I like that with Ningle/Clack/Lack you can just swap between handlers
<Josh_2>
Yes it is. A blazing fast webserver written in CL would be quite the draw for many people
<jackdaniel>
I mean, you may of course run benchmarks and they will show that it is slower than say nginx or something, but do you have a load that makes it meaningful?
<Josh_2>
Right now tbnl is much slower than nodejs
<mfiano>
fukamachiware is not very good. Too many uses of #'ignore-errors and unresponsive maintainer. I just attributed it all to him being a lone wolf that moves quickly between his own interests, without caring about users.
<Josh_2>
I have run benchmarks on tbnl which come back similar on my machine
<White_Flame>
how fast do you need it? what's the minimum usable throughput?
<White_Flame>
who cares if one system can serve 100,000x your current load vs 10,000x
<jackdaniel>
Josh_2: not my point, when you say "really slow" I'd expect that it doesn't meet some tangible need, not that it is slower than something else
<Josh_2>
mfiano: doesn't he work for a japanese company using CL? I assume he uses his own libraries at work
<mfiano>
Josh_2: I don't know. I have waited years for his input on several bug reports, and gave up a long time ago.
<White_Flame>
also there's no comments or documentation, and he does weird things with passing around package names instead of using generics
<White_Flame>
making M-.'ing through the code extremely difficult
reb` has quit [Ping timeout: 240 seconds]
<jackdaniel>
you may always shave plenty of ms by replacing classes with structures, declaring speed 3, using ffi and some obscure hand-inlined code
<mfiano>
Let's not forget deeply nested closures instead of standard-objects
<Josh_2>
tbnl is great but it would be even greater if it could go faster than python :facepalm:
<jackdaniel>
isn't the current name "hunchentoot"?
<Josh_2>
yeh
<White_Flame>
seems to be the case for about 16 years now :-P
<Josh_2>
some of us are pretty slow to catch up :joy:
<jackdaniel>
no point in using old names, unless we want to talk about LISP, and that defclass is a clever macro that is used in some of its dialects
<Josh_2>
tbnl is still a valid nickname in the package, so I will keep saying tbnl ;)
<_death>
so I should make the switch from araneida? ;)
<Josh_2>
I dont see why we couldnt have an extremely fast web server which also has a great interface
* jackdaniel
still is curious whether you have a workload that makes hunchentoot unfeasible
<mfiano>
"great" is too subjective, and may conflict with "fast" to some people, especially those that think "great" coincides with generic functions all the way down.
<Shinmera>
because there's only so many people and so many hours in the day
<Josh_2>
Shinmera: yes pretty much
<Josh_2>
Personally I have gone from Ningle -> Hunchentoot -> Ningle
<_death>
it's not "slow" because of generic functions or using classes or no declarations..
<_death>
it's more the "select vs. epoll" type
dre has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
reb has joined #commonlisp
Kyuvi has joined #commonlisp
kevingal has joined #commonlisp
Algernon666 has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
aartaka has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
aartaka has joined #commonlisp
thomaslewis has joined #commonlisp
Kyuvi has quit [Ping timeout: 256 seconds]
varjag has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
karlosz has joined #commonlisp
dre has quit [Ping timeout: 240 seconds]
Algernon666 has quit [Read error: Connection reset by peer]
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
rogersm has quit [Quit: Leaving...]
waku has joined #commonlisp
waku has quit [Ping timeout: 240 seconds]
dre has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
theothornhill has quit [Remote host closed the connection]
dre has quit [Ping timeout: 268 seconds]
<phoe>
how can I check if a symbol names a method combination?
theothornhill has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
dre has joined #commonlisp
<_death>
there's find-method-combination if you know the gf
anticomputer_ is now known as anticomputer
theothornhill has joined #commonlisp
morganw has quit [Remote host closed the connection]
<rotateq>
Maybe phoe's question goes more the direction if for a symbol there even exists a method-combination that can be used with a generic-function.
theothornhill has quit [Remote host closed the connection]
<phoe>
^
<rotateq>
such as (method-combination-p 'progn) => T
<mfiano>
wouldn't you need to know the non-standard metaclasses for that?
<phoe>
I want to know if there ever was a DEFINE-METHOD-COMBINATION done with a given symbol passed as its name, that's all
<mfiano>
unlikely without looking through all gf's without some wrapper macro
<mfiano>
i could be wrong though.
theothornhill has joined #commonlisp
morganw has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
<_death>
doesn't look like sb-mop:find-method-combination cares about the gf though..
<phoe>
hmmmm
<phoe>
nice find
<_death>
maybe a particular gf metaclass could store them locally or even generate them dynamically?
mon_aaraj has quit [Ping timeout: 240 seconds]
<phoe>
(sb-mop:find-method-combination (sb-mop:class-prototype (find-class 'generic-function)) 'progn nil) works on this particular implementation
<phoe>
but breaks on CCL
<phoe>
oh well
mon_aaraj has joined #commonlisp
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
akovalenko has joined #commonlisp
theothornhill has joined #commonlisp
karlosz has quit [Quit: karlosz]
shka has quit [Ping timeout: 240 seconds]
Everything has quit [Quit: leaving]
wyrd has quit [Ping timeout: 276 seconds]
<theothornhill>
When using the %slot naming for clos slots, is it generally preferred to use with-accessors or with-slots when accessing these in the code? What is the reasoning to prefer one over the other?
waku has joined #commonlisp
wyrd has joined #commonlisp
dec0d3r has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
<phoe>
in what code?
<phoe>
if it's internal, then follow your logic
<theothornhill>
internally in your own code
<phoe>
if your accessors have logic assigned to them then use them
nature has joined #commonlisp
<theothornhill>
Right
<phoe>
if you know that you want to invoke no accessor logic and just set some slot value then use with-slots
<phoe>
or just SETF SLOT-VALUE directly
thomaslewis has joined #commonlisp
<phoe>
and if it's external, then use whatever exports have been provided
<theothornhill>
So that may mean that it might be smarter to use with-accessors, in case you want to extend the accessors to contain logic?
thomaslewis has left #commonlisp [#commonlisp]
<rotateq>
hm maybe when scoping one object of class FOO via a WITH-FOO macro that expands into a WITH-SLOTS form, when multiple foos after each other then via WITH-ACCESSORS cause it can be well distinguished then
waku has quit [Ping timeout: 256 seconds]
mon_aaraj has joined #commonlisp
<theothornhill>
because it lexically scopes them, you mean?
wyrd has quit [Ping timeout: 276 seconds]
<phoe>
theothornhill: correct - but then, it's you who is supposed to know whether accessors contain logic
<rotateq>
theothornhill: do you have an idea how WITH-SLOTS expands?
<phoe>
so it is up to you to decide that
thomaslewis has joined #commonlisp
<theothornhill>
rotateq: Yeah, but I'm sure you have something particular in mind?
<rotateq>
ehm no :) just that SYMBOL-MACROLET is very useful ^^
thomaslewis has left #commonlisp [#commonlisp]
<theothornhill>
Ah, I see :)
IPmonger has joined #commonlisp
IPmonger has quit [Remote host closed the connection]
<theothornhill>
Is there a hypothetical performance cost to with-accessors? I'm guessing that the compilers are smart enough for it not to matter, but maybe lots for accessing can be costly?
brandflake11 has joined #commonlisp
<rotateq>
yes it can be, but better think about correctness and comprehensibility first :)
rgherdt has quit [Ping timeout: 256 seconds]
<theothornhill>
Yes ofc :)
<rotateq>
hihi
<rotateq>
and can be funny (or confusing) when giving multiple slots in a class definition the same initarg ^^
wyrd has joined #commonlisp
<Bike>
in order to account for redefinition of accessor functions, practically speaking your compiler will probably not coalesce together multiple accesses
<phoe>
unless they're structure accessors for which the compiler may do that, especially if you declare them inline
nature has quit [Ping timeout: 256 seconds]
<Bike>
still probably not
<phoe>
oh
<rotateq>
hmm
<Bike>
it also has to account for the possibility of some other function or thread modifying the instance
<Bike>
meaning the separate reads should get separate values
<Bike>
this said, slot access is probably not going to cause as much slowdown as a bad algorithm
theothornhill has quit [Remote host closed the connection]
dra has joined #commonlisp
<Bike>
but like, imagine FOO is established by with-accessors, and then you have (loop while condition do (f ... foo ...)). in order for the compiler to move the read outside of the loop, it would have to know that both f and the condition can't possibly modify the instance being read
makomo has quit [Quit: WeeChat 3.3]
varjag has quit [Ping timeout: 256 seconds]
<Bike>
which would require knowing that the instance is not bound to any dynamic variables, not part of a closure f could possibly access, etc
<Bike>
pretty difficult
kevingal has quit [Remote host closed the connection]
phantomics has joined #commonlisp
theothornhill has joined #commonlisp
pillton has joined #commonlisp
varjag has joined #commonlisp
nij- has joined #commonlisp
wyrd has quit [Ping timeout: 276 seconds]
wyrd has joined #commonlisp
wyrd has quit [Client Quit]
random-nick has quit [Ping timeout: 256 seconds]
notzmv has quit [Ping timeout: 240 seconds]
<bollu>
Here's an sly-db annoyance I have. Say I'm at sly-db debugging some stack trace, and so I focus on the 7th stack frame, hit `e` to evaluate in the stack frame. I then type an unbound variable, which takes me to a sub-handler. When I quit this subhandler with 0: [ABORT] Return to sly-db level 1, the cursor has now moved to the 1st stack frame! Can
<bollu>
I make sly remember that I was in the 7th stack frame?
<phoe>
bollu: ask on the sly discussions page on github, or file an issue perhaps
<phoe>
the maintainer likes getting that sort of questions there
<bollu>
phoe this happens with slime as well FWIW
gaqwas has joined #commonlisp
<phoe>
then the fix could possibly be backported to slime too!
pve has quit [Quit: leaving]
wyrd has joined #commonlisp
thomaslewis has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
<phoe>
the way I read it and the way the glossary speaks, in this context an accessor is anything that is capable of performing reads and writes, like CAR or GETF
<phoe>
even if it isn't a function, like SETF of GETF
<yottabyte>
So are some things in lisp multithreaded by default, like let bindings? That's why they have let*, if you want the bindings evaluated sequentially?
<phoe>
so, by accessor logic, I mean anything more than performs more logic than just writing some value somewhere - can be typechecks, caching, computation, anything
<phoe>
yottabyte: lexical bindings are always thread-local
<phoe>
s/lexical/dynamic/
waku has joined #commonlisp
<phoe>
global bindings are usually global, and lexical bindings can be shared across threads via closures
<phoe>
also you seem to be confusing "multithreaded" with "parallel"
<yottabyte>
Well how are they evaluated in parallel if not in multiple threads?
<phoe>
the former implies multiprocessing, the latter simply means that latter bindings in a binding form cannot observe the effects of the former bindings