IRC channel logs

2026-08-31.log

back to list of logs

<dsmith>sneek, botsnack
<sneek>:)
<dsmith>!uptime
<sneek>I've been a process for 4 days
<sneek>This system has been up 2 weeks, 5 days, 12 hours, 38 minutes
<old>rlb: found my bug I think
<old>basically, in scm_fork
<old>we call scm_all_threads
<old>that's a fresh list
<old>the problem is that we call it _after_ the finalizer thread was stopped
<old>and so, it's possible that by calling scm_all_threads, we trigger a GC
<old>when the GC is run, it also call the finalizer callback, which spawn the finalizer thread again just before the fork
<old>then all can happen. I basically got some weird abort in BLUE that were very random
<old>but I managed to somehow get a deadlock with weak table mutex and I figure this can only happen if the finalizer thread is alive while a fork happen
<old>keeping the lock in locked state forever in the child process
<hwpplayer1>I'm back
<rlb>old: ouch
<trannus_aran_>where do you all get your guile.m4 when building a new project?
<graywolf>trannus_aran_: Well it comes with Guile, I just copied it from /share/aclocal/guile.m4
<graywolf>I think
<graywolf>Canonical source is https://codeberg.org/guile/guile/src/branch/main/meta/guile.m4
<trannus_aran_>ah! thank you, I just wasn't sure where it was on my system and my `find` incantations were failing me
<dthompson>I've never had to copy this
<graywolf>dthompson: Huh, I always vendor it into m4/guile.m4 in my projects, but never considered whether it is necessity.
<trannus_aran_>dthompson: how do you vendor it exactly?
<trannus_aran_>err, graywolf I mean!
<trannus_aran_>hmmm, outside of articles like this one
<trannus_aran_> https://www.draketo.de/proj/with-guise-and-guile/guile-projects-with-autotools.html
<trannus_aran_>and perusing guile libraries with fewer dependencies and building a mental model of what filetree is common between them, is anyone basing these off of a particular reference?
<trannus_aran_>presumably guile-hall plays some role in what's considered "normal" here, but idk for sure
<dthompson>guile.m4 contains autoconf macros that are present if guile is installed on the build machine
<dthompson>so there's no need to copy it into your project unless you need a patched version or something
<trannus_aran_>ahhhh
<daviid>trannus_aran https://erikedrosa.com/2017/10/29/guile-projects-with-autotools.html is a good start, then look at a project you like, ther are so many 'out there', like chickadee for example, learn 'from it' ...
<dthompson>autotools is horrible. everything else is worse. my best advice is snarf stuff from a project that already figured it out and move on. I learned from guix in the early days, before the autotomfoolery got too complicated.
<dthompson>well maybe BLUE will be better ;)
<dthompson>rooting for it
<TheTaoOfSu>I'm planning an app and need to write the core library for it, but I'd like to keep the library, at least, as implementation-independent as possible. Will Guile handle it well if, say, I write the library in R7RS and then have to use more traditional Guile Scheme for the rest of the app? Or will I need to trigger a global adaptation to R7RS that may interfere with other Guile-specific libraries?
<loon>trannus_aran: totally unrelated, love your nick :D
<TheTaoOfSu>Also open to using R6RS if needed, but while I've seen tools to convert R7 to R6, I don't think I've seen one going the other way, so R7 seems most universal
<trannus_aran>dthompson: BLUE?
<trannus_aran>loon: thanks! :D
<dthompson>trannus_aran: a new build system written in guile. been too busy to try it out but heard good things.
<JohnCowan>dthompson: imo the Chibi aporoach is better than autotool, even if it doesn't work on random ancient OSes
<graywolf>autotools (when done right) are great for the user, pain for the developer
<JohnCowan>the makefile looks at uname to see what OS you are building on and then includes makefile.linux, makefile.macos, makefile.whatever
<JohnCowan>so if you want to run it on VMS, you need to modify makefile.detect and write makefile.vms
<trannus_aran>dthompson: aha! I had something like BLUE of my own (mostly as sexp notes of how to make the autotools files needed)
<trannus_aran>Figured somebody out there *must* be making something IN guile itself
<dthompson>build systems are kind of the "I can fix him" of software
<dthompson>many have tried. all have failed. unless...
<old>trannus_aran: https://codeberg.org/lapislazuli/blue
<old>It is still in pre-alpha. I've been pretty much busy on Guile lately
<old>Would like to make a release 3.0.12 at some point (Guile)
<daviid>trannus_aran: fwiw, I (highly) recommend you 'stick' to the autotool chain - no need to become an expert (which is very difficult), just read some project(s) that used it and ask for help here ... my 2c
<old>cool fixed this: https://codeberg.org/guile/guile/commit/d4f18d4fe5c4eb92e9cfba0c3fc0b83bfd2eea33
<old>Is guile 2 still a thing? this needs to be back-ported to it I think
<rlb>That's great (and my condolences wrt tracking that down :) ).
<TheTaoOfSu>If I use (install-r7rs!), does that mean I must use strictly R7RS-compliant Scheme in the entire rest of the program? I need to use Guile for some GUI bindings, but I'd like the core library to remain implementation-independent if possible
<PuercoPop>Is there a way interpret patterns sequentially in match? that is bind a part to (response body) and have a second (and pattern) already have response body to check if response-code is between 200 and 300?
<sham1>TheTaoOfSu: basically no. install-r7rs! just enables some of the extra stuff needed for better partial support for r7rs, but things will still work as one would expect for Guile. See: <https://codeberg.org/guile/guile/src/commit/d4f18d4fe5c4eb92e9cfba0c3fc0b83bfd2eea33/module/ice-9/boot-9.scm#L4736-L4743>
<TheTaoOfSu>sham1: Oh nice, yeah, that doesn't seem to hardly change anything at all. Great, thank you
<sham1>Yeah, it's pretty much just read syntax and recognising
<sham1>.sld files