Re: Permanent transition tracker for Perl6 ? (was: Re: Packaging of libraries with unstable ABI (D, Rust, Go, ...))
Ian Jackson writes ("Re: Permanent transition tracker for Perl6 ? (was: Re: Packaging of libraries with unstable ABI (D, Rust, Go, ...))"):
> But actually I think the whole scheme should be done the way Python
> does it. If the compiled filename needs to be decorated with a raduko
> version (or even a raduko hash) then that is probably fine, but it
> should be in the same place as the source file (or at least, a
> filename derived from the source filename so that the source filename
> can be recovered from the compiledd filename). This has worked fairly
> well with Elisp and Python and we have fairly good strategies for
> dealing with it.
I feel I should explain that this is not just a good idea because it
makes Debian's packaging work easier.
In general, deriving the bytecode filename from the source filename
(perhaps with some kind of prefix substitution, perhaps by decorating
the filename) means that it is possible for compiled files to share
the access control status of the source files they relate to, and it
makes it much easier for them to share the source files' lifetime too.
The meaningful scope of such a compiled file is not really related to
the user who creates it. I think the only reason Perl6 is currently
using something in ~ is that this is somewhere that can be written to
without obvious bad security properties.
Another bad thing with ~ that I forgot to mention is that it might be
on NFS or even on SMB or something. Ie it might be subject to
concurrent access from other hosts, in which case using ~ is
effectively using the network file system as the basis for an
inter-host communication protocol. Long experience with all kinds of
network-filesystem-indudced lossage suggests that this is a bad idea.
Also it can be quite slow - sometimes very much slower than the local
storage used for the source of the program being run.