freenode/#lisp - IRC Chatlog
Search
0:14:15
Josh_2
I keep getting the error bad-file-descriptor when calling socket-accept on my listen socket, the fd is -1 for some reason
0:17:59
aeth
jfrancis: Well, I think you brought up a good point with project managers, but most people do CL on their own time, in which case the problem is motivation, so the order to do things in imo kind of reverses. Instead of building a solid foundation of libraries and then the application, you need to get a MVP of the application/library done as quickly as possible to maintain motivation. At least, imo/ime.
0:18:22
aeth
So it doesn't surprise me that people work with an 80% good-enough JSON library instead of writing a perfect fit one, even though 80% good-enough isn't actually good enough.
1:28:55
lavaflow
from what I understand common lisp doesn't guarantee tail call optimization in every scenario, but does it in any specific circumstances, like a procedure invoking itself in the tail position?
1:29:42
lavaflow
I'm reading land of lisp and some of the examples have procedures invoking themselves in the tail position to loop. I thought that was a scheme-ism
1:34:05
Xach
lavaflow: implementations might convert calls like that in some circumstances but nothing is guaranteed by the standard
1:38:21
PuercoPope
no-defun-allowed: an alternative to modifying the sources, if you use SBCL, is to restrict the compiler policy. ie. (restrict-compiler-policy 'safety 1)
4:31:18
vsync
huh... why is it allowed to have a zero-dimensional array? or more properly, why does a zero-dimensional array have an element?
4:32:37
aeth
vsync: (make-array '() :element-type 'double-float :initial-element 4d0) ; now you have a box
4:33:15
no-defun-allowed
The size of an array is the product of its dimensions, i.e (apply #'* (array-dimensions <the array>)).
4:33:16
aeth
vsync: a 0D array of a double-float or (unsigned-byte 64) or (signed-byte 64) in 64-bit implementations that support such optimizations is essentially micromanaging your own box instead of automatically heap-allocating that number
4:34:59
aeth
vsync: technically speaking if you're writing hyper-optimized numerical code it's more efficient to pass in a 0D double float array containing an element and then optionally perhaps setting that with the new result rather than actually passing in a heap-boxed double float. Do you need to do this? Probably not. Does a library you use that wants to compete with C/C++/Fortran need to do this? Maybe.
4:35:15
pjb
(mapcar 'array-element-type (list (make-array '() :element-type 'double-float :initial-element 4d0) (make-array '() :element-type 'number :initial-element 4d0))) #| --> (double-float t) |#
4:35:55
aeth
The difference between a length-1 array and a length-() array is (aref foo 0) vs. (aref foo)
5:48:38
vsync
haha, turned out I could just do what I wanted with (map-into (make-array N) #'WHATEVER)
9:36:35
smokeink
http://pastecode.ru/d2d04e/ failed AVER: (SB-C::LEAF-HAS-SOURCE-NAME-P SB-C::LEAF) This is probably a bug in SBCL (1.5.9) itself.
9:42:24
flip214
UIOP has WITH-TEMPORARY-FILE -- is there some library that has WITH-TEMPORARY-DIRECTORY?
9:53:28
flip214
I found QL-IMPL-UTIL:DELETE-DIRECTORY-TREE. Is there some other function in a library that's very likely to be used already?
9:59:58
phoe
flip214: the best I've found is (uiop:temporary-directory) that returns the base temporary directory to you
10:00:20
phoe
you can likely make directories in there yourself and implement your own with-temporary-directory macro on top of that
11:08:37
Xach
Arrgh. My Quicklisp build computer is now crashing every few days. Time to troubleshoot instead of just restarting it.
11:24:57
Xach
phoe: the machine stops responding to network traffic and cannot be shut down with the hardware acpi shutdown. it has to be force-shutdown and restarted.
11:25:13
Xach
i haven't attached a screen and keyboard to see if there's any useful console info yet.
11:27:40
phoe
Xach: that sounds like the thing that's required. This smells of kernel panic or another hardware-induced hang.
11:36:50
Xach
I feel like I need to set things up on The Cloud instead of buying hardware to tinker with any more
11:38:34
Xach
flip214: possibly, though i have a keyboard and screen and do not have a serial console.
11:41:53
phoe
Xach: the recent discussions have made me think of setting up some sort of semi-public CI for Common Lisp projects, so one can get their code to build and run its tests on the major operating systems and a series of available implementations.
11:42:51
phoe
It would require a considerable amount of hacking, though, plus hardware expenses and licenses for the proprietary operating systems.
11:43:32
phoe
And either buying some Apple hardware or deciding to hackintosh in spite of Apple's licenses.
11:44:13
phoe
Summing all of that up, I think it would be a substantial investment to set up and then to get someone to maintain the hell out of this while accepting more and more projects to be built there.
11:44:42
phoe
Maybe the clnet foundation would be willing to help with that. I don't know, I haven't asked anyone or even shared that full thought with anyone before.
11:46:01
galdor
technically you already have multiple CI systems, e.g. Github Actions or CircleCI, depending on what you need
11:46:35
galdor
it's really easy to write CircleCI orbs to support multiple CL implementations in an easy way
11:47:06
phoe
correct, one other way would be to depend on another existing CI service for each project
11:48:02
galdor
commercial CL vendor could decide to support opensource by providing some kind of special CircleCI account for example, or a collaboration with Drew DeVault for sourcehut
11:48:21
phoe
I've already seen Travis configs that allow one to run tests against multiple CL implementations, too
11:49:20
galdor
personnally I do not care too much about CI, I can already do that easily, I'm more concerned by the absence of a rebar3-like tool to manage dependency source/versioning on a per-project basis
11:50:18
galdor
I'd love to include some non-critical CL tools at work, but the whole "go install quicklisp and run commands in a CL repl" is never going to fly