IRC channel logs

2018-04-05.log

back to list of logs

<daviid>lloda: I wrote '... I order to 'save distro ...' I meant '... In order to 'save distro' ...' :) I hope nobody got me wrong here
<sneek>daviid, you have 1 message.
<sneek>daviid, civodul says: it's share/guile/site/@GUILE_EFFECTIVE_VERSION@
<daviid>sneek: later tell civodul right, thanks.
<sneek>Got it.
<daviid>lloda: you need to update doc/Makefile.am (guile-cairo) in order to give a proper path to the XML files that gtk-doc produces
<daviid>lloda: though guile-gnome depends on g-wrap, and guile-cairo does not, I beleive the way these projects build (at least when the did build) their doc is very similar
<daviid>lloda: I see it is explained in doc/README in guile-cairo, did you read it?
<daviid>lloda: texinfo is now guile core, so you don't need guile-lib anymore, I think, but to regenerate the doc, you need guile-gnome ... the thing is you generate the .texi files that are distributed with the lib, so users can build the doc locally ...
<daviid>once you have guile-gnome, updated the path to cairo gtk-doc xml files, you try by typing 'make generate-defuns' in the doc/ subdir of course ... HTH good luck
<daviid>lloda: there is a release file in doc/ as well: it lists all the steps that one should do to actually do a release, very cool. of course I can still help but it's all there
***ozzloy_ is now known as ozzloy
<manumanumanu>Good morning everyone!
<manumanumanu>ArneBab_: apparently arthur gleckler liked the transducers so much he wants me to make it a SRFI.
<manumanumanu>Hey btw everyone: I have library that includes a file. ,reload seems to only work if I change the library, but it doesn't seem to reload the module if the included file changes
<manumanumanu>can I force that somehow=
<manumanumanu>?
<Sleep_Walker>I'm sorry for so elementary question, but I am a bit lost
<Sleep_Walker>I have (define (kernel-versions key) (cdr (assq key '(("doom" . "sw2") ("vulture" . "sw1")))))
<Sleep_Walker>calling `(kernel-versions "doom")` leads to `In procedure cdr: Wrong type argument in position 1 (expecting pair): #f`
<manumanumanu>assq returns false when the key does not exist
<Sleep_Walker>but `(cdr (assq "doom" '(("doom" . "sw2") ("vulture" . "sw1"))))` works as expected
<manumanumanu>you are using strings
<manumanumanu>as keys, which assq can't compare
<Sleep_Walker>aha
<Sleep_Walker>so the equality is the problem here
<manumanumanu>I think assq uses eq?
<djcb`>I have some procedures that can take options as lists of flags, say '(foo bar cuux).
<sneek>djcb`, you have 1 message.
<sneek>djcb`, daviid says: here is another msg I wrote, easier for you to read and understand ( I think) then the previous link I posted: http://lists.gnu.org/archive/html/guile-user/2017-10/msg00027.html
<djcb`> Each of those is a symbol, with some value (through scm_c_define)
<djcb`>now, I'd like to fold that list using logior to the flags for my c-code
<djcb`>Can I do that without `eval`?
<djcb`>sneek: thanks!
<Sleep_Walker>can I `define` from procedure?
<manumanumanu>you can set! a global binding
<manumanumanu>what do you want to do?
<manumanumanu>you might want to dive into macros :D
<manumanumanu>hooray!
<Sleep_Walker>I wanted something like `(define (generate name) (define-public (string->symbol name) (write "name")))` so I could later in the module call (generate something)
<Sleep_Walker>my use case is generating some similar packages for guix
<manumanumanu>that seems like macro territory
<manumanumanu>but you can't introduce global bindings witout doing voodoo
<manumanumanu>unless you are already at the top level of the module
<rekado>Sleep_Walker: for generating similar packages in Guix it’s better to use a procedure that returns package values.
<Sleep_Walker>rekado: thanks, I figured it out with your help :)
***chrislck1 is now known as chrislck
<roelj>Has anyone ever been able to write to a file faster than ~5MB/s with Guile? It seems in my scripts Guile can't go faster than that..
<cmaloney>even to /dev/null?
<roelj>Let's see..
<roelj>How can I measure that?
<cmaloney>write your files to /dev/null? :)
<cmaloney>and measure it however you're measuring the speed now. :)
<roelj>I used iotop..
<cmaloney>You might also check doing something like cat /dev/zero to a file on your disk and see how fast that is
<cmaloney>though you'll fill up disk rather quickly so be cafeful
<cmaloney>careful
<roelj>Using dd if=/dev/zero of=~/test.bin: 1048576000 bytes (1.0 GB, 1000 MiB) copied, 3.23998 s, 324 MB/s
<cmaloney>Is that corroborated by iotop?
<roelj>I could use a counter in Guile, but that would affect its speed.
<roelj>Pretty much, it peaked at 309MB/s actual disk write.
<cmaloney>how big is the file that you're writing in guile?
<roelj>It's two lines: (define (write-recursively port) (write "...." port) (write-recursively port))
<roelj>(call-with-output-file "/dev/null" write-recursively)
<roelj>Then replace /dev/null with an actual file. So it just keeps going until I kill it.
<cmaloney>and that's topping out at 5MB/s?
<roelj>Yes.
<roelj>I also tried compiling it first :)
<cmaloney>Hm. I'm not familiar enough with Guile to know if what you're doing is intrisically slow
<roelj>Oh oh! Adding dots actually makes it faster.
<cmaloney>???
<cmaloney>You're actually writing dots to the file?
<cmaloney>I thought those were elided code. :)
<roelj>Yes.. Just dots.. Just making things as simple as possible.. :)
<cmaloney>So what you're doing is essentially print statements to the file
<roelj>Ok.. I now reached a peak of ~18 MB/s.
<roelj>Yes
<cmaloney>that is going to be a little slower than just writing a bunch of zeroes. :)
<cmaloney>specifically I believe a print statement is going to wait for the buffer to clear before printing the next statement
<cmaloney>though I'm not sure. You'll want to test that
<cmaloney>but yeah, you're not I/O bound, you're statement bound. :)
<roelj>I'd expect to be able to get up to at least ~100MB/s, but ~18 MB/s is the max..
<cmaloney>You might want to look into some other file I/O statements in guile, like streams
<rekado>roelj: you can improve I/O performance by playing with setvbuf and by using bytevectors.
***guile-guest8 is now known as rcm
<civodul>wouldn't it be great to have a Guile and/or Guix MOOC? like https://mooc.pharo.org/
<rain1>certainly would be fun.. wait didn't one get made for testing the async librayr
<rain1>oh my bad I mixed up MOOC and MUC :p
<civodul>different beasts :-)
<rain1>is there software to build a mooc? i.e. we would only have to produce the teaching material
<rain1>or would you have to build a whole web app system to make users, track progress, ..
<OrangeShark>rain1: hmm good question, haven't heard of any mooc free software systems
<OrangeShark>rain1: https://open.edx.org/ apparently this is one
<roelj>rain1: What about Moodle?
<roelj>rain1: https://moodle.org/
<rain1>wow! thats wonderful
<rekado>moodle isn’t quite the same as a MOOC, though, is it?
<rekado>It’s a platform for posting articles, fora, tests, and course materials, whereas the MOOCs I’ve seen are much more video-centric.
<stis>Hi guilers!
<manumanumanu>stis: ahoy hoy!
<manumanumanu>what is cooking?
<stis>I'm compiling python modules in guile
<stis>stress testing the compiler
<stis>manumanumanu: ^^
<manumanumanu>:D Fun things!
<stis>hard work mainly, but I love the debugging phase, strange me
<manumanumanu>stis: I was thinking about how to compile scheme to python. That seems rather unpretty
<manumanumanu>id much rather do it the other way around
<stis>yeah and you cane use schemish constructs versions of python ideoms
<rain1>maybe you could compile shceme to python bytecode
<stis>nah python bytecode does not supprort delimited continuations, tail calls etc
<daviid>wingo, I'm editng the guile-gnome page on fsf dir, your email is apwingo at eos ncsu dot edu, should I change that? if yes, let me know which one