Pelo menos para usar os arquivos .zwc , você não precisa fazer nada. Como a seção no comando . nos estados do Zsh's manpage :
[…] If a file named ‘file
.zwc’ is found, is newer than file, and is the compiled form (created with thezcompilebuiltin) of file, then commands are read from that file instead of file.
O mesmo é válido para source , pois é igual a . , exceto para a ordem de pesquisa.
Compilar automaticamente qualquer script de origem pode ser feito criando funções de wrapper. Por exemplo:
source () {
[[ ! "$1.zwc" -nt $1 ]] || zcompile $1
builtin source $@
}
. () {
[[ ! "$1.zwc" -nt $1 ]] || zcompile $1
builtin . $@
}
É claro que esses wrappers são muito simples e podem precisar de alguns fail-saves extras. Por exemplo, se o diretório, no qual o arquivo a ser armazenado reside, não for gravável. Além disso, a compilação pode falhar, mesmo que o arquivo de origem não tenha erros de sintaxe.