Post B5mwYBKwU1DVL9JSjI by civodul@toot.aquilenet.fr
(DIR) More posts by civodul@toot.aquilenet.fr
(DIR) Post #B5mZMyuQ3Em6fHb5NI by janneke@todon.nl
0 likes, 0 repeats
Had a most lovely---almost 2h---video chat session with @ekaitz_zarraga and Timothy Sample (GNU Mes contributor and author of Germ) on the workings of Ekaitz' rewrite of Mes from a Scheme interpreter to a compiler.AIUI, Guile Scheme has some interesting characteristics that prevent the Mes compiler from using some simple and low hanging fruit performance improvements. Sorry for being vague, Ekaitz can elaborate. Wondering if these are also "slowing down" Guile so much---and if not, why not?---and if anything could be done about that.#GNU#Guile#Guix#Mes#bootstrappable#fullSourceBootstrap@civodul @wingo@reproducible_builds@nlnet@guix
(DIR) Post #B5mZMzFgm9mxjFY4Wm by civodul@toot.aquilenet.fr
0 likes, 0 repeats
@janneke Nice! What characteristics are you referring to?@wingo @ekaitz_zarraga
(DIR) Post #B5mwYBKwU1DVL9JSjI by civodul@toot.aquilenet.fr
0 likes, 0 repeats
@ekaitz_zarraga Generally speaking, moving things to Scheme improves performance because a “subr” (procedure implemented in C) is opaque to the compiler: it cannot inline it nor optimize it in any way.@wingo @janneke
(DIR) Post #B5mwkS9ZmjIWyGqdAO by janneke@todon.nl
0 likes, 0 repeats
@ekaitz_zarraga @civodul @wingo You and Timothy mentioned a very specific semantic aspect of the Guile dialect, IIRC in the context of modules and possibly macro expansion?
(DIR) Post #B5mwkSXKMQIS9vxbBg by ekaitz_zarraga@mastodon.social
0 likes, 0 repeats
@janneke @civodul @wingo Yes, the module system is one of the things that produces most of this Scheme->C->Scheme dance and also guile having a different behavior when it's AOT compiled vs when it's interpreting makes everything very hard: It forces us to expand+compile+evaluate top-level expressions one by one, with all the problems that has.
(DIR) Post #B5mwkSyciw8BWajOjY by civodul@toot.aquilenet.fr
0 likes, 0 repeats
@ekaitz_zarraga In what sense does the module system lead to Scheme/C round trips? Some procedures are implemented in C in libguile/modules.c, but those are generally on the slow path so I’m not sure what you have in mind.@wingo @janneke
(DIR) Post #B5n8QIhePWHDJrwWuG by wingo@mastodon.social
0 likes, 0 repeats
@ekaitz_zarraga @civodul @janneke observers are ignorable i think, from a semantics perspective. they are more an optional reflection layer
(DIR) Post #B5n8QJ66wZqIXjO424 by civodul@toot.aquilenet.fr
0 likes, 0 repeats
@wingo @janneke @ekaitz_zarraga I think observers are one of these 1996-era overengineered bits that were never really used.
(DIR) Post #B5n8nzUJVHSifu07ZA by wingo@mastodon.social
0 likes, 0 repeats
@civodul @janneke @ekaitz_zarraga i did use them for (system xref) which geiser uses (or used to use, dunno). but, yeah
(DIR) Post #B5os7RgVaDoiisJds8 by civodul@toot.aquilenet.fr
0 likes, 0 repeats
@ekaitz_zarraga BTW, speaking of observers: I explicitly disabled them for ‘define-public’ in (guix packages) because in addition to being useless, it leads to code bloat (which matters given the number of ‘define-public’ uses!) and load-time overhead:https://codeberg.org/guix/guix/commit/76127069e0221a603f880a950ba0fb42a499be3d@janneke @wingo