libera/#commonlisp - IRC Chatlog
Search
17:58:53
etimmons
q3cpma: it can read ustar, pax, gnu, and v7 tar files. It can write each of them as well, but I'm missing a couple of gnu extensions in each direction.
17:59:50
etimmons
Josh_2: great! Sorry to hear about 40ants doc, what errors were you getting? I had some mgl-pax code that I just ported over so I didn't exactly follow the examples to the letter
18:00:24
q3cpma
etimmons: GNU is the standard if you want sparse file and long names, these day, so nice
18:03:09
Josh_2
etimmons: the example on the github wont build. I run the (40ants-doc/builder:render-to-string @foo-random-manual :format :markdown) and get an error saying 'unable to figure out *package* for object :(
18:03:16
etimmons
q3cpma: PAX handles long names quite nicely as well. sparse files is one GNU extension I'm missing (in the high-level wrapper, at least). But it should be too difficult to add
18:04:53
q3cpma
etimmons: yeah, I'm mixing things up, the problem I had were with the only pax utility (mirBSD pax), and not the format itself
18:05:01
etimmons
Josh_2: Huh, that's weird. I'll try to work through the example and see if I can see what's up
18:05:37
yitzi
q3cpma: Did you try sbcl with --no-userinit to do that benchmark? For me it takes it from ~4s to about ~.5s
18:07:12
etimmons
Josh_2: I was using mgl-pax for a while and really wish the 40ants stuff wasn't forked and was instead merged into mgl-pax.
18:07:53
etimmons
Josh_2: But I think there was some strong differences of opinion and I really like being able to load my documentation tool *without* also loading ironclad, so 40ants it is
18:09:46
yitzi
It was just once with their simple.lisp ... in any case my point was that the startup code to load quicklisp/clpm can be significant.
18:20:31
q3cpma
yitzi: I gained <0.1s by using (asdf:load-system "cl-ppcre"), is it the way to do it?
18:21:10
Bike
i think yitzi means the time advantage of not loading quicklisp at all. using ql:quickload isn't really going to be much slower if you already have it downloaded, since it just does asdf:load-system anyway
18:22:08
yitzi
Correct. It might not make much of a difference since they are dumping an image and then executing that.
18:26:50
q3cpma
Thanks for helping me again, I'll come back another time to at least try to bridge the gap with Slowthon =)
19:26:06
etimmons
Josh_2: I just tried the example. Only problem I ran into was I needed to add the package to the section name in the call to `render-to-string` (so `foo-random::@foo-random-manual`).
19:31:52
etimmons
Josh_2: I did the equivalent of cloning <https://github.com/40ants/doc> and <https://github.com/40ants/commondoc-markdown> to local projects, and then `(ql:quickload :40ants-doc-full)`
19:34:15
Josh_2
Thats what I was quickloading, I'd then realize I obviously need builder and ignored-words
19:42:06
jmercouris
Josh_2 pointed it out, and macroexpanding it leads me to see that the documentation is very misleading
19:43:35
_death
it sets the bindings in parallel (rather than sequentially).. maybe you're conflating several meanings of the word
19:43:58
Bike
"More precisely, all subforms (in both the place and newvalue forms) that are to be evaluated are evaluated from left to right"
19:46:56
jmercouris
fair enough, but we are usually discussing in the context of the fourth dimension
19:47:00
Bike
as far as the programmer is concerned, they can take place at the same time. there's no way to determine what order they take place in, if any.
19:47:53
_death
with setf, it would be: (i) set a to the value of b (a=2,b=2) (ii) set b to the value of a (a=2,b=2)
19:48:37
Bike
for example, if your macroexpansion happened to expand to the two setqs in a different order, or starting two threads that do the setq and then joining them, you'd never know
21:32:08
Josh_2
etimmons: are the docs generated by 40ants/doc able to be hosted by a webserver like nginx straight away?
21:37:55
etimmons
Josh_2: yep! For instance, cl-tar publishes through Gitlab pages (which is just a static webserver under the hood)
21:39:07
etimmons
Any time I tag a commit in cl-tar or cl-tar-file, it triggers a new pipeline in cl-tar-site which downloads the documentation for the tag, shoves it in the correct folder, and then does the magic Gitlab pages dance to tell it there's a new set of files ready to be served
21:44:08
etimmons
Separate repo: <https://gitlab.common-lisp.net/cl-tar/cl-tar-site> it has some CL code in it, but I have zero plans to add it to QL since it's only used to build the project website
21:45:17
etimmons
It's also kind of an artifact of how c-l.net does its project pages. In order to get a site to show up under c-l.net/project/X/ using Gitlab pages, you need to use a repo named X/X-site
0:58:12
hayley
FWIW Bike's definition of parallel (w.r.t parallel assignment) is the undisputed definition of concurrent at least, that there are no happens-before relations that would order one before the other.
1:26:13
hayley
Can I do anything to make the SBCL compiler do less optimization somehow? It doesn't appear that the code I generate would benefit from much more type inference, for example.
1:56:22
hayley
Huh, optimizing for (speed 0) actually affected compile time (which went from 450ms to 250ms), and the drop in execution performance isn't that bad. Somehow I don't seem to write code where it usually does much.
5:37:35
lisp123
Usually its a trade-off between abbreviations vs. longer names, e.g. ((find (cadr function-definition) *cl-symbols* :test #'symbol-name-equalp)
5:38:28
lisp123
I put that into a COND as a test and now its hard to indent the body of the form since its already so long
5:42:35
lisp123
flip214: Yes, perhaps I should use anaphoric macros (seems a bit too much to define a wrapper around find)
5:45:35
lisp123
\n :test ) --> Since the test is optional, it flows better having that on a new line
5:45:50
beach
lisp123: Please don't use anaphoric macros. They tend to violate the rules of page 13 of the LUV slides.
5:47:41
beach
The best solution is to have lots of small functions, and occasional macros, so that the total code size is still limited.
5:48:46
lisp123
The trade off I am having with small functions is that one has to make an extra step to read what they do, whereas writing in terms of the standard function "inlines" it
5:50:46
lisp123
In this case, I think it might be a good idea, (defun IS-CL-SYMBOL (sym)), so I will do that -> But I used to have a lot of smaller functions and it felt like I was going through 5 functions to get to the final code
5:54:29
flip214
lisp123: right. but these additional small functions are a kind of documentation - one that (hopefully) better reflects what happens than comments that are outdated