Intérêt

L'utilisation des fonctions des modules, sans avoir accès aux modules ni faire des using, à partir d'un fichier binaire qui contient des versions précompilées de ces modules.

Génération du fichier binaire

Ajout du PackageCompiler en local
~$ julia
julia > ]
(v1.4) pkg> add PackageCompiler
Création d'un nouvel environnement et ajout des modules à compiler

Dans un dossier NouveauEnv je crée un nouvel environnement julia

~$ mkdir NouveauEnv
~$ cd NouveauEnv
~$ julia
julia> ]
pkg> activate .
(NouveauEnv) pkg> add https://github.com/mathn7/TestOptinum.git
(NouveauEnv) pkg> add https://github.com/mathn7/optinum.git
(NouveauEnv) pkg> add LinearAlgebra #je rajoute autant que je veux des modules
Génération du fichier binaire

Avant de procéder à la génération du fichier binaire il faut créer un fichier julia (dans le dossier NouveauEnv) qui utilise les modules pour pouvoir exporter les fonctions. Le contenu de (NouveauEnv/Exemple.jl) sera :

~/NouveauEnv
❯ cat Exemple.jl
using LinearAlgebra ;using TestOptinum;using Optinum;
~$julia
julia> ]
pkg> activate .
(NouveauEnv) pkg>
julia> using PackageCompiler
julia> PackageCompiler.create_sysimage([:LinearAlgebra , :TestOptinum ,:Optinum]; sysimage_path="ExamplePrecompile.so",
                                         precompile_execution_file="Exemple.jl")

les paramètres de la fonction create_sysimage, utilisés sont :

premier paramètre : liste des modules à compiler (dans notre exemple : LinearAlgebra,TestOptinum,Optinum)

deuxième paramètre (sysimage_path) : nom du fichier binaire à générer (on peut spécifier le chemin également)

troisième paramètre (precompile_execution_file) : nom du fichier à compiler

Utilisation du fichier binaire

Après la génération du fichier binaire ExamplePrecompile.so on peut utiliser les fonctions précompilées (qui se trouvaient dans Exemple.jl) sans faire des using

~$julia -q -JExamplePrecompile.so
julia> LinearAlgebra.norm([4 5],2)
6.4031242374328485

julia>TestOptinum.tester_algo_newton(true,Optinum.Algorithme_De_Newton)
Test Summary:    | Pass  Total
L'algo de Newton |    4      4