lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Erreur SRFI-13 sur snippet addFingering en version 2.23


From: Jean Abou Samra
Subject: Re: Erreur SRFI-13 sur snippet addFingering en version 2.23
Date: Thu, 6 Oct 2022 13:44:41 +0200 (CEST)

> Le 06/10/2022 11:36 CEST, Gilles Thibault <gillesth@free.fr> a écrit :
> 
> 
> Merci beaucoup Jean !
> 
> > Rien de très méchant. Vers le début du snippet, il suffit de
> > remplacer>
> > (string-delete s (lambda(c) ...)
> > par
> > (string-delete (lambda(c) ...) s)
> 
> Est-ce que à l'instar de Lilypond avec convert-ly, Guile fournit un
> convertisseur de
> version 1.8 vers 2.x ?
> Je suppose que non :-(



Non, ce serait trop beau. Surtout pour un langage
de programmation aussi flexible que Scheme, ce n'est
pas possible du tout.


> Est-ce qu'il y a au moins quelque part une liste des fonctions Guile qui
> ont changé de syntaxe ?
> 
> Récemment j'ai voulu utilisé string-filter
> L'aide me disait
> (string-filter pred str)
> alors qu'avec lilypond 2.22 la syntaxe était :
> (string-filter str pred)
> J'ai mis longtemps à comprendre...



Il y a l'historique des modifications par version, qui peut
se trouver ici :

https://git.savannah.gnu.org/cgit/guile.git/tree/NEWS

En descendant, tu retrouveras les changements des versions
des séries 2.0 et 2.2.

Ce n'est pas complet apparemment, je vois que ce changement
de string-filter n'y est pas. Comme tu le constateras,
c'est aussi très dense ... (Ce n'est pas pour rien que la
transition a pris dix ans pour LilyPond.)

Je pense que les changements les plus visibles pour un utilisateur
de LilyPond sont ceux-ci :

- La fonction format attend un booléen ou un port comme premier
  argument. Au lieu de (format "xyz ~a" truc), il faut faire
  (format #f "xyz ~a" truc).

- Les règles sur le placement des define sont devenus plus strictes.
  Par exemple, on ne peut plus faire

  (if condition
      (define x 'truc)
      (define x 'bidule))

  Dans ce cas précis, il faut faire

  (define x (if condition 'truc 'bidule))


Cela étant dit, d'expérience, les soucis ne proviennent pas
principalement des changements les plus visibles, mais de
la myriade de changements à des fonctions et macros moins utilisées.
Là, il n'y a pas trente-six solutions, sauf à connaître par
cœur la liste des mille modifications documentées ou non : il faut
exécuter son code et voir ce qui se passe.

Guile 2 a aussi apporté des changements majeurs en termes
d'infrastructure puisqu'il faut désormais précompiler le
code pour qu'il soit raisonnablement rapide, mais pour l'instant
LilyPond ne précompile pas le code dans les fichier .ly car
la rapidité d'exécution n'est pas essentielle et la compilation
elle-même prend du temps, sachant que pour un fichier .ly,
on ne peut pas stocker le code précompilé dans un fichier séparé
comme pour un fichier normal .scm. (Cela dit, il y aura bientôt
une option pour compiler quand même, ce qui donnera de meilleurs
messages d'erreurs.)

Le système de macros a également été modifié de façon radicale,
mais je ne pense pas que ce soit très problématique pour les
utilisateurs de LilyPond étant donné que peu définissent leurs
propres macros. (C'était par contre difficile à vivre pour
le code de LilyPond elle-même.)

Bref, je peux parler pendant des heures des complications liées
à Guile 2, mais pour faire court, il faut juste tester son code
et lire les messages d'erreurs s'ils surviennent.

Cordialement,
Jean



reply via email to

[Prev in Thread] Current Thread [Next in Thread]