libera/#commonlisp - IRC Chatlog
Search
7:01:44
_death
minion: memo for scymtym: you're right, there is :drag-callback.. it was something different that I can't recall at the moment
7:29:17
Qwnavery
Hello, if someone has a moment to spare; I'm having some trouble getting quicklisp to recognize foreign libraries
7:34:32
_death
if you have the libsqlite3 shared library somewhere, you can check that the loader/cffi find it, see /etc/ld.so.conf and cffi:*foreign-library-directories* respectively
7:37:36
_death
oh right, ancient uffi.. well, it has *foreign-library-search-paths* according to that form
7:37:59
Qwnavery
pvi it's installing, is there any reference for it or is it apart of the standard lib?
7:40:19
pve
Qwnavery: can you do (defparameter *DB* (sqlite:connect "mydatabase.db")), for instance?
7:43:10
Qwnavery
Yeah, is there any tangible performance benefit for using clsql for sqlite over sqlite?
7:43:35
Qwnavery
if not then it's probably not worth trying to get foreign librarys working that's all
7:46:56
Qwnavery
you can tell, yeah I'm new. Apologies for being a nuisance. Thanks for your time. Really appreciated.
9:09:18
pl
Anything particularly noteworthy in changes to common libs, implementations? I feel a bit behind on news
9:10:54
beach
pl: The WSCL effort is well on the way: https://github.com/s-expressionists/wscl/tree/main/wscl-issues/proposed
9:14:01
beach
That's the main idea with WSCL, i.e., do not invent anything that the main existing implementations don't already do.
9:15:40
beach
Bike created some "issues" that don't quire belong in WSCL, and we don't quite know how and where to present those. They don't belong because they discuss extensions and/or radical changes.
9:20:22
lotuseater
pl: another very insteresting and well working project to notice is April by phantomics: https://github.com/phantomics/april
9:21:42
lotuseater
it seems reasonable it even now outruns Dyalog APL which is 500.000 lines of C++ o_O
9:23:04
moon-child
afaik it doesn't even do reference counting, which is necessary to get good-performing apl
9:25:46
pl
The one time I've seen refcounting and "faster than tracing GC" actually work out was I think in Linear Lisp
9:26:25
moon-child
First: apl tends towards small numbers of large objects, so the overhead of reference counting is lessened. Second: in apl, all object have value semantics. A statement such as 'x←y' is semantically a copy; however it can be implemented by making 'x' point to the same memory as that currently pointed to by 'y'. A statement like 'x ← x + y', then, can only be an in-place operation on the
9:27:29
moon-child
*small numbers of large _and homogenous_ objects--an array of fixnums, say--so you don't need to maintain a reference count fo revery element
9:28:58
moon-child
because you might create many references to some object, then delete all but one, at which point you should be able to perform operations on that object in place
9:29:11
lotuseater
getting GC right when implementing a CL is one of the more tricky parts, right? Roger Corman said so in his talk about Corman Lisp.
9:31:46
moon-child
lotuseater: gc is very touchy, yes; and design desiderata for GCs are somewhat application-specific
9:33:08
pl
moon-child: would there be many references, or rather, big space to scan? Or rather, can the array refer suddenly to somewhere else in the middle, or can one optimize by allocating "no outbound refs" arenas?
9:33:41
lotuseater
okay :) I thought about when one starts writing a language kernel in Rust, which does borrow checking and needs no GC, would the CL implementation still need GC? I think yes because of its very dynamic nature.
9:34:20
ecraven
lotuseater: it's not that Rust doesn't *need* a GC, it just doesn't have one.. many programmers might *like* one for some tasks, it just isn't there
9:34:26
pl
lotuseater: Ruat's propaganda doesn't change the fact that it runs a half-baked Linear Lisp GC
9:34:56
ecraven
also, you can write CL code that does not cons ("allocate memory") very much, so the GC would only run very infrequently
9:35:18
pl
And the end result is that when you get into complex data structures, you have to forsake safety
9:35:59
moon-child
pl: in apl we distinguish homogenous arrays (which contain only fixed-size numbers and characters) from nested arrays (which may contain other arrays). (And most arrays fall into the former category, so you do not need to scan very much.) _If_ you were doing tracing gc, it would make sense to allocate the former in a no-outbound-refs arena, but it doesn't make sense to do tracing gc with apl
9:36:05
beach
lotuseater: You can use the host GC only if you have your compiled code executed by the host. But that's not usually how a Common Lisp implementation works. It generates native code with its own ABI, so it needs its own GC.
9:36:35
lotuseater
A Rust enthusiast friend of mine told me the last time he was at my place he doesn't see lisp used or be adapted by industry now that Rust is. i showed him from time to time some magic. and then told him CL is in industry for now a long time, or isn't it?
9:36:40
moon-child
lotuseater: the semantics of lisp require a gc (or to leak memory); this is independent of the language you use to implement it. Rust's gc is not commensurate with lisp's semantics
9:36:42
flip214
QL leaves me with clon-1.0b25; but loading that (via QL) gives me "System "net.didierverna.clon.termio" not found"
9:36:55
pl
lotuseater: "GC" is the colloquiall name - the name of the art is "automatic memory management", and as much as I laud them for bringing half of a single GC design from mid-1990s into common usage, that's where my like ends
9:37:55
moon-child
pl: if steele brought the c++ programmers halfway towards lisp, rust is bringing them halfway towards ocaml/clean? ¯\_(ツ)_/¯
9:38:03
lotuseater
let alone be ACL2 in industry use for proving hardware or this DART system in the gulf war
9:39:05
moon-child
well, yes; as hayley points out, java also dragged the lisp programmers halfway back towards c++
9:39:40
lotuseater
they also find it funny when i say stuff like C and friends are just special purpose langs. or that IDEs seem to converge to emacs
9:41:30
beach
Industry seems determined to use languages with no independent standard, with a few exceptions.
9:42:34
lotuseater
beach: you once said it's not good using things with no or often changing/breaking standard, much more when legacy is needed in the long run
9:42:37
beach
And, as I emphasize in my industry talks, a project leader that chooses such a language should be fired.
9:43:59
pl
beach: to me, its funnier when some languages that get bad rep turn out to have standards XD, it's just not widely known outside of the community
9:44:37
pl
(for example Ruby, which has both an (outdated) ISO standard, and informal standard including test suite that allows existence of interoperable implementations)
9:46:23
lotuseater
or this mess with the C++ standard changing all three years, adapting things that are well known for 20+ years and even the experts don't know/understand everything o_O
9:48:08
moon-child
the existance of a standard is invaluable when making a new implementation of a language, but I think its more important role is as a statement of the values of the designers and community of a language
9:49:40
lotuseater
or when much is depending on that what you do with it. eg in medicine technology every line must be clearly justified
9:52:16
pl
moon-child: PyPy is rife with "this doesn't work, this works" for the last... 15 years or so? I think that's how old the project is
9:52:42
moon-child
ACTION sometimes feels as though his role in this channel is to play devil's advocate to beach
9:55:13
flip214
lotuseater: in the ASD there's a :depends-on with (:feature :net.didierverna.clon.termio net.didierverna.clon.termio)
9:55:35
pl
moon-child: there's simply a big difference between language with a test suite as target, and language with "you have to work exactly like this big hairy C function"