IRC channel logs

2025-05-01.log

back to list of logs

<ArneBab>mwette: this looks very interesting for writing games! How platform dependent is it? Could it be extended to work on Windows so there’s only a single binary?
<mwette>ArneBab: no clue about Windows, and other blockers may be there also; just tried to explore possibilities
<ArneBab>mwette: no prob — many thanks for exploring this!
<lechner>mwette / Hi, what does this line do, please? https://github.com/mwette/guile-saapp/blob/52b68827f10759db6f1f2c550d6c96480b4d34d9/mydemo1.scm#L3
<lechner>mwette / is ./xguile the name of the executable? I get "In procedure load-thunk-from-memory: incompatible bytecode version"
<lechner>guile shell guile gcc-toolchain
<lechner>sorry
<mwette>lechner: somehow wrong file got through. Top should be #!/bin/sh
<mwette>lechner: I'm not sure it's working. I had prev version that worked. Been a bit since I played with it.
<lechner>mwette / also, thanks! can cdata do pointer math? I have to look for the NULL in an argv (without argc) https://www.man7.org/linux/man-pages/man3/pam_getenvlist.3.html
<lechner>that was supposed to read thanks! also,
<meaty>Does anyone here have experience deploying servers to the hetzner cloud? what service would I buy for a VPS to run a static site, a mail server, and a calendar server via guix? Also, what is the bootstrap process like--the manual glosses over it, but would we just send in the 1.4.0 guix image and then upgrade it from the recovery interface? do hetzner VPSs work with linux-libre?
<meaty>*send it in via the recovery interface, then upgrade it
<meaty>Also is there a good way to practice administering a server this way before committing to a vps
<lechner>Hi, what does this error mean, please? In procedure variable-ref: Unbound variable: #<variable 7fb71e47ab80 value: #<undefined>>
<lechner>okay, that one was from letrec
<lechner>my pointer math is working. is this a reasonable way to find the pointer size? https://codeberg.org/lechner/guile-pam/src/commit/ce86ad24d961671d0a7ac017ffa8d4327e69d70f/scm/pam/legacy/module.scm#L35-L38
<meaty>shoot wrong channel
<ArneBab>I just published a first version of an "BSI IT Grundschutz with Guile" artice: https://www.draketo.de/software/bsi-grundschutz — BSI is the German Agency for IT security and the Grundschutz are their basic rules. If you want to create software for a public agency in Germany, you’ll likely have to follow those rules. Also they actually make sense.
<ArneBab>There are still a bunch of open questions, but I decidid to just do a few hours of polish and then publish now, because I had stalled for two months already.
<mwette>ArneBab: were you able to build saapp? I can't remember where I left that.
<ArneBab>mwette: I didn’t get to try yet.
<ArneBab>I just made a not "try once I get some headspace"
<ArneBab>… note
<mwette>I get the same issue lechner gets: 'In procedure load-thunk-from-memory: incompatible bytecode version'
<ekaitz>ArneBab: did you try caddy? i just replaced my nginx with it and I'm very happy
<ekaitz>the only problem is we don't have it packaged in guix :(
<lechner>mwette / please feel free to expand some of the abbreviations when you work on saapp again
<lechner>mwette / how is this different from "/usr/bin/env -S guile -s" please? https://github.com/mwette/guile-saapp/blob/b07a564019f6f3cd36b840ad815d1ae5262bd15c/findgos#L1-L4
<mwette>haha; I was thinking to add as comment. I went through hoops to avoid the full pathname being part of the identifier in xoload.ci
<lechner>i am totally interested in saapp
<lechner>I'd potentially like to combine it with my own Guile-Exec, which is a shell integration helper
<mwette>The rationale for using #!/bin/sh ... exec guile is to allow one to add shell code in the script (e.g., export GUILE_LOAD_PATH=...)
<mwette>I had something crude working before. I need to understand by the bytecode format error is happening.
<lechner>with Guile-Exec you won't need shell snippets anymore https://codeberg.org/lechner/guile-login/src/branch/history/bin/login
<lechner>as a bonus, it creates all SRFI-37 options and a help text from a definition in Guile https://codeberg.org/lechner/guile-login/src/branch/history/scm/login.scm#L196-L227
<mwette>lechner: sweet
<ArneBab>ekaitz: I didn’t try caddy yet, no. Not being packaged in guix is a blocker for the article …
<lechner>which article? does it have to do with Guile?
<ArneBab>lechner: fulfilling the requirements of BSI IT Grundschutz with Guile: https://www.draketo.de/software/bsi-grundschutz
<humm>being packaged for Guix is a requirement of the BSI Grundschutz, huh?
<ArneBab>humm: no, but the article avoids a lot of complexity by just saying "we use Guix packages as libraries".
<ArneBab>And for Guile that’s the obvious choice, because of the overlap between the communities, so many Guile packages are packaged in Guix.
<old>I always laught when I see other language package manager now
<old>we have the best one
<lechner>Not sure it's just a "language" package manager anymore
<old>not it's not. But since Guile packages are not packaged anywhere else it is for Guile users
<ArneBab>lechner: looking at R packages and node packages randomly including pre-built binaries (i.e. node: shipping a full binary chrome) I’d say that Guix is nowadays actually a level above language package managers. It may not be perfect in everything, but it’s pretty awesome.
<ieure>"node: shipping a full binary chrome" good lord
<old>I hope we get a Guix foundation one day. Perhaps a Guile too
<ArneBab>look at the dependencies of playwright. Using Guix means that I stumble over that, because it expects library files in standard locations.
<old>if the ecosystem become rich enought and used by many communities, it would make sens
<ArneBab>that would be great, yes.
<ekaitz>ArneBab: yep that's sad, maybe we could package it and also add some plugins for it. It's very easy to configure and automatically renews the certs.
<lechner>mwette / with more isolation (guix shell guile bash, but no --pure) I get a different error when running xguile: https://bpa.st/7GRA
<lechner>mwette / here is the corresponding mydemo1.gos https://bpa.st/JJ2Q
<lechner>and I get the same error when I delete boot-9 from mydemo1.gos.
<ArneBab>ekaitz: I’m looking at benchmarks now …
<lechner>mwette / please note that all the .go paths now point to the store, which is presumably why the bytecode mismatch disappeared. my Guile versions are also different. I normally have 3.0.10-1.402e0df but in that shell I had 3.0.9
<lechner>mwette / i got it working! the other error disappeared after I hit ./build, which I had forgotten earlier. now I'd just like to understand how it works...
<ArneBab>ekaitz: once Caddy gets packaged and there’s a config to serve as SSL terminator, I’ll gladly add it to the article.
<ekaitz>ArneBab: great! i'll try to package it... but...
<mwette>lechner: cool! I don't have it yet. You should read the objcopy man page: search for '-I binary'
<ArneBab>ekaitz: benchmarks I’m reading right now (context: SSL terminator for a Guile server): https://www.patrickdap.com/post/benchmarking-is-hard/ (roughly same performance), https://blog.tjll.net/reverse-proxy-hot-dog-eating-contest-caddy-vs-nginx/ (still reading)
<ekaitz>that's great!
<lechner>mwette / i'd love to contribute, perhaps. would you consider changing the license to GPLv3+?
<mwette>lechner: probably, need to clean stuff up
<ArneBab>ekaitz: the second benchmark shows nginx at about half the resource utilization to get the same stats as caddy. So while I’ll gladly include Caddy in the article, I’ll likely continue using nginx. I have a really low-power server for a game of mine and saving on the reverse proxy translates directly into more CPU and memory for the actual game.
<ArneBab>(though the websocket handling in the game isn’t profiled at all, so I’d likely be able to win a lot by working on that first)
<ekaitz>ArneBab: yeah, caddy is written in go and that requires some runtime... but also it happens to have more features enabled by default.
<ArneBab>ekaitz: what I need to include caddy is a config that provides an SSL-terminator and reverse proxy for a Guile webserver process.
<ekaitz>that's probably the simplest thing, caddy's caddyfile are pretty easy to read
<ArneBab>I just mean that I don’t want to write such a config myself, because I have no experience in it so I’d be likely to do it badly.
<ekaitz>ArneBab: reverse_proxy :9000 (done!)
<ekaitz>that's a reverse proxy to the port 9000
<ArneBab>is that the best practice for a Guile server with SSL termination (needs a letsencrypt setup)?
<ekaitz>i'm not sure about that as I'm not great at the configuration, but it could be a good starting point
<ekaitz>it doesn't require a letsencrypt setup, because it automatically renews things according to the domains you have set up
<ekaitz>ArneBab: i just uploaded my config: https://git.elenq.tech/guix-configuration/tree/debian_server/etc/caddy/Caddyfile
<Arsen>ACTION seconds getting a reverse proxy rather than terminating in-guile, though he fancies nginx
<ArneBab>ekaitz: so like the git.elenq.tech setup? does that last block suffice (with "reverse_proxy :9000" instead of the fastcgi)?
<ekaitz>ArneBab: yes i think so, git.elenq.tech is a fastcgi server, so i need to make some extra thing, but for a server that actually handles everything via http you could just use reverse_proxy
<ArneBab>ekaitz: I especially like the assets-setup, so any static file can come directly from the reverse proxy.
<ekaitz>yep!
<ArneBab>ekaitz: I now also found the ip_hash setup for sticky available systems. Can you check whether this setup is sane? https://paste.debian.net/1372749/ — in which file do I write this?
<ekaitz>ArneBab: looks good, but you should test it, I'm very bad at configuration. It goes in /etc/caddy/Caddyfile
<ArneBab>ekaitz: thank you! can you ping me when you get Caddy packaged?
<ArneBab>(then I’ll test it and remove the :noexport: tag from the section in the article ☺)
<ekaitz>i will, but don't expect it to happen soon
<ArneBab>no problem, I’m not in a hurry.
<lechner>mwette / okay, i can't wait; i'd like to turn 'findgos' into such a stand-alone executable so that it, too, becomes impervious to changes in GUILE_COMPILED_LOAD_PATH, which are common in Guix
<lechner>mwette / just as an aside, i may have a renaming suggestion (like "loaded-guile") but I don't want to push my friendship with you at this point
<mwette>i don't like saaap either; good suggestion