[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Making code compatible with different versions of Guile — #:declarative?
From: |
Dr. Arne Babenhauserheide |
Subject: |
Making code compatible with different versions of Guile — #:declarative? |
Date: |
Sat, 07 Sep 2024 19:35:08 +0200 |
Hi,
In the past year I often had to make code work on different versions on
Guile. Either because my laptop has a different distribution than my
Desktop (Trisquel vs. Guix) or because my server has yet another
distribution and may be on Debian stable (or oldstable).
The main problem for me was #:declarative? — a real showstopper.
To get the same behavior for mutating module bindings in Guile 3 and in
Guile 2 (for example for live development or for changing a function;
having a live REPL in Chickadee and building a game iteratively is a
great experience), I must mark the module as non-declarative:
(define-module (my-module)
#:declarative? #f)
But #:declarative? is illegal in Guile 2.x, so I have to use different
code for 2.x and 3.x. And hitting that when I try to run a program on
another system is a really bad experience.
The problem is that #:declarative? is #true by default in Guile 3. But I
cannot change it if my code should work for Guile 2 *and* for Guile 3.
Would it be an alternative to explicitly mark all modules shipped with
Guile as #:declarative? #t but have user-code non-declarative by
default? Would that already yield most of the performance improvements?
Best wishes,
Arne
--
Unpolitisch sein
heißt politisch sein,
ohne es zu merken.
draketo.de
signature.asc
Description: PGP signature
- Making code compatible with different versions of Guile — #:declarative?,
Dr. Arne Babenhauserheide <=