Guile version 3.0.4.38-64c894
I am on 64 bit arch linux, and I built guile3.0 from the AUR package guile-git on Sep 12 2020
I am writing to modules that dynamically link. DYNAMIC-LINK works in the top level REPL, and when using DEFINE-MODULE.
When using the r6rs library syntax DYNAMIC-LINK is considered unbound and the compilation fails.
The following is an example of the behavior with a minimally viable source for reproducing the bug.
(library (fail-link (0 1))
(export link)
(import)
(define link dynamic-link))
What I get:
;;; note: source file /home/guy/guile-fail-link.scm
;;; newer than compiled /home/guy/.cache/guile/ccache/3.0-LE-8-4.4/home/guy/guile-fail-link.scm.go
;;; compiling /home/guy/guile-fail-link.scm
;;; guile-fail-link.scm:4:2: warning: possibly unbound variable `dynamic-link'
;;; compiled /home/guy/.cache/guile/ccache/3.0-LE-8-4.4/home/guy/guile-fail-link.scm.go
ice-9/boot-9.scm:1669:16: In procedure raise-exception:
Unbound variable: dynamic-link
What I expect:
;;; note: source file /home/guy/guile-fail-link.scm
;;; newer than compiled /home/guy/.cache/guile/ccache/3.0-LE-8-4.4/home/guy/guile-fail-link.scm.go
;;; compiling /home/guy/guile-fail-link.scm
;;; compiled /home/guy/.cache/guile/ccache/3.0-LE-8-4.4/home/guy/guile-fail-link.scm.go
Additional information:
After I load the failing library I lose a bunch of top level definitions and syntax. Like IMPORT is no longer recognized and I have to `,q`
in order to get the REPL in a usable state again.
I can just use DEFINE-MODULE, but honestly I like the r6rs syntax. Even though imports between schemes differ enough (and FFI anyway)
that none of these libraries will end up being portable, I still like r6rs library syntax.
If I need to find extra information for to help you all figure out what is happening, please just let me know.
Also, thank you all for your hard work. I am excited to have this snappy Guile 3 on my system now ;)
- Guy Gastineau