freenode/#lisp - IRC Chatlog
Search
15:45:46
beach
jackdaniel: You and your wife may have to come to Malaga for dinner one of the days we are there. We are going to be in Marbella only from Sunday to Wednesday.
15:47:53
jackdaniel
we'll be there 14-21, so if anyone stays longer (or comes earlier) it will be nice to meet you
15:49:48
Shinmera
It's a bit of a shame that there was no good big hotel offer this time around. Having a party of lispers at the same place was really nice the previous two years.
16:07:48
sjl
if it's any consolation, I was surprised by the same thing, and regretfully spent a good hour tearing it out of all my stuff
16:08:40
mfiano
Yeah I want to eventually replace that, but I wonder how legal it is considering I'm not distributing it, but Quicklisp is pulling everything down on a user's machine.
16:09:47
sjl
I would think a court would consider that distributing. "The user's web browser requested foo.tgz from my server, I didn't push it to them" is similar.
16:10:18
mfiano
Would a court consider Quicklisp itself infringing on the GPLv3, having everything together in the quicklisp dir?
16:10:55
dlowe
the license interpretation depends heavily on what is considered a dependency of a program
16:11:12
sjl
Since quicklisp doesn't actually rely on the code, it just treats it as data, I doubt it would be a derivative work.
16:12:29
jackdaniel
mfiano: there is a clear distinction between "derivative work" and a "mere aggregation"
16:13:01
sjl
Someone should do a clean-room reimplementation of defstar (or something like it). It's a useful idea that more people would use if it were more permissively licensed.
16:13:24
jackdaniel
https://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.en.html#MereAggregation (from faq)
16:13:29
mfiano
Pushed high up on my priority list. Thanks for bringing that to my attention. I recently went through my software and culled GPL dependencies, but apparently didn't look hard enough :/
16:15:09
sjl
(declaim (ftype (function (fixnum fixnum) fixnum) foo)) (defun foo (x y) ...) => (defun* (foo -> fixnum) ((x fixnum) (y fixnum)) ...)
16:17:40
mfiano
sjl: I appreciate that you brought that to my attention. This is a huge deal as that library is a foundation for pretty much everything I write.
16:17:47
jackdaniel
on the other hand I'm not sure if it can work as desired (that is – declamation being part of macroexpansion – does spec guarantee that it will be processed by a compiler?)
16:18:50
beach
ebrasca: Just as the author of a book writes several versions before being content with the result, programmers often have to do the same.
16:19:39
dlowe
it looks like it would be pretty trivial to duplicate under a more forgiving license.
16:20:45
sjl
Bike: it does expand into a declaim+defun, though there's more functionality than just the bare expansion
16:21:03
mfiano
dlowe: Indeed. I only used it for brevity/laziness. I usually stay away from those sorts of libraries.
16:21:35
beach
jackdaniel: That sounds like something we should do, i.e. take our wives to a flamenco restaurant in Malaga.
16:21:50
sjl
it can insert check-type forms, handles optional/keyword/rest args, has pre/post-condition features
16:22:00
AeroNotix
Does defstar allow for any optimizations? I.e. will the type hints tell the compiler to do anything different?
16:22:41
sjl
AeroNotix: depends on the compiler and the optimization settings. All it does it the declarations.
16:28:07
sjl
I think if you limit yourself to "make some macros that make type declaration less tedious" and ignore all the pre/post condition stuff you could do it in far fewer lines.
16:28:28
sjl
But still, handling rest/optional/key args and defmethod/defgeneric args is nontrivial.
16:29:11
AeroNotix
yeah I just thought to make a toy which just dealt with positional args and basic declair/declaim expansion
16:30:47
mfiano
Speaking of licenses being a problem, cffi pulls in babel which is MIT but admits to stealing LLGPL code: https://github.com/cl-babel/babel/blob/cd4183b5767e65a718d199e4dfa5bd5f61370d4d/NOTES#L4-L6
16:32:28
AeroNotix
jackdaniel: how does it work if you used something as a library and then at runtime modified some functions?
16:33:05
jackdaniel
AeroNotix: I describe licensing implications here: https://common-lisp.net/project/ecl/posts/ECL-license.html
16:33:28
jackdaniel
(don't get discouraged by "ECL" in post name, I talk about other licensing models as well)
16:33:50
mfiano
LLGPL is sort of a custom license. It has never been tested in a court, so I don't think even a lawyer can answer that
16:34:48
AeroNotix
Is code written by an AI derivative work? If I write an AI capable of writing code, who owns the code?
16:35:22
jackdaniel
mfiano: llgpl is lgpl + preamble. also testing in court isn't a good argument – license is what it is - you have many countries and ruling may be different etc
16:36:01
jackdaniel
AeroNotix: depends on the license. in case of GPL result of your code is not covered by the license
16:37:02
beach
jackdaniel: This looks like the best bet so far: http://www.restaurantevinomio.es/en/
16:37:58
mfiano
I wonder how many MIT libraries actually steal code from incompatibly-licensed software without mention. babel makes me worried, especially since they never even fixed the problem they identified.
16:42:45
sjl
jackdaniel: are you writing a tutorial for it? that would be welcome, it could use some additional docs.
16:55:11
phoe
Just to be sure: in GF dispatch, are EQL specializers more specific than class-based dispatch?
19:10:28
pjb
https://www.hillelwayne.com/post/the-best-se-paper/ -> Fixing Faults in C and Java Source Code: Abbreviated vs. Full-Word Identifier Names
19:16:21
mfiano
sjl: defstar does more than (declaim (ftype (function (fixnum fixnum) fixnum) foo)) (defun foo (x y) ...) => (defun* (foo -> fixnum) ((x fixnum) (y fixnum)) ...)
19:17:48
sjl
2018-01-29 16:20:45 <sjl> Bike: it does expand into a declaim+defun, though there's more functionality than just the bare expansion
19:17:49
sjl
2018-01-29 16:21:50 <sjl> it can insert check-type forms, handles optional/keyword/rest args, has pre/post-condition features
19:23:58
krwq
hey does anyone know if slime has any hook which is being triggered after repl is fully usable?
19:29:37
krwq
Thanks pjb! I didn't know about .swank.lisp but was planning to call something in emacs by myself :)
20:43:24
Hamps
ACTION in this video you will see how to become an administrator on which network you want http://j.gs/ANj8
20:43:31
Hamps
ACTION in this video you will see how to become an administrator on which network you want http://j.gs/ANj8
20:43:37
Hamps
ACTION in this video you will see how to become an administrator on which network you want http://j.gs/ANj8
20:43:43
Hamps
ACTION in this video you will see how to become an administrator on which network you want http://j.gs/ANj8
21:51:40
Xach
I am hacking on building quicklisp dists from within a fresh vm, to shake out issues of lingering state
21:58:06
mason
jmercouris: It was on the edge of my memory but I couldn't recall, so I read down the DistroWatch list until it popped into focus.
21:59:36
mason
Hey, a general question... Is there a CL library that will let me do line-oriented socket IO without threading or having to resort to manually buffering input until I see a valid line ending show up?
21:59:42
jmercouris
mason: I kept thinking "Balloons" was the name for some reason, all my queries involving balloons of course came up short :D
22:00:52
mason
jmercouris: Imagine the project developers' glumness when the recent kernel side-channel vulnerabilities were announced, obviating the security afforded by heavyweight VMs. :P
22:01:22
mason
So, no one's leaping up with an answer, and I have to wonder if I'm thinking about this wrong somehow. I'd think a line-oriented library would be the first thing anyone would want.
22:02:08
mason
Shinmera: But, won't that block? I want multiple sockets and I want a line returned when one's ready, but without explicit threading. So, implemented with select or similar.
22:03:16
Shinmera
And also I'd think that's too application specific to be "the first thing anyone would want"
22:03:20
mason
It's not entirely different. I didn't note the desire to not block, but it was implied by the "without threading".
22:03:58
mason
Like, the IRC we're using now, or email, or HTTP, or almost everything else we use...?
22:04:23
mason
Ah, well. Yeah. But it seems like large classes of software would want it, and yet, it exists almost nowhere. Erlang maybe.
22:04:48
Shinmera
Because people just write a standard blocking algorithm and then use a thread per socket
22:05:00
mason
Ignore the "line oriented" part and think of it as structured data where line-oriented is just one example of it.
22:05:35
Xach
mason: For what it's worth, when I did that, I treated everything from the network initially as binary and used epoll.
22:06:16
mason
I wrote one for Perl but now I want one for Lisp, and I don't see why I have to solve this each time. :P
22:06:44
mason
Xach: But yeah, that's what I've done thus far. It's all binary, I parse it and figure out when I've got a usable chunk to peel off.
22:07:03
Xach
mason: Sorry to suggest something I haven't personally tried - I've been meaning to. It might not suit.
22:07:19
mason
Shinmera: As I explained to you, I want something that damned near every network service does, only they all have to implement it independently, which strikes me as weird.
22:09:26
Xach
mason: I go the binary route because I find it harder to handle trying to customize encoding error handling, line ending conventions, etc. for character streams, and I haven't had much luck with bivalent streams, but I can predict binary streams pretty well.
22:09:38
mason
Xach: You may have a winner there. I want to see how they implement it, but it initially looks right.
22:11:28
Shinmera
mason: More libraries, even smaller wrappers to make things trivial to get going with, are always welcome.
22:12:41
mason
Shinmera: I want to spend a little time with Xach's basic-binary-ipc suggestion, but if it doesn't quite fit I'll plan on contributing something.
22:13:29
Shinmera
Well, even if b-b-i does do the trick, it might need a bit of work out of which making a library might be useful.
22:57:37
norserob
Hi, I am trying to use libdrm on linux from lisp. Looked at cl-drm on github, and it works ok for some sthings. But I want to access framebuffers, and it looks like I need to do some ioctl calls. So far this fails, not sure why. I put an example in a gist: https://gist.github.com/rfolland/6f0aba4171519881f938040d9d0f237b
23:33:33
norserob
Xach: I got it from a very instructive C program by D.Herrmann at https://github.com/dvdhrm/docs/tree/master/drm-howto. I printed the value from there. It is calculated by a macro, I'll need to look into that. But it looks like I'm getting there anyway now, I got a better result after setting some of the values on the struct before doing the ioctl call. Forgot to do that in the small example in the gist. I
23:34:31
norserob
I want to get the examples by Herrmann working in ccl before moving on with my own stuff.
0:42:13
jasom
mason: b-b-i provides the primitives that you can build your library off of, but you'll have to create a buffer for each socket and fill them in as you go, then add the logic for detecting newlines
3:08:43
pjb
asarch: you have two ways of detecting it: returning a value, or signaling a end-of-file condition.
3:10:12
pjb
Note, you can always save the detection of eof into some hash-table and write a feof function to get it, if you want to reproduce the bugs of C…
3:10:37
pjb
asarch: alternatively, in the case of file-stream, you can test (= (file-position stream) (file-length stream)).
3:17:20
pjb
asarch: but similarly after this test of file-length, it may change, so if the test is false, it doesn't mean you will be able to read anything. If it returns true, it doesn't mean you won't be able to read something.