IRC channel logs

2017-03-15.log

back to list of logs

<wingo>civodul: regarding EBADF: the intention is fport_close is called at most once. it shouldn't be possible for it to close a bad file descriptor
<wingo>there were some changes in 2.2 to ensure this, at least from guile's side
<wingo>civodul: so i am thinking that in your case, you extracted the file descriptor and somehow caused it to be closed outside of the port
<wingo>EBADF is a bad error because it is the nicer of two possibilities:
<wingo>it means the file descriptor was not reused. but it could have been, and in that case fport_close would be closing some random file descriptor
<wingo>which would be terrible
<wingo>civodul: does this make any sense? i would imagine your bug is hard to repro in a small test case but i'm interested in any case
<civodul>wingo: i think there are 2 issues: one is the incompatibility with previous Guile versions, and another one is whether the previous behavior made sense
<wingo>hmm
<civodul>i saw the problem in (guix zlib)
<wingo>i was thinking that the previous ignore-ebadf behavior was because previous guile had a bug where the close function could be called multiple times.
<civodul>basically you pass an open fd to gzopen, and zlib eventually closes it for you (whether you like it or not ;-))
<wingo>ah yes :) in that case i would use "dup" to create a new fd for zlib to use
<civodul>it's not clear that it's a bug, it just means 'close-port' is idempotent
<wingo>i think (guix zlib) was simply buggy.
<wingo>the reason being, any other thread could have opened another file after zlib closed its file
<wingo>and then that would mean that closing the file port would close that third party's fd.
<civodul>i think that zlib closes FDs on your behalf is not great
<wingo>it's not a problem if you give it a fresh fd, no?
<civodul>but (guix zlib) explicitly relied on the fact that close-port is idempotent, there's even a comment ;-)
<civodul>right, i can try tht
<civodul>it's not entirely clear to me that this is the right move for close-port in general, though
<wingo>there are two things here:
<wingo>close-port and fport_close
<wingo>fport_close will be called at most once
<wingo>close-port can be called multiple times
<civodul>oh right
<civodul>so you'd get EBADF only when the fd was closed behind your back
<wingo>yep
<civodul>right?
<civodul>cool
<civodul>that makes sense
<civodul>sorry for the confusion
<wingo>np :)
<wingo>tx for walking through it with me :)
<civodul>ok, let me see what i can do in (guix zlib) :-)
<wingo>civodul: hey question for you, or for other wizards
<wingo>you know prebuilt has prebuilt binaries
<wingo>and the idea was to make symlinks for other architectures
<wingo>in the end what i am doing is making a symlink for 32-bit-big-endian etc
<wingo>anyway that dir contains prebuilt .go files for three concrete architectures and three generic symlinks pointing to them
<wingo>the symlinks were not getting disted before; doh
<wingo>now i added them to EXTRA_DIST but extracting the tarball creates real directories.
<wingo>however the tarball itself isn't proportionally larger
<wingo>is this a problem? is there a way to make sure that the extracted tarball has symlinks too?
<wingo>humm i guess the links end up in the tarball, that's fine i guess
<wingo>seems automake arranges to add the --dereference (h) argument to tar
<wingo>so it effectively puts hard links into the tarball, and extracts copies
<wingo>i guess it's just fine
<wingo>ACTION distchecks a 2.2.0
<ArneBab_>wingo: nice!
<civodul>wingo: the tarball should preserve the symlinks so no problem
<lloda>I have random failures of FAIL: gc.test: gc: after-gc-hook gets called
<lloda>have had them for a while now
<wingo> https://wingolog.org/pub/guile-prerelease/
<wingo>lloda: weird. not really sure what the deal is
<lloda>it's all I have :-/ it doesn't mean much to me. I just repeated it and it passed. Really seems random.
<wingo>ACTION starts a guix guile-next build for that prerel
<webshinra>scm_from_uint64(reinterpret_cast<uint64_t> (this))
<webshinra>^ the only way I found to pass a pointer to scheme :D
<wingo>in c++ yeah :/ someone should write a nice thin c++ wrapper for libguile
<peterbrett_work>wingo: It's definitely something that I would like to have for gEDA development
<wingo>maybe with guile 2.2 someone will do it :)
<webshinra>if I can get time to do it I'll try
<webshinra>(or if we get enough money so I could put one of my subordinate on it as a side project :P)
<wingo>:)
<webshinra>it's hackish but it work fine : https://framapic.org/tJiiW4ZlyJRB/ARMWGjqMnwD3.png
<ArneBab_>wingo: I get a configure error on solaris: checking for socklen_t equivalent... configure: error: Cannot find a type to use in place of socklen_t
<ArneBab_>on SunOS imksunth5 5.11 oi_151a7 i86pc i386 i86pc
<ArneBab_>that’s the old open indiana a7: https://wiki.openindiana.org/oi/oi_151a_prestable7+Release+Notes
<ArneBab_>wingo: I still get the (string #<eof>) error with 2.2
<ArneBab_>on illumos hipster the socklen_t test succeeds
<amz3`>webshinra: what is it?
<webshinra>amz3`: «Openspace Simulator: a french simulator»; it will be a strategy videogame in the spirit of «theme hospital» where you should exploit people to satisfy shareholders
<webshinra>(the title being a pastiche for «german's simulators» where your supposed to «play to work»)
<civodul>wingo: i've started: ./pre-inst-env guix build guile@2.1 --with-source=https://wingolog.org/pub/guile-prerelease/guile-2.2.0.tar.xz --rounds=2 -K
<civodul>after changing the name from "guile-next" to "guile"
<spk121>Good (UTC-7) morning Guile. Last night I hacked a master Guile on Cygwin that ran test-suite without crashing. I'm rather pleased.
<spk121>probably will end up being 4 more patches
<davexunit>spk121: hey that's good news
<davexunit>I hope to one day be able to make windows builds of games written in guile.
<wingo>after changing guile-next to guile! neat :)
<wingo>ArneBab_: i think you might have a stale .go file somewhere
<civodul>wingo: that gives me differences in the 2nd round in srfi/srfi-18.go, weird
<wingo>spk121: that's great :)
<davexunit>civodul: odd, guile 2.1.8 built for me and was reproducible
<civodul>ACTION retries without prebuilt/
<civodul>davexunit: yeah, sometimes it's scheduling-sensitive
<wingo>it does seem like the linker makes some gensyms for section names
<civodul>uh
<wingo>do you have the files?
<wingo>maybe that gensym just goes away tho
<wingo>ACTION was just doing a grep for gensym
<civodul>wingo: http://web.fdn.fr/~lcourtes/tmp/guile/
<civodul>it's in "l-" identifiers
<wingo>that would seem to be module-gensym from psyntax
<civodul>yeah
<civodul>that seems to happen in stuff related to define-record-type
<wingo>interesting
<wingo>civodul: guix pack is nice :) one thing, i couldn't -S /opt/guile-2.2.0= but I could -S /opt/guile-2.2.0=/
<civodul>i see
<wingo>23 MB for the closure in xz format, i reckon that's all right
<davexunit>sounds pretty good to me.
<wingo>wingo@wingonode:/$ /opt/guile-2.2.0/bin/guile
<wingo>guile: warning: failed to install locale
<wingo>warning: failed to install locale: Invalid argument
<wingo>GNU Guile 2.2.0
<wingo>Copyright (C) 1995-2017 Free Software Foundation, Inc.
<wingo>on the one side, great :)
<wingo>on the other, the guix locale issue
<wingo>incredibly cool tho
<civodul>right!
<civodul>but since when Guile complains about locales?
<wingo>guile 2.2 installs the locale by default
<civodul>right, but the warning itself, that's just at the REPL maybe?
<wingo>no
<wingo>it's in libguile/guile.c i think
<wingo>in 2.0 as well i think, just that should_install_locale() in 2.0 is false by default
<civodul>yes
<civodul>so we could add glibc-utf8-locale to the tarball, or something smaller
<civodul>but then we still need to set GUIX_LOCPATH somehow :-/
<random-nick>I thought guix uses lzip?
<wingo>guix can use many things :)
<wingo>this is for making a binary release; do all interesting targets have lzip?
<wingo> https://wingolog.org/pub/guile-prerelease/ if you want to try out my x86_64 guile pack
<wingo>just extract in /. it adds to /gnu/store and makes /opt/guile-2.2.0 symlink into the store, that's all
<wingo> https://wingolog.org/pub/guile-prerelease/guile-2.2.0-pack-x86_64-pc-linux-gnu.tar.xz <- the thing
<wingo>i guess i should sign it
<wingo>done
<wingo>civodul: is it a problem if you add a file to the store on a guix system and don't add it to the db?
<wingo>like later if you build that file on guix, will it conflict?
<ArneBab_>wingo: oh … you’re right. Thank you!
<wingo>:)
<ArneBab_>touch *.scm sufficed :)
<civodul>wingo: anything not in the ValidPaths table of the DB is considered invalid
<efraim>building guile-2.2.0 on aarch64 now
<civodul>and is thus subject to GC
<wingo>civodul: so if you gc'd, they would go away. cool
<civodul>wingo: re lzip, i think it's ok to rely on it, it's relatively widespread now and it's portable
<wingo>it does better than xz too which is pleasing
<efraim>lzip isn't included by default in guix's unpack phase
<civodul>efraim: right, we should change that
<wingo>i guess i will start migrating the manual on the web site then
<civodul>woohoo!
<civodul>make sure to use the latest gendocs.sh from Gnulib
<civodul>for the nice CSS
<wingo>civodul: regarding the locale stuff, i guess we should just include glibc-utf8-locales and tell users to set GUIX_LOCPATH if the locale thing bothers them. would have been nice to fall back to some well-known locale support but oh well.
<wingo>right
<wingo>i think first i need to move 2.0 docs away
<wingo>which will take a little time
<davexunit>guile 2.2! https://media.giphy.com/media/rl0FOxdz7CcxO/giphy.gif
<wingo>:)
<wingo>aaah this is so cool, i can make binary releases of guile+fibers
<wingo>i think my goal would be to have everything already written and just do the ftp.gnu.org upload, fire off the release mails, and commit to the web site tomorrow morning
<wingo>maybe i blog too. yall should too of course :)
<wingo>hopefully with this docs thing i won't have to touch cvs very much tomorrow :P
<wingo>ACTION currently in a long "cvs commit" to update docs
<dsmith-work>Wednesday Greetings, Guilers
<dsmith-work>wingo: What's the windows support like for symlinks in tarballs?
<dsmith-work>I've heard rumors that ntfs does suport something like a symlink.
<wingo>dunno :)
<wingo>www.gnu.org/s/guile/manual
<wingo> http://www.gnu.org/software/guile/learn/ mentions guile 3.0 now :-)
<wingo>anyway, just prepping things for tomorrow.
<dsmith-work>Guile 3.0 !!
<dsmith-work>Shoun't that be 2.3 ?
<wingo>dunno
<wingo>the old "development series" link was to 2.2
<wingo>so to my mind it should be either 2.4 or 3.0
<wingo>but i dunno
<lloda>native deserves 3.0!
<wingo>i agree!
<wingo>ecraven: did the benchmark run complete? :)
<dsmith-work>Yeah, I mean't 2.4
<dsmith-work>Yeah, native 3.0 absolutely
<ecraven>pushed http://ecraven.github.io/r7rs-benchmarks/benchmark.html
<ecraven>hope it's all correct
<wingo>does it take a while to update?
<ecraven>should not
<wingo>i still see the 2016-12-01 date
<ecraven>yea, me too
<wingo>maybe it is coming
<civodul>Guile 3.0, Phoronix should pick this :-)
<wingo>;-)
<civodul>wingo: ok for glibc-utf8-locales
<ecraven>wingo: now
<ecraven>my fault, I stopped using branch gh-pages, but still pushed to it
<wingo>cool
<wingo>aah, so satisfying.
<[df]_>racket didn't finish any tests?
<wingo>indeed that's a little odd
<paroneayea>so about Guile 2.2
<wingo>and i reckon the gc bug that was just fixed relates to the guile timeout in ctak
<paroneayea>should maybe we/I email someone at LWN about it?
<wingo>indeed! maybe you can pitch an article, if that's your thing :)
<wingo>otherwise they'll pick up the release note in any case, i imagine
<wingo>probably not lucky enough to get a feature article, but who knows
<dsmith-work>ecraven: Should it have guile-2.2 ?
<wingo>dsmith-work: it does
<wingo>well it has 2.1.8
<wingo>close enough
<dsmith-work>ok
<paroneayea>feature highlights? dsmith-work and I wrote some up yesterday, are we missing anything?
<wingo>oh i didn't see those
<wingo>maybe i should pull mail
<paroneayea><dsmith-work> So what's the major changes in 2.2? Register VM instead of stack VM. Go files are now elf. What else?
<paroneayea><dsmith-work> Dynamic exapandable stack.
<paroneayea><paroneayea> dsmith-work: suspendable ports
<paroneayea><paroneayea> dsmith-work: goops rewrite from C -> Scheme
<paroneayea><paroneayea> dsmith-work: lots of optimizations
<paroneayea><paroneayea> dsmith-work: some types were unboxed (floats, ???)
<paroneayea>(I guess bipt's elisp stuff probably isn't landing in 2.2.0... maybe 2.2.1? :))
<wingo>i think some of bipt's old elisp stuff is there but yeah, need to land the new stuff
<ArneBab_>in many of the tests by ecraven, Guile is now in-between the really fast schemes and the medium speed schemes \\o/
<paroneayea>is NEWS accurate?
<paroneayea>** Complete Emacs-compatible Elisp implementation
<paroneayea>Thanks to the work of BT Templeton, Guile's Elisp implementation is now fully Emacs-compatible, implementing all of Elisp's features and quirks in the same way as the editor we know and love.
<paroneayea>was the previous stuff also fully emacs-compatible? I thought that was only true in the newer branch that emacs was actually able to run with it
<dsmith-work>ecraven: Would be nice if the different implementations could be grouped by: interpreted, native, vm
<dsmith-work>ecraven: But I should say up front you have done an incredible job putting all that together. Well done.
<wingo>paroneayea: there was a previous batch of work that landed there
<wingo>ecraven: yeah, really cool stuff. i like playing the ecraven-benchmarks game :)
<paroneayea> http://sebsauvage.net/paste/?93cf171dd878c65a#JRPI4L1ds1z6q9nhTYK2fADCHxdAwDbeilsmsKRYBCQ=
<paroneayea>draft of email to send to lwn
<paroneayea>anything else to add?
<paroneayea>hm
<dsmith-work>paroneayea: heh
<wingo> http://git.savannah.gnu.org/cgit/guile/guile-web.git/commit/?id=e7c083eafca7e8d9f483709135e859949610f3c0
<wingo>^ release notes for web site
<wingo>wdyt?
<wingo>i find the goops rewrite not so compelling a feature, thinking about non-guilers but that's just me perhaps
<dsmith-work>wingo: Nice!
<paroneayea>wingo: it looks good, but I think it's missing some exciting bullet points, maybe snarf some things from http://sebsauvage.net/paste/?93cf171dd878c65a#JRPI4L1ds1z6q9nhTYK2fADCHxdAwDbeilsmsKRYBCQ= ? in particular, the suspendable ports stuff and the goops rewrite are worth calling out IMO
<paroneayea>at least the suspendable ports is
<wingo>i don't know if i can link to fibers from gnu.org since it's on github
<dsmith-work>wingo: So! When will 2.4/3.0 be ready?
<paroneayea>wingo: hm. you can at least mention that the asynchronous programming facilities are available
<dsmith-work>ACTION hides
<wingo>dsmith-work: trololol :)
<paroneayea>without mentioning specific libraries
<wingo>paroneayea: i did with the "lightweight threading libraries" i think
<wingo>dunno
<wingo>maybe it deserves its own ¶
<wingo>hehe compose P P
<paroneayea>wingo: ah yeah I suppose so!
<wingo>maybe a link is OK, i think github works fine with librejs
<wingo>paroneayea: http://git.savannah.gnu.org/cgit/guile/guile-web.git/tree/posts/gnu-guile-2.2.0-released.html?id=a60e2e4fad953388b6dfcb40462b0306f17f4f8d
<wingo>wdyt
<civodul>wingo: looks nice!
<civodul>perhaps in the last paragraph you could add that many(?) Guile libraries and tools are already available for 2.2
<civodul>something like that
<civodul>wingo: FWIW i get the srfi-18.go difference even when building "entirely" (after rm -rf prebuilt)
<davexunit>wingo: heh, this shows that there's a bug in haunt.
<civodul>not a release-critical bug though :-)
<wingo>davexunit: where?
<davexunit>rather than expecting one tag to enclose them all, I should just keep calling xml->sxml until eof
<davexunit>wingo: "<div> <!-- needed to placate Haunt's 'html-reader' -->"
<wingo>ah
<davexunit>not a blocker bug, but an annoyance
<civodul>davexunit: the bug might be in the sxml stuff i wrote though
<wingo>i just copy that from previous entries
<civodul>i realized that lately
<wingo>ACTION silly user
<wingo>also civodul wdyt about that release note for gnu.org?
<wingo>ah i see you said :)
<wingo>ok :)
<wingo>ok i can add that mention
<wingo> http://git.savannah.gnu.org/cgit/guile/guile-web.git/tree/posts/gnu-guile-2.2.0-released.html
<paroneayea>wingo: looks great!
<civodul>wingo: should we publish a Docker image in addition to the binary tarball?
<civodul>(i'm thinking of ftp.gnu.org, not DockerHub)
<dsmith-work>wingo: v2.1.8-12-gda9dee0 failed make check for me. Looking to see where...
<dsmith-work>Hah!
<dsmith-work>FAIL: version.test: version reporting works
<civodul>dsmith-work: you can ignore this one :-)
<dsmith-work>Indeed
<wingo>civodul: yeah that would be great! i don't have a means of testing docker tho
<wingo>unless guix has it already of course
<wingo>actually i guess i have some servers with docker... anyway yeah
<wingo>civodul: regarding 2.2.0 -- should we upload it already? would Hydra have time to build it?
<wingo>if not, no big deal, i don't plan on revving the tarball
<civodul>wingo: Guix has Docker support in 'guix archive -f docker' currently
<civodul>the plan is to move it to 'guix pack', which could happen real soon
<sneek>Understood.
<civodul>wingo: so you'd send the announcement tomorrow noon CET?
<dsmith-work>sneek: forget the plan
<sneek>Consider it forgotten.
<wingo>civodul: yeah i was referring to the "running docker image" side of things
<wingo>anyway yeah tomorrow noon CET sounds good to me
<wingo>guix pack is really cool.
<akkad>is ice-9 the package manager for guile?
<akkad>and can guile deliver standalone bins?
<OrangeShark>akkad: ice-9 is just a collection of guile modules that comes with guile
<wingo>guile can't deliver standalone binaries right now.
<wingo>also what OrangeShark said is right too :)
<taylan>wingo: concretely speaking, what prevents the utfX->string patch from getting applied?
<wingo>taylan: i am busy with the release is one factor :)
<wingo>the other is that i feel like we should be able to set the encoding e.g. in the utf16 case to one of utf-16be or utf16-le if the endianness is specified, or utf-16 if not, and rely on the code in ports to DTRT
<wingo>if we can avoid two places in guile that do BOMs, then i want that. so we need to look for that solution if it exists
<amz3>héllo #guile
<wingo>meow
<ecraven>dsmith-work: the entire presentation could use a lot of love ;-) if I ever find a bit of time, I'll work on it some more
<paroneayea>wow
<paroneayea>so I'm reading the Evolution of Lisp book
<paroneayea>interesting anecdote in here
<paroneayea>> In April 1981, ARPA called a "Lisp Community Meeting", in which the implementation groups got together to discuss the future of Lisp. ARPA sponsored a lot of AI research, and their goal was to see what could be done to stem the tide of an increasingly diverse set of Lisp dialects in its research community.
<paroneayea>> The day before the ARPA meeting, part of the Interlisp community got together to discuss how to present a situation of a healthy Interlisp community on a variety of machines. The idea was to push the view of a standard language (Interlisp) and a standard environment existing on an ever-increasing number of different types of computers.
<paroneayea>> The day of the meeting, the Interlisp community successfully presented themselves as a coherent group with one goal and mission.
<paroneayea>> The MacLisp-descended groups came off in a way that can be best demonstrated with an anecdote. Each group stood up and presented where they were heading and why. Some questions arose about the ill-defined direction of the MacLisp community in contrast to the Interlisp community. Scott Fahlman said, "the MacLisp community is not in a state of chaos. It consists of four welldefined groups going in four well-defined directions." There
<paroneayea> was a moment's pause for the laughter to subside [Steele, 1982].
<paroneayea>... at the time, InterLisp and MacLisp were kind of the two big lisps, but each was fractured in many ways
***dje_ is now known as xdje
<paroneayea>(after this, work began to start standardizing the fractured maclisps, and that's how Common Lisp happened)
<paroneayea>that last bit though
<paroneayea>> "the MacLisp community is not in a state of chaos. It consists of four well-defined groups going in four well-defined directions." There was a moment's pause for the laughter to subside.
<paroneayea>oof!
<paroneayea>too familiar.
<taylan>heh. sounds better than the RnRS situation to me :P
<paroneayea>;)
<paroneayea>also reminds me of trying to coordinate federation standards :P
<taylan>wingo: oh, feel free to neglect until 2.2 is out ^^ regarding the other, I guess this works to reuse existing BOM handling: (get-string-all (transcoded-port (open-bytevector-input-port bv) (make-transcoder (utf-16-codec)))). not sure if there's a simpler way.
<amz3>I had brillant idea, I will write my own scheme interpreter:)
<OrangeShark>amz3: I was writing one :)
<amz3>OrangeShark: how?
<amz3>I was saying that as joke, but now you say it, maybe there is an interest we writing a tiny toy scheme interpreter to understand how things are implemented
<wingo>you might be interested in ice-9/eval.scm :)
<OrangeShark>amz3: wrote it in Java, using ANTLR for parsing, and just creating a AST and interpreting it.
<amz3>the only similar thing I did, was using Python and ply library a tiny c interpreter & compiler at the same time
<OrangeShark>a lot of scheme and lisp books tend to have a chapter on writing one
<OrangeShark>at least a minimal version
<amz3>ACTION read no (scheme) book
<amz3>ah ok
<amz3>I did not even start SICP
<amz3>eval.scm seems so alien to me right now
<amz3>the unknown
<amz3>a mistery
<wingo>spend some time with it :)
<paroneayea>amz3: You'll like SICP's treatment of writing an interpreter in lisp
<paroneayea>especially
<paroneayea>because they modify the interpreter to do various experiments
<paroneayea>including dynamic scope, and even a prolog / minikanren like language layer
<paroneayea>amz3: and i know you're interested in the latter
<taylan>is there a way to set the default endianness of a textual port with a utf-16 or utf-32 transcoder?
<amz3>paroneayea: oh
<amz3>I am trying to learn minikaren by hearth even if I don't understand some procedures
<paroneayea>amz3: I recommend both going through the SICP book and watching the SICP video lectures concurrently
<amz3>I don't do videos... at least nowdays
<paroneayea>ok! well, you don't have to, but I found them helpful
<OrangeShark>amz3: yeah, I think you would like the interpreter chapter as well in SICP
<amz3>I will try to read it tomorrow while in the transports
<paroneayea>taylan: here's another bit of history of common lisp, which might related to r7rs-small and r7rs-large https://identi.ca/cwebber/comment/b_uft0DSTxqBFaTJxkJD4w
<civodul>interesting, history repeats itself
<paroneayea>there's so much interesting here
<paroneayea>I'm only going to go into a small fraction of it in my talk
<paroneayea>er, so much interesting history here
<taylan>I also think core language plus optional modules is a good idea, don't really understand why people oppose it. (that said, I've had major issues with individual modules (and the lack of some) that are on the path to become R7RS-large, but that's another topic)
<paroneayea>I think it's a good idea, that in many ways is hard because it is happening so "late in the game" for many schemes
<amz3>so what's the solution? abandon standardization work?
<paroneayea>I don't think so
<paroneayea>well, I'm not sure how many rnrs things are needed, but I do think standards are both important, but forever warty
<paroneayea>my gosh the common lisp section of this book is so full of juicy history I just want to quote the whole thing
<paroneayea>also interesting, after the section about "The Critique of Common Lisp"
<paroneayea>> This theme reappeared in the history of Common Lisp--the emergence of a number of "unCommon" Lisps, straining, perhaps, the tolerance of even the most twisted lovers of overused puns. Each unCommon Lisp proclaimed its better approaches to some of the shortcomings of Common Lisp.
<paroneayea>> Examples of Lisp dialects that officially or unofficially declare themselves "unCommon Lisps" are Lisp370, Scheme, EuLisp, and muLisp. This is clearly an attempt to distance themselves from the perceived shortcomings of Common Lisp, but, less clearly, their use of this term attests to the apparent and real strength of Common Lisp as the primary Lisp dialect. To define a Lisp as standing in contrast to another dialect is to admit the
<paroneayea> supremacy of that other dialect. (Imagine Ford advertising the Mustang as "the unCorvette".)
<paroneayea>> More than any other single phenomenon, this behavior demonstrates one of the key ingredients of Lisp diversification: extreme--almost juvenile--rivalry between dialect groups.
<wingo>taylan: re default endianness, "utf-16be" vs "utf-16"
<paroneayea>the section on Scheme is also really great
<amz3>> rivalry between dialect groups.
<paroneayea>personally, I think if you're using a lisp day to day, you're pretty lucky :)
<amz3>yep
<paroneayea>eg the lisp-1 vs lisp-2 war, while I have opinions on it, hey, if i'm still writing in a lisp, it doesn't bother me so much. At least it's lisp!
<amz3>I read an interesting thing about on "indie web camp" community, where they basically say, if you don't build something that is useful for you, don't do it. Also they write code first and then standardize.
<paroneayea>yes, that's sort of true :)
<amz3>I tend to think similarly, somewhat.So, IMO, rnrs happens as long as some people are interested to debate what a scheme SHOULD be, and then implementers can build whatever they want
<paroneayea>well
<paroneayea>"implementers can build whatever they want"... yes, but if you are hoping for interop
<paroneayea>you do have to kind of sit down and make sure you're speaking the same thing
<paroneayea>if you aren't, then whatever!
<paroneayea>and the indieweb people do shoot for interop, just more late in the game :)
<void_pointer>Yeah, interop gets hard quickly. Have some code I wanted to make sure would work on Guile, Vicare, and Chicken and it was bloody hard and involved a few hacks since not all followed the standards exactly in certain places.
<amz3>yes, they nevertheless shoot for interop
<void_pointer>Never could get it to work on Gauche and Kawa
<paroneayea>"when to standardize" is a gamble
<paroneayea>too early, and you make the wrong decisions
<amz3>right now, I use both biwascheme and guile and interop happens over the network
<paroneayea>too late, and convincing people to break their own old decisions will be a tough battle
<amz3>basically they are different programs. But they participate the same software. Picking biwascheme was easy once i knew guile
<amz3>basic guile
<paroneayea>"interop over the network through message passing" is always an option, but then you're agreeing on a different standard... the syntax and ontology of the messages :)
<void_pointer>Haven't tried biwascheme yet. Might look into it when I got some other things finished.
<amz3>void_pointer: it's slow :(
<amz3>void_pointer: https://amirouche.github.io/ohmypalette/
<taylan>wingo: what I need is "heed the BOM if present, otherwise fall back to <given endianness>"
<void_pointer>Not an issue. I am aiming to make sure my code works on as many implementations as possible. It is easiest for those that follow R6RS or R7RS-small to the letter
<amz3>void_pointer: what is your code doing?
<void_pointer>Unit testing code. You've seen it before, actually, back in November/December
<void_pointer>Been gone a while
<amz3>void_pointer: TAP thing?
<void_pointer>SRFI-64 replacement. I still have some major work to do to actually make it a convincing replacement
<void_pointer> https://github.com/frejanordsiek/unit-test-tap
<void_pointer>Yep
<amz3>void_pointer: I have question for you!
<paroneayea>void_pointer: oh cool, I watch with interest
<amz3>void_pointer: how does tap behave in the case described in this bug https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24647
<paroneayea>void_pointer: oh! are you the one who sent the r7rs scheme edition thing? :)
<void_pointer>paroneayea: yes, that was I
<paroneayea>cool
<paroneayea>"speaking of standardizing lisps" ;)
<void_pointer>amz3: yes, it handles that
<amz3>void_pointer: I what I meant to say, is that if a procedure does throw instead of returning it should be marked as failed
<void_pointer>every single parameter for a test case is evaluated inside guard essentially
<void_pointer>including the supposed "desired value"
<void_pointer>Yes, it should be a FAIL
<void_pointer>That is what I did, unless it is expected to throw an exception but that is a different test circumstance
<amz3>void_pointer: ok
<amz3>void_pointer: does it, differenciate ERROR from FAIL?
<amz3>as in ERROR is an unexpected failure, whereas FAIL is an "assert" failing
<void_pointer>paraneayea: yeah, I wanted the r7rs libraries pretty badly, whether or not I had the r7rs syntax. They are straightforward to build form the r6rs libraries except for a few procedures and guile shored up a few of those so I set out from there. Figured might break the r7rs problem into pieces basically. Libraries are the easiest part, so a scheme newbie like me can make progress on that. Syntax stuff is much harder, so I didn't att
<void_pointer>amz3: remembering the best I can, on the normal test cases, it marks ones that threw exceptions as FAILs but then in the details for the test case says that an exception did happen and it tries to extract as much information as can be done about it
<amz3>void_pointer: tx!
<paroneayea>void_pointer: cool, well your efforts are appreciated
<void_pointer>for the test macro looking for an expected error, if it is thrown it is a PASS and if it isn't or a different one is thrown that is a FAIL (which one happened is given in the details)
<void_pointer>paraneayea: thank you
<paroneayea>void_pointer: I have my own motivation for wanting r7rs in guile :) https://lists.gnu.org/archive/html/guile-user/2017-01/msg00034.html
<paroneayea>mainly I want to see Show (formerly fmt) and irregex nicely supported in Guile
<void_pointer>Honestly, most of the libraries were just selectively importing the right stuff from the right modules and occassionally renaming. Only had to write a few functions from scratch and most of the other ones were just wrappers around Guile or r6rs ones that worked a bit differently. Spent a lot of time with both standards documents open and the guile manual and tinkering
<amz3>janneke: o/
<paroneayea>cool
<void_pointer>Just a lot of time and reading the documentation closely. Not much programming skill required.
<void_pointer>Suspect the versions of the libraries in the r7rs-wip branch are better
<void_pointer>Though, I might have written more complete documentation (or perhaps not)
<void_pointer>A few parts were ugly. Bytevector output ports. If they had been implemented in Guile like string ports were from the SRFI, it would have been easy (that is what r7rs does), but they were done the r6rs way which made things hard
<void_pointer>No builtin procedure to read the output, just the reading thunk provided by the creating procedure.
<void_pointer>Don't care if none of what I wrote gets included. It started a discussion and maybe helped get the ball rolling after 2.2.0 is done, which matters a lot more for everyone.
<void_pointer>Also, it was kind of fun to do.
<void_pointer>Good learning experience
<civodul>wingo: so BTW yes, if you upload now, we can update the Guix package and get hydra to build it
<paroneayea>:)
<void_pointer>Will be curious to see how r7rs-large turns out in the end. Heard a lot of people worrying.
<paroneayea>civodul: ooooh Guix user premium early access
<void_pointer>Honestly, with it being modular the way it is, if it gets screwed up, there can always be an r8rs to come up with replacement modules.
<void_pointer>Making a few mistakes in r7rs-large might make a better r8rs than if r7rs-large was too conservative
<paroneayea>The Revised, Revised, Revised, Revised, Revised, Revised, Revised, Revised, Report on Scheme
<void_pointer>Look at CPython for example. So many libraries in the CPython implementation have come, been replaced, and gone
<paroneayea>well, we're not at the point where it's most efficient to number in hex yet at least
<void_pointer>If there are a lot of libraries in r7rs-large, even if they are not the best choices, it will lead to more codes out there that are compatible with multiple implementations and targetted at many different ones which will in turn will get things figured out and inform r8rs
<void_pointer>The SRFIs have done this to a great extent based on how much discussion in r6rs and r7rs was about which SRFIs to include, which ones not to, which ones to change, which ones inspired pieces, etc.
<void_pointer>Unless I am greatly misunderstanding Scheme history (likely since I only started last September)
<amz3>void_pointer: much better than me, tx for the summary
<void_pointer>amz3: I looked at biwascheme. Very interesting. Definitely going to remember that one. Sadly, I won't be able to get my unit testing library to run on it since it doesn't have syntax-rules and trying to go to defmacro would be a really big undertaking.
<civodul>paroneayea: exactly :-)
<civodul>our users deserve the best ;-)
<amz3>:)
<paroneayea>:)
<wingo>civodul: ok!
<wingo>i upload
<void_pointer>A javascript based scheme might be useful sometime. Actually have an idea for its use already, especially if it supports slib. Was needing a good way to basically have a web page that has some code where the user sets some things up interactively and it generates a PDF of it formatted exactly the right way for them to keep. Would prefer not to learn javascript and woudl rather not do server-side scripting so as to avoid security p
<wingo>oh hi void_pointer :)
<void_pointer>Hi there.
<void_pointer>Sorry about the messy commit logs. First GNU project I've contributed to and I've spent too many years as a lone-wolf programmer (yeah, this leads to a lot of bad practices I am working to unlearn).
<wingo>np
<wingo>i am not the best either, i usually just try to follow what civodul does
<wingo>hoo, my dsl upload is slowwww
<void_pointer>wingo: by the way, I will clean up the r7rs library patch I submitted earlier some time next week. Not sure if any of it is useful, but I can at least make it cleaner and easier to figure out its utility or lack thereof
<janneke>amz3: o/
<paroneayea>void_pointer: http://www.biwascheme.org/ re: javascript scheme
<paroneayea>it's an interpreter though
<paroneayea>would be nicer to have something like guile -> WASM
<wingo>void_pointer: no rush; for review purposes i would like to go module-at-a-time i think if that's possible; i guess we'd start with "leaf" modules
<wingo>i know there have been other efforts in this area and that's cool but ultimately what we need is a bit of follow-through, however it is that that happens
<wingo>paroneayea: yeah i was thinking about that. i can't remember if wasm does tail calls
<wingo>if it does, then that's great; we could compile guile without resumable delimited continuations
<wingo>of course wasm includes no gc at this point :P
<wingo>but i guess that's a separate issue
<wingo>civodul: the xz and gz are there, putting the lz too
<paroneayea>wingo: if it doesn't, couldn't that be handled through a trampoline?
<wingo>ack, lz upload failed due to a premature C-c, that will come tomorrow
<wingo>paroneayea: yes but that means overhead on every function
<paroneayea>ah yeah
<paroneayea>wingo: https://github.com/WebAssembly/design/issues/189
<paroneayea> https://github.com/WebAssembly/design/pull/190/files
<paroneayea>that's from 2015 tho
<paroneayea>looks like it doesn't exist
<void_pointer>wingo: that sounds like a good idea going module by module with the leaves.
<paroneayea> https://github.com/WebAssembly/design/blob/fix_custom_/FutureFeatures.md#more-expressive-control-flow
<paroneayea>> Some types of control flow (especially irreducible and indirect) cannot be expressed with maximum efficiency in WebAssembly without patterned output by the relooper and jump-threading optimizations in the engine. Target uses for more expressive control flow are:
<void_pointer>paroneayea: I had heard about that one a bit earlier. Wondering if there are others, ones that have syntax-rules
<paroneayea>> Functional language support, where guaranteed tail call optimization is expected for correctness and performance.
<paroneayea>void_pointer: ah, biwa doesn't have syntax-rules? too bad
<void_pointer>paroneayea: it does meet my other need, though
<void_pointer>paroneayea: mostly just looking for more scheme implementations to test a module I wrote on once I get the module polished up a bit more. Got it working on Guile, Chicken, and Vicare which is enough for now. Shouldn't sink more into porting it further till the actual features are improved a bit
<void_pointer>on wasm not having a gc, someone will surely port Boehm-Demers-Weiser GC to it at some point
<void_pointer>depending on how its memory allocation works
<paroneayea>wingo: another argument for porting to wasm, even with an inefficient trampoline approach, is it might give us more credentials to argue *for* TCO in WASM
<wingo>buf, i dunno
<wingo>these are complicated committee things
<paroneayea>ACTION nods
<paroneayea>ACTION goes back to reading about lisp standards history ;)
<wingo>people have already ported bdw-gc to asm.js
<wingo>absolutely bonkers and apparently it works fine
<void_pointer>a lot of it depends just on how much wasm resembles a traditional processor whether it would be easy or not
<void_pointer>reading up on it, it has linear memory so porting bdw-gc to wasm wouldn't be as ugly as it could be, though depending on the virtualization it could get really nasty
<civodul>wingo: via emscripten?
<wingo>civodul: yes
<wingo>civodul: regarding the guix pack, i would like to upload one
<wingo>or rather i would like for one to be uploaded ;)
<wingo>do you think ftp.gnu.org is the right place?
<wingo>i was thinking just "guix pack -C lzip -S /opt/guile-2.2.0=/ guile-next glibc-utf8-locales"
<civodul>wingo: sounds good
<civodul>or "guile@2.2" instead of "guile-next" if you rename it
<civodul>i think it's ok for ftp.gnu.org
<civodul>i guess "guile-binary-2.2.0.tar.gz" or something like that
<dsmith-work>Sorry for the off-topic question, but what is the name the service on freenode to list a subset of channels?
<wingo>civodul: guile-binary-x86_64-2.2.0.tar.gz ?
<wingo>dsmith-work: no idea :)
<wingo>i guess my question is, is the cpu sufficient
<madsy>dsmith-work: It is /list, though I don't remember the parameters
<civodul>wingo: oh right, even better
<wingo>in https://wingolog.org/pub/guile-prerelease/ i have https://wingolog.org/pub/guile-prerelease/guile-2.2.0-pack-x86_64-pc-linux-gnu.tar.xz
<wingo>i guess having "pack" in the name is nice, or "guix-pack" or something
<wingo>dunno
<wingo>i like the idea that a guix pack is like a flatpak :)
<wingo>but maybe that's too premature
<civodul>oh i hadn't thought of it, fun
<civodul>yeah having "pack" in the name is fine too
<civodul>bike shed :-)
<wingo>naming things :)
<wingo>ok i upload as guile-2.2.0-pack-x86_64-pc-linux-gnu.tar.xz if that is ok ?
<wingo>at least that way it sorts well too
<madsy>dsmith-work: Seems like the list service is named "alis"
<dsmith-work>madsy: Thanks. I'll try that.
<civodul>wingo: or you can remove "-pc", but otherwise perfect! :-)
<wingo>civodul: if i rename guile-next to guile in the package name will that make it rebuild? :)
<civodul>yes i'm afraid
<wingo>yarr
<paroneayea>sorry, I gotta stop dropping quotes from this book/paper in here, but one more
<paroneayea>· In a stupidly valiant effort, Gabriel tries to approach the Scheme community about merging, but they back away real fast. Clinger is one of the few who is sympathetic to the idea, but the combination of him and Gabriel is not enough. About this time, the Scheme community starts denying that Scheme is a dialect of Lisp, claiming closer bonds to Algol.
<paroneayea>and
<paroneayea>· Gabriel and Pitman, with the aid of Clinger and Sussman/Abelson, produce a report detailing the technical issues involved in macros and 1-lisps. There is a thesis by Kohlbecker [Kohlbecker, 1986b] that offers hope, and several alternatives are considered in the paper. This paper is published in LASC [Gabriel, 1988]. The idea for merging dies.
<wingo>paroneayea: wasn't it you who expressed abhorrence at the idea of taking more racket things? :)
<wingo>or of some future in which we were the same even
<paroneayea>so a) initially scheme did not have macros or a macro facility officially, and b) I wonder if lisp-1 and lisp-2 could have been mended if hygenic macros in scheme were understood at this point and c) I wonder if this is why sometimes people call scheme as if it were not a lisp (though clearly in SICP, it's called lisp)
<paroneayea>wingo: ah, hm! I think davexunit and I both said some things; davexunit said something like "if guile is built on racket what's the point of having invested myself in guile all this time" or something (sorry, putting words in mouth)
<wingo>civodul: given that store names don't matter much i would upload my guile-next+glibc-utf8-locales patch; but if you prefer and you have a build for package=guile, would you like to upload?
<paroneayea>and I think I expressed that it could be interesting, but I didn't want to lose the mutable toplevel for live hacking
<wingo>yeah
<wingo>right.
<wingo>so, just have those thoughts in mind when thinking of historic lisp splits :)
<civodul>wingo: i think it's ok even if the store name is "guile-next"
<paroneayea>though the conversation moved from there towards "maybe the goal is that racket should choose Guile instead of Chez for its underlying VM"
<wingo>civodul: okeydoke, will do
<paroneayea>wingo: oh yes, I'm having those things in mind for sure :)
<wingo>-r--r--r-- 1 wingo users 22816220 Mar 15 23:33 guile-2.2.0-pack-x86_64-linux-gnu.tar.lz
<wingo>^ that's what i'm looking at uploading
<paroneayea>wingo: I have sympathy both towards efforts to standardize, and why it's hard to convince people to give up things
<wingo>oddly it doesn't actually need the "gnu" part as it includes gnu in the tarball
<paroneayea>partly I'm finding it all so fascinating having dumped a huge part of my life now into a standards process to look at other peoples' attempts ;)
<wingo>:)
<paroneayea>also
<paroneayea>I'm supposed to be spending time on that *right now*
<paroneayea>so conveniently, reading about it in the meta is a good escape!
<civodul>paroneayea: procrastination! :-)
<paroneayea>civodul: yup...
<wingo> https://wingolog.org/archives/2017/03/15/guile-2-2-omg
<paroneayea>:D