Permanent transition tracker for Perl6 ? (was: Re: Packaging of libraries with unstable ABI (D, Rust, Go, ...))

Ian Jackson ijackson at
Tue May 30 16:37:44 UTC 2017

Dominique Dumont writes ("Permanent transition tracker for Perl6 ? (was: Re: Packaging of libraries with unstable ABI (D, Rust, Go, ...))"):
> On Thursday, 18 May 2017 16:37:58 CEST Matthias Klumpp wrote:
> > Unfortunately though, the D language ABI isn't stable, so any future
> > compiler update might break the software in weird ways unless all D
> > software is recompiled when a new compiler is released.
> Perl6 has a similar issue: currently all modules (aka library) are pre-
> compiled ar run-time. The pre-compilation result is stored in user's home 
> directory ( ~/.perl6 ) to speed up the start-up time when a program is 
> launched.

~/.perl6 is a particularly annoying place to put this.  It defeats
the usual efforts to move this kind of thing to non-backed up storage,
or whatever.

> Unfortunately, these pre-compiled files are obsolete when a new Perl6 (rakudo) 
> compiler is released.

And does it automatically delete them, ever ?  If not then surely that
is a bug.

> All in all, I have three choices:
> - ship only source in module and let rakudo install pre-compiled files. This 
> may require user to clean-up ~/.perl6 from time to time. This may cause 
> problems for daemon written in Perl6 (we're not there yet): e.g. how to clean 
> up ?


> is letting daemon write its own pre-compiled file a security risk ?

Possibly, but the cache area should be by uid not by USER.

> - pre-compile all module are installation time (like python or emacs). The 
> main issues are: all modules must be re-compiled in the correct order when 
> rakudo is upgraded and how to clean up obsolete pre-compiled files. This 
> requires complex post-install scripts

Does Perl6 function correctly if these compiled files do not exist,
and cannot be written ?  If so you can do the compilation
opportunistically.  Python seems to take this approach.

> The latter is probably the best solution from my point of view. 
> But a permanent tracker has an impact in the buildd: is this solution 
> acceptable ?

It seems rather poor.

Can you patch Perl6 to put the precompiled files alongside the
original source files, the way Python does it ?  Then you can reuse
the techniques used by the Python people, maybe.


More information about the Pkg-rakudo-devel mailing list