<ArneBab_>davexunit: is there also a chickadee for Guile 3.0? <ArneBab_>… I just saw it in git, but I cannot install it … <marmulak>I thought guile 3 was a done deal, but apparently even my guix system is using 2.2 <ArneBab_>well, it’s always hard to update the foundation to everything <marmulak>I thought surely it would be backwards compatible though <ArneBab_>there are always edgecases that have to be fixed in patch-versions, and you don’t want your system to become unbootable because of those <ArneBab_>(still I hope we’ll see guix on guile 3 soon) <davexunit>upstream guix probably doesn't have it yet, though. <daviid>lloda: thanks. I actually did those changes manually, but a stable-2.2-wip-exception-truncate branch might be usefull for othrs ... tx <daviid>lloda: now on master, do you cherry-pick one commt or merge the wip-exception-truncate branch? <daviid>lloda: I was also thinking about doing something for our 2.2, 3.0 users who install from a tarball, that we could upload signed versions of pached (ice-9 boot) module, wdyt? <daviid>lloda: or dowm to the 2.2.x, 3.0.x fine grane if necesasry <daviid>something that wont solve the sitro problem, but ... <daviid>for distro, users still may download the appropriate pached (ice-9 boot) module, install it manyally, and if they which also precompile install the .go file .... <daviid>which is what I recommend in the guile-cv manualll, but I wish I culd just tell users to grab the patched module <daviid>or may be once we have those, I can even grab it as part of the build fase <daviid>actually, I could add those to the guile-cv tree itself <daviid>I don't kow if it would work for guix users though, quite ironically :) <daviid>it would definitely work for debian, msys2 ... and probably any distro but guix and its 'ancestor' (I for got the name now but 'they know' :)) ***Aurora_iz_kosmos is now known as Aurora-Sensei
<daviid>I compiled installed 3.0.3 from master and when I complie guile-cv, it comes with a few of these warnings - WARNING: loading compiled file /opt3/lib/guile/3.0/site-ccache/search/basic.go failed: ;;; "load-thunk-from-memory" <daviid>*3.0.2 of corse, exactly 3.0.2.2-2b4e4 (patched with the wip-exception-truncate patch, commit 74de3b0a2fe6d5c67ad5ccdb6ed885f777443fbf) <daviid>I didn't run a 'make uninstall' of the previous 3.0 occurrence that I had in /opt3 <daviid>hum, that might be a guile-lib related problem, to rcmpile install guile-lib ... <daviid>recompiling/installing guile-lib did solve this problem, fwiw <daviid>lloda: to answer my first quiz myself, I did cherry-pick the one commit needed from wip-exception-truncate branch to master, which worked fine <wingo>lloda: am thinking that like scm_c_vector_ref et al, scm_c_bitvector_ref should only work on scm_tc7_bitvector <RhodiumToad>hm, is there a good algorithm to create a shuffled copy of a list without going via a vector? <jcowan>RhodiumToad: You could use Olin Shivers's list-merge! algorithm with a comparison function that returns arbitrary-but-consistent results, I guess <jcowan>iow, it has to cache its answers, otherwise the process may never terminate *RhodiumToad used a vector <jcowan>oops, s/merge/sort. It's very nice in that it allocates only O(1) space because it reuses the cons cells of the input <jcowan>on the other hand, it can break both caching and write barriers. *RhodiumToad celebrated by writing a solver for the countdown number puzzle <RhodiumToad>but the size of the search space seems to be typically around half a million entries, so brute-force is quite feasible <RhodiumToad>(it's slightly variable because the number of subtraction and division subexpressions is affected by the numbers available, since you're not allowed intermediate results that are not integers >0) <roptat>hi, I'm implementing jsonld in guile, and one of the things I need is IRIs. guile doesn't have a module for that yet, so I'm using (web uri) for now, but I know I'll need to create my own module later <roptat>URIs are IRIs and so I'm testing with only URIs, which is fine. However, one of my tests has this IRI: "url://a/b/c" which is not considered a valid URI by guile (string->uri returns #f) <roptat>the reason seems to be that guile wants at least a dot in the host name, but reading RFC3986, the host is an IP or this rule: "reg-name = *( unreserved / pct-encoded / sub-delims )" <roptat>oh, I found the issue! there's a match to an IPv6 address that works, because "a" matches the regexp for ipv6 addresses, but it's not a valid ipv6, so the result is #f <roptat>(string->uri "url://g/a/b") works <wingo>i have never heard of an iri :) <wingo>interesting bug re: ipv6 addrs <roptat>this is ipv6-regexp: (make-regexp (string-append "^([" hex-digits ":.]+)$")) <roptat>also ipv4-regexp: (make-regexp (string-append "^([" digits ".]+)$")) <roptat>I believe "42" is a valid host, but it would match the ipv4 regexp <roptat>IRIs are defined in RFC 3987, while URIs are in 3986, it adds unicode to URIs, basically <roptat>because the rule is any number of characters in the unreserved, pct-encoded or sub-delims, and unreserved is "ALPHA / DIGIT / "-" / "." / "_" / "~"" <roptat>the host is usually a name in the DNS, but it's not defined like that <roptat>that's how I read the introduction of section 3.2.2 at least <roptat>`We use the name "host" for the ABNF rule because that is its most common purpose, not its only purpose.` <roptat>and you're right, it cannot be a plain IPv6, it needs brackets <roptat>#40582 if you want to add anything