IRC channel logs

2026-08-29.log

back to list of logs

<apteryx>old: interesting. Though for Java, it seems to be designed to work that way (it takes the number of threads to use from the configured cpu affinity)
<old>the main problem with cpu affinity is that you don't know which hardware you are going to run on
<old>if you say, I want 2 cores, I will pin 0-1, well, that might not work in some cgroup to start with
<old>and also, perhaps 0-1 are not on the same NUMA node or are not sharing L2 cache
<old>you don't know until you run on the actual hardware and poll its topology
<old>all of this can be avoid using a concurency abstraction and the scheduler will naturally put your threads on cores that are sibling
<old>yet, it does not exist, yet :(
<TheTaoOfSu>Anyone know what's up with the G-Golf manual being blank for the sections on "Building Applications" and "G-Golf on Mobile Devices"?
<TheTaoOfSu>Maybe I can try Internet Archive, but that might be outdated info if it finds anything at all
<daviid>TheTaoOfSu: I already told you, just rea and learn from the adwaiate-1-demo ...
<daviid>the awaita-1-demo runs perfectly on a mobile
<daviid>it actually has an 'adaptive preview mode',as i already told you ...
<TheTaoOfSu>daviid: Yeah, I intend to go over it, I just try to start with the manual. That can sometimes be easier than trying to untangle the code, especially when there are parts of the manual relevant to what I want to do
<daviid>the manual is not up-to-ate, it's actually years, like manynyears behind, just read an learn from the adwaita-1-emo ...
<daviid>and read the upstream manual, the adw upstrream doc - g-golf is just a binding, what you need to know is (every) upstream doc
<TheTaoOfSu>Oh dang, yeah, if it's that out of date, best to just dig into the examples, then
<ArneBab>old: to add pain to injury for cpu affinity: I found out last week, that pinning my sleep-heavy fibers project to a single core at least halves the CPU load.
<graywolf>If I have record foo and do something like (let* ((f (make-foo ...)) (a (foo-a f)) (b (foo-b f))) ...) is guile's compiler smart enough to elide the type check from the second accessor invocation, since the first already confirmed that fact?
<old>graywolf: you can test in the REPL with ,x
<graywolf>Ah, the thing I never know how to read the output of.. :/
<graywolf>Hm, since it just does (call-scm<-scm-scm , I assume it cannot actually elide anything, since it just calls the procedure
<graywolf>I think?
<old>do you have a complete example I could try?
<old>I can tell you
<graywolf>Example is short:
<graywolf>(use-modules (rnrs records syntactic)) (define-record-type foo (fields a b)) (make-foo 1 2)
<graywolf>,x (lambda _ (let ((a (foo-a $1)) (b (foo-b $1))) (list a b)))
<old>,x (lambda (r) (let ((a (foo-a r)) (b (foo-b r))) (list a b)))
<old>hm
<old>looks like not
<old>foo-a and foo-b are both procedures
<old>wonder if srfi-9 is better in that respect
<old>yeah I think srfi-9 yield better code
<old>srfi-9 record emit inlinable predicate and getters/setters
<old>I would say, the compiler has a much higher chance of optimizing these
<graywolf>Thanks a lot. I guess I should default to srfi-9 instead of rnrs, even though the latter has nicer syntax :/
<graywolf>I wonder whether this is something fixable or just an inherent problem of the rnrs version.
<old>not sure, would need to check
<old>well take this with a grain of salt :
<old> https://paste.sr.ht/~old/9b7cc8907eedb4fe10dda302fc9b75bf77ff59ab
<old>so yeah, srfi-9 seems to be very much better
<old>wrt to performance
<old>for now
<old>I could dig into the code of rnrs records to see if I can improve things
<graywolf>wow, that is much larger difference than I would expect
<old>well it's micro-benchmark
<old>like I said, with a grain of salt
<old>the compiler can agressively optimize the loop here and just hoist the predicate out of the loop
<old>for srfi-9
<graywolf>hm, that is a good point
<old>but that is to proof that the rnrs records are kind of opaque to the compiler here
<ieure>Hi, how can I rename core Guile bindings? ex. I want to define `and' within my own module, so I need to rename the Guile `and' to something else.
<sneek>Welcome back ieure, you have 2 messages!
<sneek>ieure, untrusem says: "untrusem, I think it should do that, if you launch as `guix shell -p .guix-extra-profile/verito/emacs -- emacs' " <- this doesn't work, it uses the emacs from my default profile.
<sneek>ieure, untrusem says: nevermind its working as expected
<ieure>I guess I need (define-module (whatever) #:pure #:use-module ((guile) #:hide (and)) #:use-module ((guile) #:prefix core/)) or similar.
<rlb>ieure: yeah, I believe there's one or more formulations like that that'll work.
<rlb>ieure: similar perhaps --- https://codeberg.org/lokke/lokke/src/branch/main/mod/lokke/base/syntax.scm#L18-L25
<ieure>Mm, yeah, that's nicer.