IRC channel logs

2016-06-10.log

back to list of logs

<ijp>but let* is "pure sequential" and let "pure parallel" and there are strange examples where neither is what you want
<ijp>I can exhibit the behaviour for you, but it's hard to do *convincingly*
<ijp>I haven't looked at the above code, so I don't know that it applies
<zv>i see
<ijp>one of the examples in that file uses a special kind of let, which we call "named let" and so isn't really nested. it's more like a letrec
<ijp>(let ((dnlt #f)) (let read-fields-or-eof ((c blah)) fumble)) ~=~ (letrec ((dnlt #f) (read-fields-or-eof (lambda (c) fumble))) (read-fields-or-eof blah))
<ijp>actually that covers most of the cases in that file
<ijp>anyway
<ijp>zv: consider (let ((a 1) (b 2)) (let ((a b) (b a)) (list a b)))
<zv>considered
<ijp>and ignore that it is a completely stupid example
<ijp>you can't really turn it into a let* without introducing a temporary variable
<ijp>(let* ((a 1) (b 2) (a b) (b a)) (list a b)) produces (2 2) rather than (2 1)
<ijp>likewise (let* ((a 1) (b 2) (b a) (a b)) (list a b)) produces (1 1)
<amz3>daviid: good code, good read!
<ijp>now, this example is not something you would write, but it is something you might generate
<amz3>I just need the panama papers then :p
<ijp>if you are really good santa ClauSE comes in at night and fixes up your generated code
<dsmith>ijp: heh
<ijp>so, I've just spent the past five minutes trying to come up with a play on the "on dasher on dancer" bit from "twas the night before xmas", and I have to decide between metre and being faithful to the compilation order :/
<ijp>ACTION files idea away for winter
<zv>haha
<daviid>paroneayea: for fun https://en.wikipedia.org/wiki/Growl_(software)
<daviid>ijp: i found 2 detectives [fictional caracters/inspectors] named Banks
<daviid>how do we bind these beast: #define GI_IS_ARG_INFO(info)
<daviid>and the manual says 'Parameters: info, an info structure' I guess this means info is a pointer to an info structure right?
<kori>is it possible to use guile as a shell
<kori>(i.e. chsh -s /bin/guile)
<jmd>kori: Why not just run /bin/guile ?
<kori>jmd: every time?
<kori>I mean, I could................................ but where's the fun in time
<kori>that*
<jmd>Every time what?
<kori>jmd: I start up a shell
<jmd>Every time you want a shell, start guile. Yes.
<jmd>What do you normally do when you want a shell?
<jmd>Collect them from the beach?
<kori>open a terminal
<kori>┐('~'; )┌
<jmd>Well, yes, you could, like you say change your shell to guile with chsh
<civodul>Hello Guilers!
<wingo>good morning :)
<wingo>ACTION debugging that miscompilation on 32-bit
<civodul>heh
<civodul>BTW, see http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23682 re guix environment
<wingo>ACTION nod
<wingo>happily the bootstrap/ .go files seem to be compiled fine, so it's an optimization problem
<wingo>i have narrowed down this miscompilation a bit
<wingo>if i do a -j1 make, the bootstrap/ completes
<wingo>and the module/ build fails with a compile error on language/ecmascript/base.go
<wingo>that error goes away if i delete the optimized language/cps/types.go
<wingo>however, if i make clean in module/, then make language/cps/types.go with optimizations, then make base.go, it succeeds
<wingo>indicating that it's types.go which is miscompiled due to some earlier miscompilatoin
<wingo>exciting :)
<wingo>i am currently running a script to build all previous .go files, then build types.go, then base.go
<wingo>once i find the error i will know which file to work on :)
<wingo>downloading cvs from guix was 666 KB
<wingo>coincidence? i think not
<ArneBab_>:)
<ecraven>ominous
<nalaginrut>ACTION doesn't want to support windows for Artanis, so he is going to build docker image for quick users
<wingo>new guile documentation snapshot uploaded
<wingo>see the new ports section, fixes welcome :) http://www.gnu.org/software/guile/docs/master/guile.html/Input-and-Output.html
<nalaginrut>wingo: cool! thanks
<wingo>for posterity, i have reduced the bug on 32-bit
<wingo>it is absolutely bonkers
<wingo>you can make in bootstrap/ and then in module/ you do:
<wingo>make clean ./language/cps/intmap.go ./language/cps/intset.go ./language/cps/licm.go ./language/cps/type-checks.go language/cps/types.go language/ecmascript/base.go
<wingo>the miscompilation evidently starts with intmap.go but you need the next four files to be optimized in order for compiling base.go to error
<wingo>~~bonkers~~
<civodul>ouch, tricky
<wingo>now i can bisect on optimization flags
<wingo>or rather, the powerset thereof :/
<wingo>indeed with -O2 the error happens and not with -O1
<wingo>which is good, at least i am isolating it a bit more :)
<civodul>heh
<wingo>aaah, finally i am getting reliable backtraces in this thing
<wingo>there were a couple of cases where we could throw an error without saving the IP, made me not understand what the deal was :)
<wingo>that was weird having lots of backtraces that didn't make sense
<wingo>now it looks like maybe just a logic error in an optimization pass; hard to tell tho.
<civodul>remember the good times where all the optimizations were high-level enough that hardware details didn't matter :-)
<wingo>bah, i was testing the wrong thing
<dsmith>Happy Friday, Guilers!!
<dsmith>wingo: Wow! That sounds incredibly difficult.
<wingo>it's a pain but since everything works fine with -O1 it's possible to narrow it down
***DerGuteM1 is now known as DerGuteMoritz
***Bobbejaantje is now known as McScottish
<paroneayea>hello, *!
<civodul>hey, paroneayea!
<paroneayea>hi civodul :)
<paroneayea>I'm back from traveling, settling back into things
<civodul>welcome back, then :-)
<avoine>wingo: I would need a favor; I'm trying to package minara (https://github.com/robmyers/minara-scheme) into Guix but it requires the git version of guile-cairo.
<avoine>Would you mind making a release? I'll do the rest an update it's version/checksum in Guix.
<avoine>if that's not too much trouble
<amz3>here's a very simple csv parser using guile parser combinators
<amz3> http://paste.lisp.org/display/318032
<amz3>yeah could have made this a bit better
<amz3>ie. (compose list->string car)
<amz3>and remove the pk
<amz3>now i need to find a way to explain it