guile-devel
[Top][All Lists]
Advanced

[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

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]