IRC channel logs

2017-05-11.log

back to list of logs

<nikita1>nalaginrut: hello! congratulations!
<nalaginrut>nikita1: heya
<nikita1>nalaginrut: if you've noticed, html documentation is broken.. :(
<wingo>morning
<nalaginrut>nikita1: where?
<nalaginrut>wingo: morening
<nalaginrut>morning
<wingo>:)
<nalaginrut>oops, ftp.gnu.org didn't create a dir for Artanis
<nalaginrut>do the tarball can't be downloaded
<ArneBab>manumanumanu: nice!
<ArneBab>manumanumanu: on my machine here your changes reduce runtime by 15%!
<ArneBab>moin :)
<nalaginrut>I failed to upload the tarball because of the signature issue, what a shame ;-(
<nalaginrut>seems I made a deceptive advertisement
<manumanumanu>ArneBab: did you get the one I PMed you? That one is a bit clearer
<ArneBab>ah, I missed that
<ArneBab>nalaginrut: it’s only deceptive if you knew it was wrong
<nalaginrut>ArneBab: ;-)
<ArneBab>manumanumanu: I’m trying to cut down on the memory requirement by building a prefix-tree while reading, but it doesn’t work yet (does not save memory and is slower — I’m playing with it to see whether I can get it faster)
<ArneBab>in theory that should compress the text in memory
<manumanumanu>ArneBab: Well, we could split by (string->char-set " \\n") and use map! in count-words. That should bring it down by quite a lot :)
<manumanumanu>with a very small speed decrease
<ArneBab>isn’t the memory requirement mostly in the hash map?
<manumanumanu>We are building a shitload of temporary lists though, which have to be GC'd
<ArneBab>yes
<manumanumanu>if we remove the map, we can just split it once.
<ArneBab>but they get gc’ed pretty efficiently
<ArneBab>I only switched to the in-place sort!, because that has to actually touch every single string
<ArneBab>map! seems a tiny bit faster, though
<manumanumanu>not for me. map! is from srfi-1, and is slower
<rekado>sneek: later tell civodul Yes, an instance of RCAS is running here: http://rcas.mdc-berlin.de/
<sneek>Got it.
<rekado>huh, the upload button does not appear in icecat, but it shows in epiphany
<manumanumanu>ArneBab: The fastest I could make my racket version was 20% slower than ours, but that is without offloading to C.
<ArneBab>it’s crazy how this depends on the machine
<manumanumanu>how do you mean?
<ArneBab>wingo: ^ these differences could be pretty interesting for your quest for speed
<ArneBab>manumanumanu: for me using map! is a few percent faster than map
<manumanumanu>ArneBab: how does the current version compare to python3 on your machine?
<ArneBab>guile is 10% faster
<manumanumanu>ArneBab: SWEET :) It isn't for me though
<ArneBab>it also isn’t on my other machine :)
<ArneBab>but there you have the variability of benchmarks
<manumanumanu>ArneBab: Meh. I a pretty psyched by how much faster guile 2.2 is, but the goal must be for it to be fast enough to _not_ have to offload this stuff to C.
<ArneBab>yes
<ArneBab>and for many, many things it already is
<ArneBab>the thing I’m playing with reads the port as bytes and processes these without C
<ArneBab>(or rather: without visible C)
<avp_>civodul: Hello! I's Artyom the Guile-SSH developer. :-)
<avp_>civodul: As you might seen, there's Guile-SSH 0.11.1 with the 'configure.ac' bugfix. I'm hoping
<civodul>avp_: oh good!
<avp_>I'm hoping that problem is fixed completely now.
<civodul>avp_: i had worked around it this way: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/ssh.scm#n230
<avp_>civodul: I see. Besides, I saw code in Guix that checks average load of hosts before offloading; there are now procedures in (ssh dist node) and (ssh shell) that allow you do that.
<avp_>This may simplify Guix code a bit.
<civodul>yeah i've seen them, that's cool :-)
<nalaginrut>civodul: hi ludo! are you using getmail now? do you feel it's slow while fetching mails from fencepost?
<civodul>hi nalaginrut!
<civodul>i don't use getmail
<nalaginrut>civodul: you use gnus?
<civodul>yes
<nalaginrut>ok
<ArneBab>is this linked from our site? http://vychodil.inf.upol.cz/research/development/gtrees/
<ArneBab>(does not look like it)
<ArneBab>the "compiler warnings" link is broken on https://www.gnu.org/software/guile/libraries/ (for Guile-lint)
<ArneBab>in the benchmarks by ecraven, ctak is hard for both Guile and racket. Do you know why? Can we do something about that? It’s continuation-heavy. → https://github.com/ecraven/r7rs-benchmarks/blob/master/src/ctak.scm
<davexunit>I don't know if code using call-with-current-continuation is worth optimizing much
<davexunit>the Guile manual recommends using delimited continuations instead
<davexunit>and those are well optimized.
<manumanumanu>ArneBab: those looks like regular escape continuations. try running them as call/ec and you will see a pretty big speedup
<manumanumanu>I remember changing some code running in chez to use their one-shot continuations (which are heavier than what you can get in guile) and got something like a 30% speedup just by adding a "1"
<manumanumanu>ArneBab: continuations are slow in all schemes except chicken where they are almost free.
<manumanumanu>they are exceptionally slow in Bigloo, and using them in bigloo slows all the other code down as well. I think call/cc has to be enabled with a compiler flag
<nalaginrut>manumanumanu: do you hold the same opinion on delimited continuations?'
<nalaginrut>IMO, full continuation captured by call/cc is just a furnishings nowadays, no one use it in practice
<avoine>would it make sense for guile to have a default exception handler?
<sneek>avoine, you have 1 message.
<sneek>avoine, spk121 says: that GNU Teseq is useful for debugging escape sequence output. I'll check out the code when I'm back home.
<nikita1>Dear guix users, who knows what's required from the platform to have to be 'supported' guix platform?
<nikita1>f.e. I'm trying to install it on DragonflyBSD (which has all requirements) but during 'configure' it reports that dragonfly is not a supported platform...
<nikita1>(I just want to use potluck for guile-only (or almost only) projects on *BSD, but it seems like impossible mission...)
<avoine>nikita1: was this meant for #guix?
<amz3`>io!
<amz3`>I am not convince by the route API of aratanis, I think I prefer a procedurale API instead of declarative API there
<amz3`>artanis*
<davexunit>I think a pattern matcher should be used
<davexunit>not string templates
<paroneayea>it would be even better if the pattern matcher were reversible
<davexunit>I did this for `guix publish` and it worked well. would be good to expand upon to handle more advanced things.
<paroneayea>so you could define a pattern like
<davexunit>ACTION goes afk
<paroneayea>(define url-patterns
<paroneayea> (user-homepage ("u" username))
<paroneayea> (user-inbox ("u" username "inbox"))
<paroneayea> (user-outbox ("u" username "outbox")))
<paroneayea>and then
<paroneayea>oops
<paroneayea>
<paroneayea>(define url-patterns
<paroneayea> '((user-homepage ("u" username))
<paroneayea> (user-inbox ("u" username "inbox"))
<paroneayea> (user-outbox ("u" username "outbox"))))
<paroneayea>then
<paroneayea>(gen-url url-patterns 'user-homepage "davexunit")
<paroneayea>would generate
<paroneayea>"/u/davexunit"
<nikita1>paroneayea: may be even as macro:
<nikita1>(define-url-patterns
<nikita1>((user-homepage ("u" username)) ...))
<paroneayea>nikita1: yeah absolutely re: macro, I just wanted to demonstrate the simplest version I could
<paroneayea>though I'd like to see it bound to a name
<paroneayea>(define-url-patterns urls
<paroneayea> ...)
<paroneayea>rather than assume a global one
<nikita1>paroneayea: so then you can use simple (user-homepage "some-user") -> "u/some-user"
<paroneayea>nikita1: I see, you're also suggesting defining them as individual procedures?
<nikita1>(yes, for subsequent use inside handlers)
<nikita1>if one want some large hierarchy of urls -> use let-scoping or smth like it.
<nikita1>I don't think that it is a real problem -- how to compose/decompose an url string -- just couple of procedures for one's taste.
<paroneayea>wingo: was happy to see your email about Guile 3.0 to guile-devel
<paroneayea>exciting stuff.
<paroneayea>wingo: btw, I bumped into https://github.com/WebAssembly/design/blob/master/GC.md
<paroneayea>looks like GC support is indeed on the WASM roadmap
<amz3`>I tried to explain that about the match based pattern matcher a long time nobody understood
<amz3`>s/pattern matcher/router/
<amz3`>:)
<nikita1>or even as the following: (with-url-patterns ((pat1 (x y z)) ...) (pat1 (lambda (rc x y z) ; <- handler ... (pat1 x1 y1 z1) ; <- generator ... )
<amz3`>nikita1: do you use fluids?
<amz3`>or any kind of global
<nikita1>amz3`: fluids -- no, as there is no threads no need for fluids.
<nikita1>amz3`: artanis itself usese parameters inside
<nikita1>... or what do you mean by 'use'?
<amz3`>using the syntax you propose how do you reverse an url?
<nikita1>ah..
<nikita1>for example:
<daviid>it is really extremelly diffuclt to work (develop) because the raise exsception problem, when dealing with images (big vectors), it's like close to impossible... wingo did yoiu think about how to allow users to force excpetions to use truncated-print ?
<daviid>I'm loosibng a couple of hours a day because of that problem
<nikita1>with-url-patters makes a new dynamic scope with defined parameters like pat1 ... patX to be case-lambdas
<nikita1>calling with one parameter which is lambda itself means defining a handler
<daviid>hum, not loosing that much, but quite a precious amount of time anyway
<nikita1>otherwise -- it is a url generator
<daviid>one way is to launch emacs in a term, then M-x run-guile, then ,use (cv) and work, when an error occurs, hit C-c in the terminal, then think about nthe possible causes of the bugs... just like that, a super debugger brain... :)