attila_lendvai has quit [Ping timeout: 252 seconds]
karlosz has joined #commonlisp
leo_song has quit [Read error: Connection reset by peer]
leo_song has joined #commonlisp
linfocito has joined #commonlisp
karlosz has quit [Quit: karlosz]
waleee has quit [Ping timeout: 240 seconds]
ec has joined #commonlisp
waleee has joined #commonlisp
s-liao has joined #commonlisp
Devon has quit [Remote host closed the connection]
morganw has quit [Remote host closed the connection]
gxt has quit [Ping timeout: 276 seconds]
gxt has joined #commonlisp
random-nick has quit [Ping timeout: 256 seconds]
IPmonger has joined #commonlisp
IPmonger has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
lisp123 has quit [Ping timeout: 250 seconds]
wyrd has quit [Ping timeout: 276 seconds]
Guest74 has quit [Quit: Connection closed]
<AeroNotix>
opinions: what is "the best" (your interpretation of) package to look at for good cffi API/bindings.. something which goes beyond just providing symbols for the raw functions to a bound library
<AeroNotix>
I've wrote a few packages like this and have never felt fully satisfied with the end product
borodust has quit [Remote host closed the connection]
borodust has joined #commonlisp
borodust has quit [Remote host closed the connection]
MajorBiscuit has joined #commonlisp
borodust has joined #commonlisp
Dynom has joined #commonlisp
gaqwas has quit [Ping timeout: 256 seconds]
scymtym has joined #commonlisp
gxt has quit [Remote host closed the connection]
gxt has joined #commonlisp
occ has quit [Read error: Connection reset by peer]
karlosz has quit [Ping timeout: 240 seconds]
dre has joined #commonlisp
s-liao has joined #commonlisp
xsperry has quit [Ping timeout: 250 seconds]
pingpongball has quit [Ping timeout: 256 seconds]
mon_aaraj has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
Cymew has quit [Ping timeout: 240 seconds]
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 256 seconds]
<mfiano>
Hello all.
<mfiano>
In a function of mine, I have an #'equal hash table, and I am checking if some key (a list) is present, if so, returning the value, and if not performing an expensive operation to calculate the value, before storing it and returning it...
cosimone has quit [Remote host closed the connection]
kathe has joined #commonlisp
<kathe>
hello everyone. :)
<mfiano>
A simple cache if you will. The key to test for is bound to a lexical variable stored with (list ...), and I would like to declare this variable as dynamic-extent for optimization purposes. In the second branch, the part that stores the key and calculated value if it doesn't exist, should I #'copy-list or #'copy-tree, and is this enough to not have any stack-allocated memory escape the
<mfiano>
function?
pingpongball has joined #commonlisp
treflip has joined #commonlisp
<saturn2>
mfiano: you have to copy all otherwise inaccessible parts of your list
<mfiano>
Luckily they are not aggregate elements.
<mfiano>
Just symbols
<saturn2>
if they're interned symbols then copying the list structure should be enough
<mfiano>
Ok, thanks.
kathe has left #commonlisp [#commonlisp]
rain3 has quit [Ping timeout: 240 seconds]
notzmv has quit [Ping timeout: 250 seconds]
Guest4430 has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
<pingpongball>
is there any package system like pip for python , npm-yarn for js, cargo for rust,
<pingpongball>
what is for common list?
<pingpongball>
p
<jackdaniel>
it is quicklisp, see quicklisp.org
<pingpongball>
oh ok.
<pingpongball>
thanks
<jackdaniel>
mind that in common lisp we call such libraries "systems" while a "package" denotes a namespace
<jackdaniel>
i.e a single system may have multiple packages
<pingpongball>
oh ok :)
m5zs7k has quit [Ping timeout: 256 seconds]
<jackdaniel>
quite unfortunate name given that it introduces plenty of confusion, but it is what it is
m5zs7k has joined #commonlisp
jack_rabbit has joined #commonlisp
mgxm has joined #commonlisp
ebrasca` has joined #commonlisp
Noisytoot_ has joined #commonlisp
ASau` has joined #commonlisp
boro has joined #commonlisp
attila_lendvai has joined #commonlisp
jmpeax_ has joined #commonlisp
gjvc_ has joined #commonlisp
jackdani1l has joined #commonlisp
utis_ has joined #commonlisp
Dynom_ has joined #commonlisp
igemnace has quit [Quit: WeeChat 3.4]
jackdaniel has quit [Killed (NickServ (GHOST command used by jackdani1l!~jack@turtleware.eu))]
jackdani1l is now known as jackdaniel
jackdaniel has quit [Changing host]
jackdaniel has joined #commonlisp
borodust has quit [*.net *.split]
Dynom has quit [*.net *.split]
knusbaum has quit [*.net *.split]
aartaka has quit [*.net *.split]
amb007 has quit [*.net *.split]
phantomics has quit [*.net *.split]
ebrasca has quit [*.net *.split]
alvaro121 has quit [*.net *.split]
Noisytoot has quit [*.net *.split]
mister_m has quit [*.net *.split]
gjvc has quit [*.net *.split]
ullbeking_ has quit [*.net *.split]
Posterdati has quit [*.net *.split]
utis has quit [*.net *.split]
Colleen has quit [*.net *.split]
dbotton has quit [*.net *.split]
froggey has quit [*.net *.split]
mgxm_ has quit [*.net *.split]
ASau has quit [*.net *.split]
contrapunctus has quit [*.net *.split]
stack1 has quit [*.net *.split]
cross_ has quit [*.net *.split]
danieli has quit [*.net *.split]
Shinmera has quit [*.net *.split]
jmpeax has quit [*.net *.split]
russe has quit [*.net *.split]
les_ has quit [*.net *.split]
TMA has quit [*.net *.split]
hubvu_ has quit [*.net *.split]
skyl4rk has quit [*.net *.split]
materialfuture has quit [*.net *.split]
aartaka has joined #commonlisp
pillton has quit [Quit: ERC (IRC client for Emacs 27.2)]
Posterdati has joined #commonlisp
amb007 has joined #commonlisp
ullbeking_ has joined #commonlisp
russe has joined #commonlisp
stack1 has joined #commonlisp
dbotton has joined #commonlisp
Colleen has joined #commonlisp
danieli has joined #commonlisp
cross_ has joined #commonlisp
TMA has joined #commonlisp
froggey has joined #commonlisp
Shinmera has joined #commonlisp
alvaro121 has joined #commonlisp
mister_m has joined #commonlisp
hubvu_ has joined #commonlisp
les_ has joined #commonlisp
skyl4rk has joined #commonlisp
materialfuture has joined #commonlisp
phantomics has joined #commonlisp
contrapunctus has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life has joined #commonlisp
specbot has quit [Remote host closed the connection]
minion has quit [Read error: Connection reset by peer]
specbot has joined #commonlisp
taiju has quit [Ping timeout: 245 seconds]
minion has joined #commonlisp
Brucio-61 has joined #commonlisp
cosimone has joined #commonlisp
Jing has joined #commonlisp
frgo has joined #commonlisp
Algernon69 has quit [Ping timeout: 240 seconds]
Algernon69 has joined #commonlisp
<pingpongball>
i was thinking what if someone replaced parens with indentation
<phoe>
pingpongball: #commonlisp is strictly on-topic with regard to Common Lisp the language
<beach>
pingpongball: Please don't post links without a description of what we might expect if we follow it.
<pingpongball>
oh fav programming langauge :)
<beach>
pingpongball: Then, what phoe said (twice).
<pingpongball>
yes i'll not post :)
<pingpongball>
only talk common lisp
<rotateq>
pingpongball: And one day you can also not just speak but think in it. :)
<pingpongball>
:)
<pingpongball>
i'm currently learning this lisp :)
<pingpongball>
pcl
<pingpongball>
rotateq , lets say if i finished basic common lisp, whats next?
<pingpongball>
it would be cool if i build something out of lisp
<beach>
pingpongball: Next, you learn idiomatic Common Lisp. This can be done from more books like PAIP, Keene, etc., or it can be done by reading existing code.
<pingpongball>
example
<jackdaniel>
minion: tell pingpongball about paip
<minion>
pingpongball: paip: Paradigms of Artificial Intelligence Programming. More about Common Lisp than Artificial Intelligence. Now freely available at https://github.com/norvig/paip-lisp
<pingpongball>
oh ok thanks
<pingpongball>
i was interested and written so many things in python+pytorch, it would be cool there
<rotateq>
Oh this is one of those wonderful timeless books. :)
lisp123 has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
mon_aaraj has quit [Ping timeout: 250 seconds]
mon_aaraj has joined #commonlisp
OlCe has joined #commonlisp
pingpongball has quit [Quit: "bye :* "]
notzmv has joined #commonlisp
mon_aaraj has quit [Remote host closed the connection]
mon_aaraj has joined #commonlisp
skeemer has joined #commonlisp
ec has quit [Ping timeout: 276 seconds]
ec has joined #commonlisp
mon_aaraj has quit [Ping timeout: 245 seconds]
monaaraj has joined #commonlisp
boro is now known as borodust
silasfox has quit [Quit: WeeChat 3.4]
occ has quit [Ping timeout: 245 seconds]
VincentVega has joined #commonlisp
vcarvalho has joined #commonlisp
<vcarvalho>
Greetings! I'm new using common lisp, and was trying to use the cl-glfw3 system when i stumbled onto a problem with window-hint. There is also an issue in the repo https://github.com/AlexCharlton/cl-glfw3/issues/33, but when trying to use something of the form of %glfw:window-hint, my window doesn't open up. What am i doing wrong?
<jackdaniel>
perhaps someone could point out what you are doing wrong if they had seen the code in question
<jackdaniel>
sometimes when you minimize the code to show to others the crux of the issue you may find the problem yourself
Cymew has joined #commonlisp
Guest4427 has joined #commonlisp
OlCe has quit [Remote host closed the connection]
Bike has joined #commonlisp
<Guest4427>
f
<Guest4427>
Sorry, that was just a misclick
<vcarvalho>
That's my bad, jackdaniel, here is the code in question https://pastebin.com/XfuU5NSF. I'm sure the issue is a gap in my knowledge
aartaka has quit [Ping timeout: 252 seconds]
s-liao has joined #commonlisp
monaaraj has quit [Remote host closed the connection]
<jackdaniel>
vcarvalho: the problem is that window-hint is declared to accept as the second argument an int, so it doesn't recognize the keyword :opengl-core-profile
monaaraj has joined #commonlisp
<jackdaniel>
you may either put there verbatim #x00032001
<jackdaniel>
or (cffi:foreign-enum-value '%glfw::opengl-profile :opengl-core-profile)
<jackdaniel>
also you should probably pull window hints into with-init-window
<jackdaniel>
otherwise you may have no context and error is waiting to hatch
cosimone has quit [Remote host closed the connection]
<vcarvalho>
Yep, that was it! Thanks for the help jackdaniel
parjanya has joined #commonlisp
<parjanya>
mornings! is there any usual way of defining a function to be called just before delete-package-ing its package? so it can finish off its processes, close connections etc
<Bike>
no. packages are just namespaces, not systems.
<jackdaniel>
sure
<jackdaniel>
parjanya: you may define your own function (defun delete-package* (package) (do-cleanup package) (delete-package package))
<jackdaniel>
("sure" was directed to vcarvalho)
<jackdaniel>
alternatively you could register a finalizer to the package, but there is no telling when it will be executed (if at all)
epony has quit [Read error: Connection reset by peer]
<parjanya>
jackdaniel: thanks, I was afraid so, but perhaps there were some hidden sorcery available : o )
<jackdaniel>
some implementations offer the "advice" abstraction that allows you to define :before and :after functions
<jackdaniel>
that said 1) it is not portable; 2) I'm not sure if it'd work with functions in CL package (due to the package lock)
occ has joined #commonlisp
<lisp123>
To add, it is relatively easy to add advices
<lisp123>
redefine DEFUN for your package where it looks up potential advice beforehand
cosimone has quit [Quit: ERC (IRC client for Emacs 27.1)]
<lisp123>
Now to get the exact same level of flexibility as CLOS will take much more work, although maybe theres a way to piggy back off generic functions
rotateq has quit [Remote host closed the connection]
aeth has quit [Ping timeout: 240 seconds]
aeth has joined #commonlisp
cross_ is now known as cross
attila_lendvai has quit [Read error: Connection reset by peer]
attila_lendvai has joined #commonlisp
AeroNotix has joined #commonlisp
<clos-encounters>
If I maphash over a synchronized hash table (in sbcl) is the lock held for the whole map or just for individual remhash / setf operations?
<AeroNotix>
clos-encounters: which synchronized hash table?
<AeroNotix>
I doubt it though, no matter what
<Bike>
an sbcl hash table with :synchronized, presumably
silasfox has quit [Quit: WeeChat 3.4]
<clos-encounters>
ya, in sbcl
<AeroNotix>
in that case I'd suggest reading the docs
<AeroNotix>
the :synchronized arg seems to has some 'interesting' clauses
<Bike>
yeah the docstring on maphash explains
<Bike>
"Consequences are undefined if HASH-TABLE is mutated during the call to MAPHASH [except for the current key]. This applies to all threads [...] even for synchronized hash-tables"
<AeroNotix>
clos-encounters: I think if it were me I'd avoid things like :synchronized
<AeroNotix>
reasoning is that 1) it's implementation-specific and 2) it feels much safer to wrap entire blocks of operations with a mutex
<AeroNotix>
but ultimately up to you, of course
<AeroNotix>
clos-encounters: bordeaux-threads has rw-locks, too
<AeroNotix>
hmm I may be wrong about RW locks, looking now
_73 has joined #commonlisp
<clos-encounters>
AeroNotix: Yeah I agree. I'm already in the middle of switching to an unsynchronized table and managing concurrent access more expliclty.
<AeroNotix>
I'd be interested to see why SBCL added that :synchronized option
<jackdaniel>
synchronization of hash table access may be more robust than "slap a mutex over it"
<AeroNotix>
jackdaniel: for some definition of robust?
<clos-encounters>
I thought, hey, if maphash already locks the table, then I might as well use it. But I see that holding a lock for a whole map is a much less sensible default.
<clos-encounters>
I see that as of last month :sychronized is no longer marked as an experimental option.
<jackdaniel>
AeroNotix: locking is usually quite slow
<AeroNotix>
jackdaniel: I can't imagine that :synchronized tables are much faster though
<jackdaniel>
well, imagination is something that can be trained I believe
<AeroNotix>
clos-encounters: there is sb-ext:with-locked-hash-table too
<Bike>
there are lock free hash table implementations, though sbcl's is not one
<AeroNotix>
right.. if it were lock-free they'd have called it out - 'synchronized' (to me) implies a big fat mutex
<_73>
Say I have a class slot that only makes sense if it is of a certain type is there any reason not to specify a :TYPE in the slots specifier? I ask because I have seen a lot of other peoples code where they don't specify a :TYPE in this situation.
<jackdaniel>
Bike: ccl offers a lockfree synchronization
<Bike>
oh, really? that's cool
lambdart has joined #commonlisp
<mfiano>
_73: It is not guaranteed to be checked, as with most type declarations, it is implementation-dependent.
<mfiano>
_73: Some implementations, like SBCL, will check it at runtime, others, will not.
<jackdaniel>
(you may still use a lock or nothing at all - depending on parameters)
<AeroNotix>
sbcl uses sb-thread:mutex
<jdz>
mfiano: I think CCL does check, SBCL might need some specific safety level (that's more than 1) to do that.
<mfiano>
_73: I think it would be better to define auxiliary methods on initialize-instance or similar generic functions to do the type checking yourself.
<mfiano>
Why rely on some or most implementation's behaviors when you can do it for all quite easily?
<_73>
mfiano: Ok that makes sense
<mfiano>
via check-type, assert, or your own thing
<jackdaniel>
well, that should be checked also on (setf slot-value)
<jackdaniel>
(and that could be implemented with mop too - given that you subclass standard-effective-slot-definition and specialize on that)
<mfiano>
If you are exporting slots to your public interface, you have other problems, as they are implementation details...unless you really know what you're doing I guess.
<jackdaniel>
accessors resolve to (setf slot-value) underneath
<beach>
Are you sure about that?
<mfiano>
Depends on the class
<mfiano>
slot-value is undefined on instances of structure-class.
Guest4494 has joined #commonlisp
<beach>
Also, in some cases it is possible to use a faster path by doing STANDARD-INSTANCE-ACCESS directly.
<mfiano>
Yes, I have a metaclass for this. I feel dirty whenever I bring standard-class closer to structure-class semantics though, as I am giving up some interactivity in the process.
<fe[nl]ix>
AeroNotix: adding RW locks is on the roadmap, but I can't give you a timeline
waleee has joined #commonlisp
<jackdaniel>
1) I've assumed standard-class, 2) using standard-instance-access will work on standard-efficient-slot-definition but is not guaranteed to work on its subclasses (that's why slot-value-using-class is specified I believe)
<beach>
*effective
<jackdaniel>
and yes, if you do low level access, then I wouldn't expect type checks
<jackdaniel>
yes, effective*
Guest74 has joined #commonlisp
<jackdaniel>
and, without certainity but with a strong conviction I believe that accessor defined by the defclass form on a subclass of standard-effective-slot-definition will call slot-value-using-class
<jackdaniel>
s/ I believe/, I believe/
<jackdaniel>
(possibly indirectly via slot-value)
Devon has joined #commonlisp
amk has quit [Remote host closed the connection]
amk has joined #commonlisp
aeth has quit [Ping timeout: 240 seconds]
<jcowan>
Lock-free is all very well, but it doesn't solve the problem of transactions. I would use it only when the transaction size is 1 operation, now and forever. Its utility also depends on whether contention is actually commonplace: if not, you might as well pay the price for a mutex given that you won't be paying it often
<jcowan>
It's considerations like these that caused Sun/Oralce to deprecate (almost?) all of its locking classes like Vector and Hashtable.
aeth has joined #commonlisp
<jackdaniel>
it seems that when the slot type is not T, then a portable program can't use standard-instance-access, because the slot is not "directly accessible"
<jackdaniel>
according to the section "instance structure protocol" in amop
Noisytoot_ is now known as Noisytoot
epony has joined #commonlisp
lisp123 has joined #commonlisp
_73 has left #commonlisp [ERC (IRC client for Emacs 27.2)]
lisp123 has quit [Ping timeout: 256 seconds]
pingpongball has joined #commonlisp
<luis>
AeroNotix: yes
aeth_ has joined #commonlisp
<luis>
I've just come across https://github.com/m2ym/trivial-types which seems neat and useful. No one appears to have stepped up to maintain it. fe[nl]ix et al: any objections to forking this into the sharplispers github?
Cymew has quit [Ping timeout: 256 seconds]
NotThatRPG has joined #commonlisp
aeth has quit [Killed (NickServ (GHOST command used by aeth_))]
<AeroNotix>
luis: seems like the digikar99 is a fork, which has additional work on it
<AeroNotix>
as of ~3 months ago, which in CL terms is extremely recent
<AeroNotix>
seems like it's 'maintained' to me, at least there
<luis>
Better than maintained than CFFI possibly! I'm still confused by the two sources, though.
<AeroNotix>
I'm quickloading it to see which source it actually pulls in
<AeroNotix>
luis: seems potentially like it pulls in the m2ym source
<edgar-rft>
the first link (m2ym) says: This repository has been archived by the owner. It is now read-only.
<luis>
edgar-rft: yes, indeed, which is why I'm trying to find out if anybody's stepped in to maintain the project. Seems like digikar99 may have, but quicklisp is apparently not picking it up.
<AeroNotix>
luis: oh I dunno, this actually looks like the digikar99 source
<AeroNotix>
luis: no, I was wrong -- the source I have locally is the digikar99 fork
<luis>
lisp-maintainers says it's an "open org" but it doesn't have any public members
<edgar-rft>
luis: to me it looks as if problems had been found with the original code which was unmaintained, so digikar99 forked the project an added some bugfixes (but Xach prpbably knows better than me).
<AeroNotix>
is where the digikar99 fork was placed into quicklisp
<phoe>
AeroNotix: I don't think it's a list of people actively participating in that github org, more just another list of lispers that can be donated to
<Guest74>
maybe sharplispers would like to take over this https://github.com/JMC-design/clx-cursor . Another of mikhail's deleted repositories. I don't do any maintenance on it.
<phoe>
Guest74: how much software depends on it?
<Guest74>
no idea. I don't maintain it. I just fork repositories that may disappear.
<AeroNotix>
that just gives the tar.gz of the quicklisp package
<phoe>
huh
<phoe>
no idea then
<AeroNotix>
I want the original git repo
<phoe>
minion: tell pingpongball about pcl
<minion>
pingpongball: look at pcl: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
<pingpongball>
yes i'm on my way:)
<AeroNotix>
phoe: even grepping all files within the quickisp dir doesn't reference the repo itself, I think it literally just isn't included alongside the source code.
<Guest74>
anybody who uses multilanguage input have any links to an informative read on how to do that on linux? I'm trying to add support and can't find relevant stuff in the kernel.
<etimmons>
I opened that issue, but have not had any time to poke at it
<AeroNotix>
I'll give it a go just using your container image + running the bootstra.sh script directly, I'm interested if it Just Works
<AeroNotix>
otherwise I entirely cannot be bothered to even poke at this
<etimmons>
I've been trying to keep package names up to date between Debian versions, but given that the debian-9 package list is four years old at this point, there's almost certainly foreign deps missing for new QL systems
<etimmons>
(the debian-9 package list in the ql-controller repo, that is)
<AeroNotix>
I wonder how Xach maintains it all
<AeroNotix>
I do truly feel sorry for them that likely this is a bunch of unpaid and underappreciated work that is mostly done solo
<AeroNotix>
whereas it provides incredible, modern features to the CL ecosystem
<etimmons>
I wanna say I've seen him mention Docker at some point. But that could have just been a fever dream
<AeroNotix>
I think ql single-handedly brought the CL ecosystem lightyears ahead, in terms of dependency management
<AeroNotix>
which is a huge part of the development lifecycle
<etimmons>
Yep. I started using CL after QL was already on the scene. So I have not first-hand experience, but from what I can gather, things were not pretty beforehand
<etimmons>
* no
<AeroNotix>
the wild west
<AeroNotix>
etimmons: your docker image is a chunky monkey
<etimmons>
6 implementations and a crapload of foreign deps will do that
monaaraj has quit [Quit: WeeChat 3.4]
<AeroNotix>
luis: I put up a couple of cffi PRs, if you have time to take a gander
mon_aaraj has joined #commonlisp
<etimmons>
I also have much more streamlined ones that contain a single impl and only common foreign deps
Algernon69 has quit [Quit: Leaving]
pranavats has left #commonlisp [Error from remote client]
<AeroNotix>
any way this all seems extremely ripe to just containerize it all for reproducibility
lisp123 has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<lisp123>
Bike: Thanks for your help a couple of days ago, I finally got it and and putting the final touches on my ordinary lambda list to function call macro
<Bike>
happy to help
* phoe
orders ELS tickets
<lisp123>
phoe: Attending in person?
<phoe>
lisp123: t, I will want to help organize the streaming on-site
<lisp123>
Nice, jealous - you will have a great time
<Shinmera>
oh, it's finally up?
<phoe>
Shinmera: what is finally up?
<Shinmera>
the registration
<phoe>
nope
Everything has joined #commonlisp
Guest74 has quit [Quit: Connection closed]
<Shinmera>
then what tickets are you ordering
<phoe>
the big steel bird ones
<Shinmera>
ah.
<phoe>
well, okay, they are not ELS tickets, right
<Xach>
etimmons: i have a way to dump all foreign dependencies, expressed as pathnames to shared libraries, i just don't do anything with that data (yet)
<Xach>
partly because pathnames to shared libraries is extremely os- and distro-specific
<Xach>
but it could be used to map back go package names on my specific os and distro
Devon has quit [Remote host closed the connection]
amb007 has quit [Ping timeout: 256 seconds]
Devon has joined #commonlisp
<jasom>
AeroNotix: agreed about quicklisp; prior to quicklisp if a system depended on any other systems, I would just write the 20% of it that I needed for myself as by experience that was faster than getting it to work. If the words "ASDF-INSTALL" appeared anywhere on the homepage, I backed away slowly without looking it in the eyes.
lottaquestions has joined #commonlisp
amb007 has joined #commonlisp
vcarvalho has quit [Ping timeout: 256 seconds]
mon_aaraj has quit [Ping timeout: 256 seconds]
karlosz has joined #commonlisp
Devon has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
* NotThatRPG
wishes he was going to ELS
mepy has quit [Quit: Leaving]
monaaraj has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
mon_aaraj has quit [Remote host closed the connection]
treflip has quit [Quit: good night!]
<ldb>
this year's?
monaaraj has quit [Ping timeout: 260 seconds]
monaaraj has joined #commonlisp
<NotThatRPG>
ldb: Yes.
Brucio-61 has joined #commonlisp
lottaquestions has quit [Ping timeout: 240 seconds]
<jcowan>
jackdaniel: Yes, otherwise they are not copyrightable (mere glyphs are not, in the U.S. at least)
wyrd has quit [Remote host closed the connection]
unyu has quit [Quit: WeeChat 3.4]
OlCe has joined #commonlisp
lottaquestions has joined #commonlisp
kevingal has quit [Remote host closed the connection]
OlCe has quit [Ping timeout: 256 seconds]
ldb has quit [Quit: ERC (IRC client for Emacs 27.2)]
<jackdaniel>
that's a very poor reason for that
unyu has joined #commonlisp
aeth_ has joined #commonlisp
aeth has quit [Killed (NickServ (GHOST command used by aeth_))]
aeth_ is now known as aeth
amb007 has quit [Ping timeout: 250 seconds]
<jackdaniel>
text rendering is already ridiculus even without purposeful obfuscation
amb007 has joined #commonlisp
vcarvalho has joined #commonlisp
mepy_ has joined #commonlisp
<dbotton>
Is there any general document anyone knows concerning thread safety in lists and hashes (at the least) on SBCL and ECL?
<jackdaniel>
I don't think so, but both have: a) threading primitives (mutexes etc), 2) synchronized hash tables (both through locks), 3) extensible cas operators (i.e atomic-push, atomic-pop)
hineios has joined #commonlisp
<AeroNotix>
I'd also look at what (if anything) the spec says regarding these types of things, vs any implementation-specific details
<phoe>
the spec doesn't
<jackdaniel>
the standard doesn't concern itself with concurrency at all
<phoe>
it ignores the multiprocessing aspect completely
<AeroNotix>
shame
<dbotton>
time when it was done
<dbotton>
I was looking for something written up in general to know if to write one
<lisp123>
quick question
<jackdaniel>
Bike works on a memory model document for common lisp, but I don't know how advanced it is
<jackdaniel>
and whether it is the thing you are looking for
<lisp123>
I can't do (defgeneric abcd (xyz &optional (something default))) right?
<Bike>
nobody claims to conform to it anyway, so
<lisp123>
Does it go into the defmethod?
<Bike>
lisp123: nope. defaults are per method.
<AeroNotix>
Bike: you got a link to that document
<lisp123>
Bike: thanks
<dbotton>
CLOG makes heavy use of multiprocessing so looking to introduce people to issues and solutions that are unfamiliar
<Bike>
lemme dig through my gists here...
<dbotton>
maybe a multiprocessing in lisp for beginners
<jackdaniel>
dbotton: sbcl and ecl have an extension :synchronized t
<jackdaniel>
ccl has :shared key that defaults to a synchronized hash table
<AeroNotix>
they appear to be asking for a library which provides a cross-platform interface to those
kpoeck has quit [Client Quit]
karlosz has quit [Ping timeout: 240 seconds]
<Bike>
oh, and there actually is a very brief mention of concurrency in the standard: the description of the abort restart mentions that "in some [...] multi-processing situations" it should maybe just kill the process instead of returning to the REPL or whatever
<Bike>
problem solved
<jackdaniel>
(defun make-hash-table* (&rest args) #+(or sbcl ecl) (apply #'make-hash-table :synchronized t args) #-(or sbcl ecl) (make-hash-table)) here
<jackdaniel>
a portability library
<AeroNotix>
jackdaniel: doesn't work on acl
<AeroNotix>
;)
amb007 has quit [Ping timeout: 240 seconds]
lisp123 has quit [Ping timeout: 256 seconds]
<jackdaniel>
so?
<random-nick>
you can also add mezzano to that list
phantomics has quit [Quit: Ex-Chat]
<dbotton>
perfect thanks
mon_aaraj has quit [Remote host closed the connection]
mon_aaraj has joined #commonlisp
<random-nick>
also, wouldn't you want to use a mutex in case of unknown implementation support?
<Bike>
you might have an application where mutexes are actually too slow
rain3 has quit [Ping timeout: 245 seconds]
cage has quit [Quit: rcirc on GNU Emacs 27.1]
Dynom_ has quit [Quit: WeeChat 3.4]
gaqwas has joined #commonlisp
vcarvalho has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
karlosz has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
gaqwas has quit [Remote host closed the connection]
<Josh_2>
Rip didn't realize that dex:delete didn't handle the :content key, guess thats a problem of using apply, no warning :(
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
<Bike>
should still have been signaled unless allow-other-keys is also involved
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
mon_aaraj has quit [Ping timeout: 240 seconds]
mon_aaraj has joined #commonlisp
ASau` has quit [Quit: ERC (IRC client for Emacs 25.3.1)]
ASau has joined #commonlisp
<phoe>
or unless your safety is zero for some miraculous reason
<phoe>
...why did it not fail on &key valiation then?
<phoe>
dex:delete does not have &allow-other-keys on its own, maybe it's something that calls it?
triffid has quit [Quit: triffid]
<Josh_2>
Well I was using dex:delete with apply, and the args list contained a :content key, I received no errors
<Josh_2>
I only just realized that the :content was not being used
<phoe>
very weird
amb007 has quit [Ping timeout: 240 seconds]
triffid has joined #commonlisp
<phoe>
does your arg list contain :allow-other-keys?
amb007 has joined #commonlisp
<Josh_2>
Nope
<Josh_2>
It is '(:headers ... :content ...))
Brucio-61 has quit [Ping timeout: 250 seconds]
<phoe>
(sb-ext:describe-compiler-policy) ?
scymtym has quit [Ping timeout: 250 seconds]
<phoe>
what is your safety/debug?
<hashfunc102e>
I have one SBCL process running on my machine. I have one Emacs process running on my machine. I have one Slime-REPL running on my one Emacs process. I want to open another Emacs process/Slime-REPL on my machine, and connect it to the one SBCL process running on my machine. Is this possible?
<phoe>
hashfunc102e: yes
<phoe>
create a new Swank server and M-x slime-conect to it
<Josh_2>
phoe: I haven't changed the default for SBCL
<hashfunc102e>
phoe: oh ok, maybe that's what I'm doing wrong. I didn't create the Swank server
<phoe>
Josh_2: so the default, 1
<Josh_2>
I guess so, safety 1 speed 1
<phoe>
hmmmm
<Josh_2>
I didn't realize that was the default, think I'd rather have safety 3, speed 1 :facepalm:
<Josh_2>
How do I set the safety and speed for an entire project? Declaim?
<phoe>
sb-ext:restrict-compiler-policy
<phoe>
declaim has undefined consequences and can leak out of the file
<Josh_2>
Right okay
<phoe>
I guess you could perform some witchcraft and use asdf's around-compile hook
amb007 has quit [Ping timeout: 250 seconds]
amb007 has joined #commonlisp
<phoe>
query the current policy, restrict the policy, unrestrict it back on exit
<phoe>
but that would be a bit overkill - I think it's better to restrict safety to something nonzero so you can e.g. load jonathan or jsown into your image without remorse
<phoe>
especially jsown
<hashfunc102e>
phoe: can you have more than one Emacs processes connect to the same Swank server?
<hashfunc102e>
*more than one Emacs process
<hashfunc102e>
*multiple Emacs processes
<phoe>
hashfunc102e: yes, but the server needs to be created with :dont-close t AFAIR
<phoe>
otherwise it will stop listening after a single connection
<hashfunc102e>
phoe: ahh, that must be what I'm running into
<NotThatRPG>
The around compile hook would give a portable solution instead of an sb-ext one....
<phoe>
NotThatRPG: portable, as in?
<Josh_2>
Safety and debug jammed at 3 now, thanks phoe :)
<NotThatRPG>
Using standard declarations.
<phoe>
AFAIK a DECLAIM inside the file can still leak out
<phoe>
and I don't think a portable solution would work
<NotThatRPG>
phoe: Can't we use the hook wrapper to wrap a normal declaration around compilation
<NotThatRPG>
?
<phoe>
a DECLAIM inside the compile hook will be overwritten by any toplevel DECLAIM in the source file
<phoe>
that's the problem
<NotThatRPG>
phoe: Yeah, if someone puts a declaim in the source file, then they presumably know why they did that.
<phoe>
RESTRICT-COMPILER-POLICY is stronger than DECLAIM - if safety is restricted to 3 then no (declaim (safety 0)) will have any effect
<phoe>
but, as long as you don't mind it - yes, that would work
<NotThatRPG>
Any declaration in the source code will shadow anything around.
<phoe>
the only issue is querying current compiler policy
<phoe>
as in, checking the current values of the stadard OPTIMIZE declarations
<phoe>
and you need implementation support for that
<NotThatRPG>
phoe: Why do you need to if you are going to just set them?
<phoe>
NotThatRPG: so that you can set them back after the file is done being compiled
<phoe>
so that a toplevel DECLAIM does not leak out of that file and everywhere else, like it does e.g. on Allegro IIRC
<phoe>
AFAIR luis had a horror story regarding this
<skeemer>
is there any place where i can learn tricks with higher order functions?
<NotThatRPG>
phoe: We don't need declaim, do we?
<phoe>
skeemer: I think Practical Common Lisp has some materials for that
<skeemer>
like the (select (where ( ...))) shown in practical common lisp?
<phoe>
NotThatRPG: "need", as in? some projects will do exactly this
<phoe>
you can call this, grab the values from runtime, then PROCLAIM them again
<phoe>
like, loop over each list and apply #'proclaim to it
mon_aaraj has quit [Ping timeout: 268 seconds]
lisp123 has quit [Ping timeout: 260 seconds]
<NotThatRPG>
phoe: Thanks, that's good.
mon_aaraj has joined #commonlisp
<phoe>
yes
nature has quit [Quit: leaving]
<phoe>
I assume it could sound like an ASDF feature - on implementations that have any sort of support for cltl2'a DECLARATION-INFORMATION, or any other sort of informing at runtime about the optimization policy, make sure to save the compiler policy before compiling a system and then restore it via PROCLAIM afterwards
<phoe>
no idea if it is going to break anything in practice, but hey, I'll accept *any* solution that works around jsown's madness
<phoe>
and we'll be finally able to say that ASDF systems on some implementations have file-local OPTIMIZE settings or something
amb007 has quit [Ping timeout: 260 seconds]
amb007 has joined #commonlisp
<fe[nl]ix>
phoe: ASDF3 is at the end of its journey, you can't stretch it much further
<fe[nl]ix>
I want better isolation, but it's getting harder and harder to shoehorn that into the ASDF3 model
<phoe>
fe[nl]ix: sure
<fe[nl]ix>
if you're interested, I could write down a design doc about a purely functional build system (similar to Bazel), but I can't implement it all myself
<phoe>
I'm interested, but I'll be somewhat free in 2023 earliest - CLR2 is gonna keep me busy
<phoe>
so, sure
<fe[nl]ix>
it could even perhaps accept most of ASDF3 syntax, except the imperative stuff
<fe[nl]ix>
what's CLR2 ?
<phoe>
Common Lisp Recipes, 2nd Edi(tion)
ebrasca` has quit [Remote host closed the connection]
<phoe>
;; sorry for the pun
<fe[nl]ix>
ah, książka
<phoe>
dokładnie
ebrasca has joined #commonlisp
<fe[nl]ix>
perhaps if I have a written doc I can find a gang to implement it
<fe[nl]ix>
i.e. students with way more free time than me
<fe[nl]ix>
:D
<phoe>
:D
<phoe>
either that or it's ASDF4 time to shine™
<phoe>
or both mayhaps
<phoe>
we'll see
wyrd has joined #commonlisp
<Josh_2>
Ooops, turning on safety 3 showed quite a few typing mistakes with defclass
<Josh_2>
ooppps
<phoe>
:D
ogamita has quit [Ping timeout: 256 seconds]
wmblathers has quit [Quit: Leaving...]
dec0d3r has joined #commonlisp
epony has quit [Ping timeout: 240 seconds]
lambdart has quit [Remote host closed the connection]
aartaka has joined #commonlisp
cosimone has quit [Quit: ERC (IRC client for Emacs 27.1)]
shka has quit [Ping timeout: 240 seconds]
jpl01 has joined #commonlisp
dre has joined #commonlisp
hashfunc102e has quit [Ping timeout: 268 seconds]
karlosz has quit [Ping timeout: 240 seconds]
occ has quit [Ping timeout: 250 seconds]
aartaka has quit [Ping timeout: 240 seconds]
Oddity has quit [Ping timeout: 240 seconds]
semz_ has joined #commonlisp
OlCe has quit [Ping timeout: 256 seconds]
semz has quit [Ping timeout: 250 seconds]
hashfunc11c4 has joined #commonlisp
pve has quit [Quit: leaving]
epony has joined #commonlisp
igemnace has joined #commonlisp
waleee has quit [Ping timeout: 260 seconds]
attila_lendvai has quit [Ping timeout: 256 seconds]
semz_ is now known as semz
tyson2 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
ec has quit [Ping timeout: 276 seconds]
ec has joined #commonlisp
hashfunc11c4 has quit [Remote host closed the connection]