Oh, that's why. Thank you very much, now I see.

Also, I found an issue with my original example: I forgot to add -uses
module to main.o compilation. When I added it it also started to work.
So I failed to properly link my compiled code, and instead import
tried to load the source file.

I should remember that -:d flag. By the way, how does one learn about
it? Are there any other flags?
Csc and Chicken man pages don't seem to mention it.

On Tue, Feb 17, 2026 at 4:55 PM Peter Bex <[email protected]> wrote:
>
> On Tue, Feb 17, 2026 at 02:57:43PM +0300, Alexey Egorov via Chicken-users 
> wrote:
> > ./test
> >
> > Result:
> > Error: Module `module' has unresolved identifiers
>
> Try running it with -:d, like so:
>
> ./test -:d
>
> Then you'll notice it emits the following line:
>
> ; loading ./module.scm ...
>
> The reason is that it will try to load module.so at runtime, and failing
> that, it will fall back to trying to load module.scm.  And the default
> prefix style applies there.  To change that you'd have to set the
> keyword-style parameter yourself at runtime.
>
> If you want to compile statically, you will have to avoid loading the
> module dynamically.
>
> Compile it like this:
>
> csc -static -o test main.o module.o
>
> and then it'll work.
>
> Note that you only need to use -K prefix to compile module.scm, as the
> prefix style only applies to the *reader*.
>
> Cheers,
> Peter

Reply via email to