freenode/#lisp - IRC Chatlog
Search
11:34:59
phoe
Would there be interest in a CI service that runs tests on the Quicklisp-provided software?
11:36:22
phoe
Like, basically, a server that pulls bleeding-edge versions of software from the Quicklisp list and goes (asdf:test-system) on them
11:43:01
phoe
Xach: probably the biggest requirement for that is the thing we've discussed previously - a yes/no answer from ASDF:TEST-SYSTEM that tells us whether a test suite has succeeded or not
11:44:11
jackdaniel
phoe: cl-test-grid does that (it takes the last ql release though, you'd need to create a local "early" distribution)
11:44:56
Xach
taking the last ql dist has a huge amount of value too. i only test on sbcl on linux. more testing would help improve libraries and implementations.
11:48:13
jackdaniel
as some folks can see, I'm running it mainly for regression testing before a new release
11:52:01
pve
was there some conclusion in the discussion of getting a yes/no from asdf:test-system? (i missed it)
11:52:54
jackdaniel
it was implicit: I've tried to convey the information, that cl-test-grid gets the yes/no from the test-system
12:10:19
phoe
a daily test run on multiple implementation would likely spam the existing infrastructure with a lot of information
12:15:20
pve
am I wrong in thinking that the least amount of work would be needed if the major testing libraries were patched with a "we're running asdf:test-system now"-mode, which would result in them returning something like :success or :failure?
12:16:01
phoe
pve: depends on the systems' TEST-SYSTEM method - if they directly invoke the test framework, then that'd work
12:17:18
Xach
so when i was last thinking about this, i was thinking about something not directly inside the test framework
12:17:46
Xach
but that for each project, you could have a file to load. if the file loaded without a non-local transfer of control, things "passed"
12:18:06
Xach
that would allow people to add things that were important to them to third-party libraries that might not have the tests they wanted
12:59:49
_death
if you do that, why not unconditionally signal a condition that may contain more information about the run.. basically it's a hook
14:02:34
_death
use defun*/... directly into of this macro, whose sole purpose is to substitute names for other names
14:18:07
jmercouris
is there a difference between something in my sbclrc and something in my source?
14:18:23
jmercouris
for example: "(pushnew "/opt/local/lib/" cffi:*foreign-library-directories* :test #'equal)" in my sbcl rc vs. directly in the source
14:24:01
jmercouris
please note that I am pushing these paths because I am using Shinmera's deploy and trying to make an app bundle
14:25:29
jmercouris
Yes, I know, this is not my source code, I also was thinking what is the point of that
14:27:27
jmercouris
I'm not sure how to proceed from here, but cffi:*foreign-library-diretories* is normally NIL within the at-init body
14:34:33
jmercouris
it seems unless I add the foreign library directories WITHIN the at-init, it doesn't work
14:36:14
jmercouris
is there any logical reason why someone would load foreign libraries NOT at the top level?
14:38:17
jasom
I remember that some implementations will work fine without something like that, but others will not reload the library automatically when loading from an image
14:38:56
Bike
this at-init thing uses a lambda that's run at initialization time, and the forms in there won't be top level
14:39:35
jasom
also this may have changed. Also they shouldn't be doing a define-foreign-library in the at-init, just the loading of the foreign library
14:41:15
jmercouris
does exist: lrwxr-xr-x 1 root admin 16 Oct 28 2019 libcairo.dylib -> libcairo.2.dylib
14:47:20
phoe
I don't think I can write much myself - I suffer from a writer's block at the moment. I can't stand looking at my book anymore, and that's troublesome, because review PRs and issues are waiting to be merged.
14:47:44
phoe
And I have no idea how to proceed, since a deadline for passing it to Apress is already established. :(
15:02:10
luis
jmercouris: *foreign-library-paths* is a lousy mechanism because dlopen() doesn't know about it so libcairo.dylib can't find its dependencies
15:03:46
jmercouris
deploying it is a nightmare, even getting it to run properly on macOS took weeks
15:04:56
jmercouris
phoe: how about this, I go through and fix grammatical things, and you figure out cl-cffi-gtk issue for me :-D?
15:08:32
luis
jmercouris: hmm. interesting. didn't know about that mechanism, is there a man page describing it?
15:09:20
jmercouris
luis: not that I know of, but you can read more about it here: https://www.mikeash.com/pyblog/friday-qa-2009-11-06-linking-and-install-names.html
15:20:30
jmercouris
as far as I can discern the at-init is because: It is used to reinitialize the libraries when the dumped image is loaded. (Works only on SBCL for now).
15:20:49
jmercouris
however why this when-top level nonsense? the at-init macro ensures only calling after sb init hooks
15:28:17
jmercouris
"A list of function designators which are called in an unspecified order when a saved core image starts up, after the system itself has been initialized."
15:45:05
DavdL[m]
Hello ! I had a question about quicklisp. Is it possible to choose which version of a lib I want to use ? I think it's not possible, but then, why ? Could someone explain to me?
15:46:31
phoe
Quicklisp has a concept of a "dist" which is a whole snapshot of the Lisp world taken at a given time and distributed together
15:46:57
phoe
So if you are using a dist from e.g. December 2019, then you are using software as it was when the dist was created in Dec 2019
15:47:26
phoe
The easiest way to control versions of single libraries is to clone them into ~/quicklisp/local-projects/ - ASDF systems from there override the ones downloaded by Quicklisp
15:47:39
phoe
so you can download a bleeding edge FOOBAR and store it at ~/quicklisp/local-projects/foobar/
15:48:14
phoe
When you go (ql:quickload :bazquux) and system BAZQUUX depends on FOOBAR, it will use that newer version of the library, too
16:17:00
jackdaniel
oh oh, some polish words in unicode names: #\LATIN_SMALL_LETTER_S_WITH_OGONEK :-)
16:20:11
MichaelRaskin
I am not able to suppress perceiving it as «little fire/flame» instead of «little tail» anyway
17:48:03
theseb
Why is progn considered a special form? I don't see any deviations from the standard eval rules with it
17:51:50
specbot
Processing of Top Level Forms: http://www.lispworks.com/reference/HyperSpec/Body/03_bca.htm
17:53:16
Bike
i suppose that that's it, though. versus (defun progn (&rest args) (first (last args)))
17:58:18
Bike
you could define progn like this and then have a smart enough inliner to handle it efficiently
18:05:56
pjb
theseb: note that the notion of special form is rather useless: it CAN be implemented as a macro!
18:06:14
pjb
theseb: also, any CL macro CAN actually be implemented as a special form by your implementation!
18:06:34
pjb
theseb: also, any CL function call CAN actually be open-coded, which is like being a special form!
18:06:48
Bike
lisp has a multiple value return mechanism. it should be explained somewhere around the evaluation semantics you're presumably reading.
18:07:23
theseb
pjb: in my understanding one of the purposes of macros is to implement special forms
18:08:40
pjb
theseb: however, the CL implementation still has to have some fundamental constructs. Note that more than the specified special forms are needed as fundamental constructs. For example, (setf gethash), apply, etc.
18:09:29
theseb
phoe: i was thinking about your clarification about lisp not being a mystical magical software silver bullet....i still think you're right.....I think Brook's "No Silver Bullet" principle is also right....software seems to have "essential complexity" you can't get rid of....kinda reminds me of the Halting theorem....basically we may never be able to get Moore's law type improvements in software development...i can't see it
18:09:57
Bike
that is not what the halting theorem means, and moore's law is already coming to an end because it's pretty hard to make transistors smaller than an atom.
18:11:45
theseb
Bike: yes..i know all about the Halting Theorem...i'm just saying the No Silver Bullet feels similar in flavor to the Halting Theorem....they both address limitations and complexity in some sense
18:11:48
Bike
you could implement (multiple-value-call f ...) as `(apply f (apply append ,@(mapcar (lambda (form) `(multiple-value-list ,form)) ...)))
18:12:15
pjb
Bike: the CL implementation can trivially define a macro, expanding to implementation specific things.
18:12:57
Bike
theseb: you should try to quantify any similarity so that this analogy has value more than a feeling.
18:14:18
_death
special operator is like calling something an axiom.. but clhs also allows implementors to use other axioms and treat the operator as a theorem
18:18:33
theseb
Bike: ok you asked for it...;)... One way to characterize the Halting Theorem is in terms of Gregory Chaitin's or Kolmogorov's definition of complexity..."You can't get a 20 lb theorem from 10 lbs of axioms!"....being able to bang out extremely complex programs with some magic bullet seems unlikely because it either...1. Suggests a way to violate Kolmogorov complexity or 2. Our brains are acting very "trans-computational" and doi
18:19:25
Bike
but i didn't actually mean for you to try to explain it here. it is off topic, after all
18:27:51
theseb
Does anyone have any feel good CL stories where some team created an awesome DSL to handle a very complex problem that blew the pants off the competition?
18:29:08
theseb
it be some sort of consolation since i can't have that lisp is a "silver bullet" anymore
18:42:37
p_l
also, I think in ECLM/ELS in Amsterdam (2012) there was a presentation on using DSL and a compiler written in CL to generate much more efficient Cuda/OpenCL code