Annonce : LilyPond devient LiPyPond

Bonjour à toutes et à tous,

Pour continuer la série après Frescobaldi 3.0, voici une nouvelle annonce, concernant le logiciel LilyPond lui-même cette fois. Comme je viens de l'apprendre sur la liste de développement (que je ne suis plus que de loin), il a été décidé que dans sa prochaine version majeure, la 3.0, LilyPond sera renommé en LiPyPond.

En effet, un effort est en cours depuis plusieurs mois pour ajouter Python comme langage d'extension en plus de Scheme (et à terme, probablement en remplacement complet de Scheme, mais ce serait pour une 4.0, tandis que dans la 3.0 les deux continueront à coexister). Les détails restent à peaufiner, mais il y aura en gros une syntaxe !{ … !} pour insérer un bloc de code Python, et une API fournie par un module ly semblable à l'ensemble des fonctions Scheme en ly:…. Par exemple, il deviendra possible de faire

t = 0.2
{
  \override Stem.thickness = !{ t/2 !}
  c'
}

au lieu de

t = 0.2
{
  \override Stem.thickness = #(/ t 2)
  c'
}

ou encore

!{
def tr(grob, orig):
    return orig + 0.1
!}

{
  \override Stem.thickness = !{ ly.grob_transformer(tr) !}
  c'
}

au lieu de

{
  \override Stem.thickness = #(grob-transformer (lambda (grob orig) (+ orig 0.1)))
  c'
}

La sortie de cette nouvelle version est pour l'instant prévue pour juillet.

LilyPondement LiPyPondement,
Jean

1 « J'aime »

Python, poisson et nénuphar ne font pas bon ménage...

LiPyPond :rofl:

:rofl:

:joy:

Blague à part, pour l'anecdote, il y a quelques années, je me suis amusé pour de vrai à faire tourner Python à l'intérieur de LilyPond — pas en lançant la commande python dans un sous-processus, mais vraiment en mémoire partagée dans le même processus, de la même manière que les exemples de mon poisson d'avril :

https://lists.gnu.org/archive/html/lilypond-user/2023-02/msg00163.html

(mais bien sûr ça ne donne pas une intégration pratique du tout avec LilyPond et faire coexister en harmonie les deux garbage collectors serait une horreur).

En fait, ce n'est pas tant le Scheme le problème, même s'il est plus pénible à manipuler que le Python, mais plutôt de savoir comment communiquer avec les routines lilypond.

Et pour cela, la seule doc, c'est le code source de lliypond, et réussir à comprendre et maitriser le code source lilypond est un gros investissement en temps.