IRC channel logs

2015-02-10.log

back to list of logs

***cluck` is now known as cluck
<wleslie>sneek: how are you enjoying the prerelease?
<jgrant>What are the big features in 2.2, sans the VM speed increase iirc?
<mark_weaver> http://git.savannah.gnu.org/cgit/guile.git/tree/NEWS
<mark_weaver>however, I have not yet agreed to transparently thread-safe ports.
<mark_weaver>so please consider NEWS item tentative
<davexunit>this is one hell of a NEWS file
<davexunit>amazing work, guile core hackers.
***please_help is now known as moshe
<nalaginrut>morning guilers~
<lloda`>mark_weaver, that's not what I'm after, I want something for the repl, or some way to set the default there.
<civodul>Hello Guilers!
*civodul likes SRFI-121
<wingo>morning civodul :)
<wingo>srfi is still numbering their standards, cute
<wingo>oh did i say cute i meant ridiculous
<wingo>:)
*wingo troll, la la la
<civodul>troll!
<civodul>:-)
<wingo>:)
<civodul>SRFI-generators
<wingo>if only we had some kind of universal resource identifier
<civodul>heh
<civodul>SRFI-aeadcc69-d582-4575-91d4-e1aac7081060
<civodul>
<wingo>so what is the deal with gdb in guile? debian doesn't build it that way
<wingo>er
<wingo>guile in gdb
<wingo>mark_weaver: whenever you are around, would be interested in your thoughts on the unorder finalization vs mark functions thing
<wingo>or civodul too! did that sound like a source of bugs to you?
<wingo>that a marker for a still-live object that's on the finalization queue could see other, already-finalized objects?
<civodul>not really a source of bugs for me ;-)
<civodul>but again, we can't suddenly turn on topologically-ordered finalization
<nalaginrut>oh I love SRFI-aeadcc69-d582-4575-91d4-e1aac7081060, please add it!
<nalaginrut>;-D
<nalaginrut>wingo: I removed .tarball-version manually, so the version problem gone
<wingo>civodul: why can't we turn on topologically-ordered finalization?
<wingo>civodul: i guess you don't use libs with markers and finalizers, right?
<wingo>somewhat surprised you haven't seen an issue with gnutls, but whatevs
<wingo>maybe it's because you're still on guile 2.0 ;-)
<wingo>civodul: would you mind if i did a prerelease of 2.2 any time?
<wingo>i think i just need to update docs
<civodul>wingo: GnuTLS doesn't have any problems with 2.0
<civodul>i haven't checked with 2.2
<wingo>k
<wingo>the change there is that finalization happens on another thread by default
<civodul>wingo: i don't mind for the prerelease (on the contrary :-)), as long as the disagreements with mark_weaver as resolved
<civodul>right
<wingo>which disagreements with mark? i can remember many but nothing current :)
<civodul>check your email, really :-)
*wingo superpower: forgetfulness
<wingo>ok!
<wingo>that's the thing with email, you have to keep checking it :P
<civodul>well it's just from today or yesterday
<wingo>ok
<civodul>:-)
<wingo>do you have opinions about port threadsafety, civodul ?
<civodul>wingo: i sympathize with both viewpoints :-)
*civodul ought to live in Switzerland ;-)
<civodul>i can see why we'd want to follow the libc precedent
<civodul>and i can see why we'd want thread-safety by default
<civodul>perhaps the thing is just to provide '-unlocked' variants
<sneek>wleslie: As the master bids
*davexunit compiles master
<wingo>civodul: you would prefer to expose -unlocked variants rather than exposing the ability to put a port into unlocked mode?
<wingo>libc has modes that file streams can be in, and one is unlocked
<civodul>ah yes, that's probably even better
<civodul>it's not clear to me how that would work performance-wise, though
<wingo>it's what libc does and it works fine.... blah
<daviid>amazing work indeed! congrat congrat! wingo, if you had some available pay time to get slot inheritance 'à la clos' it would be ideal, to get in 2.2, wdyt?
<wingo>daviid: sure. there will be many (maybe a dozen) prereleases, so there is no immediate rush, and i am booked for the next couple weeks; let's talk over mail though (the igalia address, i still lose things on the other side :)
<wingo>wingo@igalia.com
<daviid>ok, good news! let's talk there then
<wingo>excellent :)
<davexunit>did some silly microbenchmarks with a loop that counts to a billion
<davexunit>guile 2.0.11 took 71 seconds, guile 2.1 took 8 seconds, ruby 2.1.5 took 42 second, and node 0.10.36 took only 953ms
<davexunit>it's scary how fast V8 is.
<wingo>it's a loop, any compiler can do a good job on that :)
<wingo>native compiler, i mean
<davexunit>yes, that's true.
<wingo>though i guess unboxing to native integers helps v8 there
<davexunit>it was interesting to see the wildly different performance between the various dynamic languages I had on hand
<wingo>indeed
<davexunit>it's nice to see Guile beat the pants of ruby and python ;)
<davexunit>off*
<wingo>hehe :)
<wingo>what was the python number?
<wingo>and which python version
<davexunit>I hit C-c before the benchmark was done... it was taking several minutes. I must have done something wrong
<davexunit>3.3.5 is the version I'm trying
<davexunit>it's the version we have in guix.
<davexunit>guix has made it quite easy to try out these things quickly
<daviid>wingo: the goops refactoring is really great, did you came to run some speed check, goops related I mean before and after?
<wingo>daviid: i ran some speed checks afterwards, and had to make a lot of optimizations as a result
<wingo>the status is that it is faster than 2.0 but slower than it was before the optimization (because 2.2's compiler is faster)
<wingo>there is lots of room to make it faster tho
<wingo>but do measure and see how it is for your workload
<wingo>the dispatch was about the same before and after, it's mostly the initialization and slot access that can be tricky
<davexunit>python3 is just churning away...
<wingo>davexunit: did it work for small numbers?
<davexunit>and since I said that, it just finished.
<wingo>ah cool :)
<daviid>wingo: ok, great! we have room for... the fact we have most of it in scheme is a win anyway!
<davexunit>123 seconds.
<davexunit>I timed the whole application run, though, with 'time', but I don't think the startup/shutdown time makes much of a difference considering how long this took
<wingo>davexunit: did you use "for"? what if you use "while" and explicitly increment a local?
<davexunit>I used while
<davexunit>I want to try for with a range now
<davexunit>first test:
<davexunit>i = 0
<davexunit>while i < 1000000000:
<davexunit> i += 1
<davexunit>
<wingo>ah that should be equivalent
<wingo>dunno tho, sometimes for has special bytecode compilation
<wingo>silly things
<davexunit>for i in range(1000000000):
<davexunit> i
<davexunit>
<davexunit>50 seconds
<wingo>funny
<davexunit>yeah
<wingo>careful if you try that in python 2 though, i think in python 2 it makes an array eagerly, of a billion elements in this case
<moshe>but how does guile compare to other schemes and lisp?
<wingo>there you have to use xrange i think
<moshe>say, chicken, bigloo, ikarus, and also sbcl, clisp, and clojure
<wingo>moshe: dunno :) sounds like a project for you :)
<davexunit>I imagine chicken will be faster
<davexunit>yeah try it out :)
<wingo>i think most of those will be faster
<moshe>in python 3.0+, range IS xrange
<wingo>except for clisp and maybe clojure
<wingo>depends tho
<wingo>measurement is the source of truth here :)
<moshe>then again, a simple while loop isn't a very interesting benchmark ;)
<davexunit>yeah
<wingo>indeed :)
<davexunit>but it was easy to try :)
<daviid>mark_weaver: about the patch you wrote for me related to threads, is it in master?
<mark_weaver>daviid: do you mean popen thread safety? if so, yes.
<mark_weaver>(I'll be mostly afk today, because of a new baby born into my household a few hours ago)
<daviid>mark_weaver: yes that one. Oh, baby bearth, fantastic! welcome baby!
<davexunit>aww :3
<dsmith-work>mark_weaver: Contratulations!
<paroneayea>mark_weaver: wow, congrats!
<paroneayea>mark_weaver: go pay attention to those baby things :)
<daviid>wingo: just checked out the master branch as well and both make, make check worked perfectly here, GNU Guile 2.0.11.114-649ec. will leave it as is for now, but later will compile g-wrap and friends... bbl
*dsmith-work needs a newer auto* to build master
<mario-goulart>davexunit: out of curiosity, I run that loop thing here in CHICKEN, and the result is funny. Interpreted: 3m30.489s. Compiled: 0m0.846s.
<davexunit>mario-goulart: makes sense to me. the interpreter is slower than expected, but chicken does native compilation so 846ms seems about right, given that V8 achieves similar speeds.
<mario-goulart>right
<davexunit>guile will get there when our lord and savior wingo blesses us with native compilation.
<davexunit>and there will much rejoicing.
<mario-goulart>:-)
<davexunit>"... and wingo looked upon the compiler and saw that it was good."