freenode/#lisp - IRC Chatlog
Search
20:59:28
jmercouris
Bike: beach said there were some issues with ironclad and you might be able to shed some light on that, do you know anything about that?
21:02:14
jmercouris
While you are here, do you know what it would take to integrate GPG into something like ironclad?
21:02:29
jmercouris
I don't know much about the technology, but I assume it's probably a big project
21:02:31
Shinmera
ironclad does some heavy macro optimisation stuff that clasp & cleavir choke on because they're pretty new compilers.
21:03:25
Bike
do you mean the actual software gpg, or just whatever it does? i don't think ironclad does foreign calls.
21:16:04
shrdlu68
jmercouris: Almost as long as the TLS 1.2 RFC. Shouldn't be too hard too implement GPG from scratch, though.
21:39:29
jasom
One should also be suspicious of ironclad for online encryption and hashing, since making algorithms with data-independent is hard, and I don't know how much effort was put into it
21:44:54
rme
crypto operations need to take the same time to complete no matter what the input data is. otherwise information can be leaked via side-channel attacks (cf. spectre)
21:48:03
shrdlu68
i.e does it take special effort to prevent side-channel attacks in CL than in, say, C?
21:48:41
aeth
Afaik SBCL should be perfectly capable of doing the same crypto that C can do, even with 64-bit integers (put them into arrays).
21:51:25
Bike
garbage collection would be one with certain algorithms, though it doesn't seem like it would usually be important
21:55:38
aeth
CL does not yet have compilers that do advanced optimizations to the degree of C compilers afaik. A lot of the time people assume optimizations that don't happen, just disassemble with (speed 3) or even disassemble with all the optimizations set in favor of speed over everything else (but safety at 1) to see a lot of optimizations that don't happen
21:58:10
aeth
e.g. this is not optimized to constantly return NIL in any implementation afaik: (defun foo () (declare (optimize (speed 3))) (dotimes (i 100) (+ 1 1)))
21:58:39
shrdlu68
Even in C, it takes special effort to prevent side-channel attacks sometimes. Blinding is one such technique.
22:00:45
shrdlu68
One could say that Ironclad's implementation of RSA is vulnerable to side-channel attacks, but all it takes to mitigate this is implement blinding. Same thing Openssl does: https://wiki.openssl.org/index.php/Manual:RSA_blinding_on(3)
22:02:11
aeth
(what I mean is constantly return NIL while skipping the loop that does nothing, both SBCL and CCL do the loop and they're considered the most optimized compilers)
22:03:23
shrdlu68
I doubt anyone is doing serious crypto in CL anyway, even the few that are are using Openssl bindings.
22:07:28
aeth
Yes, and probably 100% of the non-accidental uses of dotimes that does not fill in the optional return form
22:07:37
dmiles
heh Bike has a good point, it it should be optiizaed away, the programmer should have not written it
22:08:20
aeth
dmiles: yes, although to be fair, SBCL *does* warn me about "deleting unreachable code" a lot of the time, and with the exception of some local functions (flet or labels) it's always an error and I'm always glad to have been notified
22:09:18
Bike
the fact that it's unreachable code deletion doesn't mean that it's another case, ie that the compiler would do the same thing either way
22:10:07
aeth
I guess what's different here is that it's reachable, just useless (unless it's being done for timing for some reason... although simply setting speed 0 and debug 3 would probably reenable that if the compiler optimized it away... and why do that for timing?)
22:11:42
aeth
Bike: brief depends on the duration, e.g. change the dotimes to 100000000 and to me it takes 45175.404710144925d0 times as many cycles as a function that just returns NIL
22:14:30
Bike
all i'm saying is that eliminating side-effect-less code is one thing, but eliminating an empty loop is another matter. you'd have to search for basic blocks that immediately reenter themselves based on a condition, determine that the condition can't be affected by other threads etc. it is not really "another case" of other dead code elimination
22:14:58
Bike
and, for real code it doesn't seem very useful. it could come up with a dumb code generator, i guess, but then it would probably be able to special-case.
22:15:10
aeth
Bike: I was bringing it up as an example of an advanced optimization that people might assume that compilers already do
22:16:47
aeth
I'm not aware of anyone who uses CMUCL. I'd be interested in hearing from people who use CMUCL instead of SBCL.
22:21:36
aeth
The table does match my own experience, though. The only two additional entries I track are Clasp (still incomplete so I understand why it's not in that table) and Mezzano (afaik, that is its own implementation as well as an OS)
22:24:29
aeth
I use roswell to get access to the most recent versions of ABCL, CCL, CLISP, CMUCL, ECL, and SBCL. (I develop on an older version of SBCL outside of Roswell, and I also have access to several other CLs outside of Roswell.)
22:26:46
aeth
Commercial implementations are more difficult to decide if they're alive. Allegro and LispWorks are obviously alive. Scieneer is and mocl are probably alive. I think even Genera is "alive" because some entities have support contracts with Symbolics or something? I could be wrong, though.
22:28:30
Shinmera
Anyway, I'm not surprised Roswell's Clasp script fails. It's probably out of date and even if it weren't, Clasp is kinda difficult to get compiled still.
22:29:26
aeth
Shinmera: What I think is happening is that the make file is failing (not surprising; fail, install another dependency, retry is a common workflow) and then all I'm getting is the Lisp backtrace instead of something useful
22:30:54
aeth
I primarily am trying to track living implementations for this table: https://gitlab.com/zombie-raptor/zombie-raptor/blob/11f211c812a396e5e05bcd27a900995ddd68c586/INSTALL.md#cl-implementations
22:31:46
aeth
Obviously, the specifics on that table are just me trying to get my engine to work on other implementations. I want to have all relevant implementations as rows, though.
22:32:49
aeth
I cannot get cl-sdl2 to work on ABCL (not surprising), CLISP (not surprising), and CMUCL (fairly surprising). I don't think cl-sdl2 officially lists what it supports or doesn't support, though.
22:36:36
aeth
I will probably put together similar implementation support tables on everything I write. I'm tired of having to go through the ASDF and source files and hoping to find out what something supports.
22:46:20
wladz_
Does anybody use Roswell? I'm trying to figure out how to evaluate an expression from command line arguments
22:46:54
Xach
wladz_: My impression is that the main body of people using roswell aren't here, but there are a not-small number of users out there.
22:48:14
aeth
I don't know of any advanced uses of Roswell, I mostly use it for "ros use foo && ros emacs &", where I then run tests in SLIME. I think it can run tests in a more automated way, though, so I don't even use Roswell to its full extent for my use case.
22:52:25
Xach
Shinmera: Interesting backtrace today: http://report.quicklisp.org/2018-01-11/failure-report/qtools.html#qtools-titter
23:13:40
bms_
I've set up StumpWM, Emacs, and nEXT-Browser on Arch Linux and I'm loving it. The last piece I need is a Lisp-based IRC client.
23:18:56
Shinmera
Maiden has an example that uses IRC and presents a rather shitty REPL client. https://github.com/Shirakumo/maiden/tree/master/examples/circ
23:19:23
Shinmera
And at some point I'll hopefully finally manage to motivate myself enough to rewrite Lionchat to use Maiden and thus be protocol-agnostic.
23:21:12
Shinmera
Alternatively if you're impatient you can write your own. All the pieces are there.
23:21:23
bms_
I know about ERC and I think I might switch from Hexchat to that, I was just wondering if anyone knew of others. I found Beirc on Github, but it doesn't like to find my init-file and it breaks easily. Then there's KIRC on Github, which is more recent, but less full-featured.
23:22:45
bms_
Also, by less full-featured, I mean completely unsatisfactory. Like, worse than the Mezzano IRC client (which didn't even have /msg functionality until I added it last year).
23:23:20
Shinmera
Well, if you're interested, /I/ would be very interested to find someone else to either change or rewrite Lionchat to Maiden.
23:28:34
Shinmera
Maiden is a bit of a big thing to get into. If you have any questions, I'd be happy to try and address them.
0:03:21
mfiano
jasom: You can connect to a weechat relay with weechat.el if you want to use/configure it with _a_ lisp.
0:39:28
Xach
http://report.quicklisp.org/2018-01-04/failure-report/cepl.html#cepl.perf is old and http://report.quicklisp.org/2018-01-11/failure-report/cepl.html#cepl.perf is new
2:22:38
bms_
Oh, jmercouris, after a day or two of work, I got nEXT running on Arch Linux. Most of that time was consumed by the Webkit2GTK build, which I later discovered was unnecessary. Anyway, I like it very much so far.
2:24:19
bms_
I really am. It works perfectly with my current setup. I've never written a pkgbuild from scratch, only done some editing.
2:24:40
jmercouris
Well, just wait until the next release, there's a lot of quite cool things in the works!
3:10:36
jmercouris
I would like to adapt my build script to build differently on MacOS than on Linux
3:11:13
jasom
jmercouris: it's all in the docstrings for the functions, so it's doable if you have it in the repl
3:14:28
jasom
jmercouris: depending on what you're looking for, you may go with one or another of those
3:16:56
jmercouris
I don't ever remember having to install ASDF, does it just come with most implementations?
3:18:18
jmercouris
I've noticed a few people on this channel end sentences with "even", never heard anyone in real life say that
3:18:44
jmercouris
jasom: Hmm, so it's like an emphasis thing, ok, just sounds a bit strange out of place
3:20:33
jmercouris
Hmm, maybe I should listen more closely and see if I can pick it up in conversation- it's not like I don't ever interact with old people
3:23:44
bms_
It's more fun to talk like an early 20th century banker in a bowler hat anyway, old chap.
3:25:06
Timzi
anybody know a good way to time a function? I'm grabbing the *trace-output* with a `with-output-to-string`, around a (time ...) now
3:25:33
Timzi
but that involves appending that time data onto the output from what is being timed, and then the string manip...
3:26:14
bms_
A snow day tomorrow, I expect. Snow should come in around 1:00 PM, leaving the school unable to get anyone home unless they dismiss at 11:00.
4:58:37
beach
jmercouris: To answer your question from yesterday: http://metamodular.com/partial-inlining.pdf
5:01:41
jmercouris
double negative "However, inlining does not have only advantages" can be simplified
5:08:17
jmercouris
beach: It might be easier if you give me the latex sources, I edit them and you can then do an ediff or something
5:10:09
jmercouris
Well, you don't have to agree with my changes, but it'll make it easier for you to accept/reject them
5:24:14
jmercouris
the only thing I am worried about is that the diff will show changes when I type in M-q to limit the width of the paragraphs showing false changes
6:14:15
mfiano
beach: I recall you once had a great argument against using the :TYPE slot option for DEFCLASS slots. I can't seem to find that in my logs. Care to repeat your view on that matter?
6:16:05
beach
mfiano: I think it was just the ordinary argument against manifest typing, i.e., that it forces the programmer to provide information early in the life of some software, and this information is often incorrect later on, so it creates a lot of maintenance later on.
6:17:00
mfiano
That is fair. I think that much more applies to documentation, though. I have seen docstrings that don't agree with the following code much more often.
6:18:51
beach
And comments too, where the programmer thinks that more comments always provide more information. But then they have to be kept in sync with the code.
6:21:39
mfiano
I agree a little too much on the matter, that it sometimes hurts me. Until my software is release-ready, which is takes a long time if ever, I don't provide documentation anymore. I do however maintain offline Orgmode outlines for larger projects to help me organize my thoughts and prepare for the future when I will write real documentation -- and by real, I mean offline documentation with examples, diagrams,
6:29:15
beach
Does the word "boclus" suggest any associations (positive or negative)? I am thinking of using it as a name for a library.
6:33:41
rme
"bolus" is the name for the wad of chewed food that goes down the esophagus after swallowing. that's what I originally read, fwiw.