bug#43394: DYNAMIC-LINK is unbound when using r6rs library syntax

Linus Björnstam <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
In r6rs libraries, only r6rs is available. You need to impor whatever bindings you need from the (guile) module

-- 
  Linus Björnstam

On Mon, 14 Sep 2020, at 05:07, Guy Gastineau wrote:
> 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
> https://aur.archlinux.org/guile-git.git for the PKGBUILD (the config 
> options were practically non-existent).
> 
> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.