IRC channel logs

2025-04-14.log

back to list of logs

<trannus_aran>Hey, so for my own reference I've been toying with a "Guile Cookbook" based on both cwebber's Scheme Primer and vindarel's Common Lisp Cookbook. I've made it clear that the project is indebted to both, but I have no idea what to do with the license.md 🫠
<trannus_aran>The write up and code is mine, but I'm more or less borrowing the chapters & subject matter since they're very directly "what I wish existed for guile"
<trannus_aran>Namely: examples for using regex, string operations, reading files line-by-line, OS functions, date-time, GOOPS, how to make a module and package...all the stuff that has documentation in the manual but I still have to look up people's existing projects go get a feel for how to do them
<trannus_aran>Anyone have advice? It still feels like even if the writing for each section is mine, it's still too derivative of both. I just don't wanna be a dick here ;/
<old>trannus_aran: my advise, contact the author and ask if they are okay with derivation of their work and under which terms
<old>see if that's compatible with your terms for your part
<trannus_aran>Good idea
<trannus_aran>I've still gotta flesh out exactly which bits make sense for this thing, but when I settle on the section/chapter list, I'll poll them both
<rlb>...and a port of srfi-197 if we want it (including the texinfo conversion): https://codeberg.org/rlb/guile/src/branch/srfi-197
<ArneBab>trannus_aran: for the scheme primer you shouldn’t have any problems: "This document is dual-licensed under Apache v2 and Creative Commons Attribution 4.0 International and its source is publicly available." → https://files.spritely.institute/papers/scheme-primer.html — asking is friendly anyway, but you can keep working before you get an answer. https://gitlab.com/spritely/scheme-primer/-/blob/main/scheme-primer.org?ref_type=heads
<ArneBab>trannus_aran: my own Scheme programming essentials is cc by-sa licensed: https://www.draketo.de/software/programming-scheme → https://hg.sr.ht/~arnebab/draketo/browse/software/programming-scheme.org (so it’s compatible to the Scheme primer, but copyleft: must stay free)
<old>is it possible to embed fibers within a pure guile project?
<old>Looking at the source code, there are some C files to get compile. Would be nice if fibers could be copied to pure Guile pproject just like that
<ArneBab>old: I haven’t found a way to do that yet. That’s why all the servers I write have stuff for both. I’d much prefer to have fibers integrated in Guile, though.
<old>Looking at the code, I don't see why C is necessary here
<old>bindings can be made in guile instead of C
<old>for epoll and libevent
<old>selecting the implemntation can also be done at runtime
<old>I suppose this was made to support guile 2?
<old>I want fibers in my build-system, but I need it to be embeddable to avoid any dependencies
<old>I think it could be doable. Say only supporting Guile 3. then remove the C code and just use foreign-library-pointer and select the implementation based glibc symbols or shared lib lookup
<retropikzel>In --r7rs mode how can I include the (include-from-path...) function? The normal include does not include from relative to the file :|
<dthompson>old: fibers needs to be moved into the guile standard library.
<dthompson>there's rough consensus for that already
<ArneBab>old: having fibers as pure scheme would be nice — but it must not reduce performance (fibers performance is pretty critical).
<ArneBab>dthompson: what’s blocking fibers from being moved into guile?
<retropikzel>Do I recall correctly that someone said there is a fix for (include...) in --r7rs mode where it includes from same dir as the file?
<old>ArneBab: it depends on the use case. I want a scheduler for callin sub-process
<old>The performance of the scheduler is not that much important here. I just want to wait on pid-fd and schedule new processes
<old>dthompson: even if it gets merge in next release, it will take 5-7 years before main distros bump to this version
<old>ArneBab: but I guess you meant in the case of none-embeddeding fibers
<rlb>...debian shouldn't take *that* long :)
<dthompson>5-7 years seems a bit much, yeah
<old>fedora is still on 3.0.7, which is 4 years
<old>I don't expect them to have fibers in main guile until 2030
<rlb>Ahh, right -- not sure what the situation is there.
<rlb>General question -- is srfi-197 reasonably well regarded (if you like threading forms)? I was pondering adding it (chain, nest, etc.).
<ieure>rlb, No idea how well-regarded SRFI-197 is, but I greatly miss the threading macros from Clojure/Emacs Lisp, so am +1 on adding it.
<ieure>Skimmed the SRFI, it seems reasonable to me, though I'd probably not use more than chain, myself.
<ieure>Don't love the names, personally, but I care more about the functionality.
<rlb>Thanks, and suppose you could always rename on import :)
<rlb>srfi-207's the other one I'm wondering about (my interest is primarily as a possible piece in the "how to be able to write real system utilities in guile" puzzle)
<rlb>Though the main bit there would still depend on that r7rs "nonprinting" proposal that I don't know likely it is to be adopted.
<rlb>(But srfi-207 has other bytevector-related operations that are potentially interesting.)
<ray1729>rlb: I think srfi-197 is useful to have, I've used `chain` in a couple of projects.
<trannus_aran>I just use my own threading macros I threw together with good ol' define-syntax. That being said, I usually have a macros.scm for any scheme project, regardless of implementation. I guess that's kinda "your own stdlib"/C-style, but it works, and the macros are readable, so *shrug*
<ArneBab>old: fibers enable efficiently solving the skynet benchmark: https://github.com/atemerev/skynet/blob/master/guile-fibers/skynet.scm — erlang takes 243ms for me, luajit takes 125ms, Java takes 112ms, guile fibers takes 2-4 seconds. (if you find a way to speed up skynet.scm, please file a PR!)