• [^] # Re: Nix et autres

    Posté par . En réponse à la dépêche GNU Guix version Un‐Point‐Zéro. Évalué à 4.

    quels sont les avantages de guile face à d'autres langages plus commun ?

    Il est très facile d'écrire un Domain Specific Language (DSL).

    Pour le dire autrement, on peut voir la définition d'un paquet comme simplement une liste de mot-clés (package, name, version, etc.) avec des déclarations. Au lieu de :

    (package
     (name "ocaml-qcheck")
     (version "0.9")
     (source
     (origin
     (method url-fetch)
    [...]

    cela pourrait se lire :

    package :
     name "ocaml-qcheck"
     version "0.9"
     source :
     origin :
     method url-fetch
    [...]

    et ceci est possible avec l'extension Wisp. C'est très déclaratif et il n'y a pas besoin de connaitre Lisp ou Scheme pour définir des paquets. Certes, il y a une petite barrière psychologique avec les parenthèses. :-)

    D'expérience dans les "configurations", on veut pouvoir décrire des choses plus ou moins complexes et très souvent on arrive à vouloir des fonctions, des boucles, des tests, etc. Alors autant utiliser directement un langage qui va bien.

    Pourquoi GNU Guile ? L'histoire dit que c'est un contributeur de Nix et qui était aussi co-mainteneur de GNU Guile. Et voilà Guile+Nix ;-)

    Et comme GNU Guix est basé sur scheme qui permet de créer facilement des DSL, il y a une expérimentation très intéressante pour décrire un workflow d'exécution (comme dans les projets Snakemake, Common Workflow Language, Workflow Definition Language, Nextflow, etc.), c'est le Guix Workflow Language. Par exemple, présentations au FOSDEM 2017 ou 2019.