Les patches 5 à 9 de GNU MPFR 4.2.0 sont disponibles dans la section bugs de la page de MPFR 4.2.0. J'ai mis 3 patches (5 à 7) en fin de semaine dernière et je viens de mettre 2 nouveaux patches (8 et 9). Ces 2 derniers patches corrigent les bugs suivants:
8. La fonction mpfr_compound_si
peut prendre une énorme quantité de mémoire et beaucoup de temps dans certains cas (quand l'argument x est un grand entier pair et xn se représente exactement dans la précision cible) et ne détecte pas correctement les overflows et les underflows.
9. MPFR peut planter quand une fonction de sortie formatée est appelée avec %.2147483648Rg dans la chaîne de format. Par exemple: mpfr_snprintf (NULL, 0, "%.2147483648Rg\n", x);
Les patches 1 à 4 de GNU MPFR 4.2.0 sont disponibles dans la section bugs de la page de MPFR 4.2.0. Les premier et troisième patches corrigent des tests de MPFR et ne concernent pas la bibliothèque elle-même. Le deuxième patch (commit associé) corrige une boucle infinie dans la fonction mpfr_ui_pow_ui
en cas d'overflow; la fonction mpfr_log10
, qui utilise mpfr_ui_pow_ui
, est affectée par ce bug. Le quatrième patch (commit associé) corrige la fonction mpfr_rec_sqrt
dans certains cas très difficiles à arrondir (en pratique, la précision de l'entrée est nécessairement beaucoup plus grande que celle de la destination): de tels cas peuvent provoquer un débordement de pile à cause de nombreuses petites allocations dans la pile; une conséquence de cette correction est que cette fonction devrait maintenant être beaucoup plus rapide dans ces cas particuliers.
La bibliothèque GNU MPFR 4.2.0 (fondue savoyarde) est sortie (annonce).
Nouvelles fonctions:
mpfr_cosu
, mpfr_sinu
, mpfr_tanu
, mpfr_acosu
, mpfr_asinu
, mpfr_atanu
, mpfr_atan2u
;
mpfr_cospi
, mpfr_sinpi
, mpfr_tanpi
, mpfr_acospi
, mpfr_asinpi
, mpfr_atanpi
, mpfr_atan2pi
;
mpfr_log2p1
, mpfr_log10p1
, mpfr_exp2m1
, mpfr_exp10m1
, mpfr_compound_si
, mpfr_fmod_ui
, mpfr_powr
, mpfr_pown
, mpfr_pow_uj
, mpfr_pow_sj
, mpfr_rootn_si
(mpfr_pown
est en fait une macro définie comme un alias de mpfr_pow_sj
).
La bibliothèque GNU MPFR 4.1.1 (épinards à la crème, patch level 1) est sortie: des bugs corrigés et des améliorations dans le formatage du manuel.
The GNU MPFR 4.1.1 release candidate is available. The main changes are bug fixes (in particular for macros implementing functions) and improved manual formatting, by using a recent texinfo.tex file (2022-09-14.01).
mpfr_rootn_si
dans la version de développement de GNU MPFRJe viens d'implémenter la fonction mpfr_rootn_si
dans la version de développement de GNU MPFR. Elle fournit la fonction rootn de la norme IEEE 754 (qui est apparue dans la révision de 2008). Elle complète la fonction mpfr_rootn_ui
, qui fournissait rootn seulement pour les valeurs positives de n.
Comme annoncé le mois dernier dans sa liste de diffusion, les sources de GNU MPFR sont hébergées à https://gitlab.inria.fr/mpfr (Inria GitLab) depuis le 2021-10-15, suite à la fermeture d'InriaForge. Il y a maintenant deux dépôts Git séparés:
https://gitlab.inria.fr/mpfr/mpfr pour les sources de MPFR (informations sur le site web de GNU MPFR);
https://gitlab.inria.fr/mpfr/misc pour divers fichiers, comme ceux pour le site web de MPFR et des outils supplémentaires (en particulier, non liés à une version de MPFR).
Tout le travail lié à cette migration n'a pas encore été terminé.
Sur InriaForge, nous utilisions Subversion comme système de gestion de versions, si bien que le dépôt unique, composé des sources (trunk/branches/tags) et d'un répertoire spécial misc a dû être converti en deux dépôts Git. J'avais d'abord fait un essai avec git svn, mais une analyse du dépôt Git obtenu pour les sources a révélé des problèmes importants, causés principalement par les particularités suivantes du dépôt Subversion.
Certains fichiers et répertoires (pour les répertoires, c'étaient des branches) étaient (volontairement) remplacés, i.e. supprimés, puis rajoutés avec un historique différent (éventuellement nouveau), dans le même commit ou dans un commit ultérieur. L'outil git svn considérait que c'étaient les mêmes fichiers ou branches, et générait donc un historique complètement incorrect (par conséquent, le diff
dérivé du commit généré était aussi complètement incorrect, même si le contenu obtenu était correct).
Avant Subversion, CVS était utilisé comme système de gestion de versions, et le dépôt CVS a été converti à Subversion avec cvs2svn le 2005-10-24. Malheureusement, cvs2svn avait des bugs (ou était-ce CVS lui-même?), et a généré un historique incorrect pour les tags (nous ne nous étions pas aperçu de ce problème à ce moment, mais il n'est de toute façon pas clair que nous aurions pu faire quelque chose pour l'éviter), en particulier avec certains fichiers provenant de la branche associée et d'autres provenant du tronc.
J'ai donc décidé d'utiliser l'excellent outil reposurgeon d'Eric S. Raymond pour tout corriger, mais aussi ajouter des méta-données, comme les révisions Subversion à chaque message de commit (puisque de telles révisions sont parfois référencées), ainsi que la branche affectée (car Git ne permet pas de récupérer cette information). Pour cette conversion de dépôt avec reposurgeon, j'ai trouvé divers problèmes (certains également dûs aux particularités du dépôt Subversion de MPFR, et tous corrigés assez rapidement) et fait quelques merge requests. Certains fichiers et scripts se trouvent dans l'archive mpfr-conversion.tar.xz. Noter qu'il n'y avait qu'une seule opération entre ce qui est maintenant deux dépôts: la révision 12528 de Subversion, où un fichier était déplacé de /misc vers /trunk/tools; j'ai vérifié qu'elle a correctement été traitée par reposurgeon (mais évidemment, dans les dépôts Git, cela apparaît juste comme une addition d'un côté et comme une suppression de l'autre, sans lien entre ces deux opérations ainsi générées).
Le patch 12 de GNU MPFR 4.1.0 est disponible dans la section bugs de la page de MPFR 4.1.0. Il corrige quelques problèmes avec la fonction mpfr_get_str_ndigits
.
Les patches 10 et 11 de GNU MPFR 4.1.0 sont disponibles dans la section bugs de la page de MPFR 4.1.0. Le bug principal, corrigé par le patch 10 (parmi de possibles échecs de compilation dans des cas inhabituels): la macro mpfr_set
(qui, par défaut, est utilisée à la place de la fonction) évalue son deuxième argument deux fois.
À cause d'une coupure de l'alimentation électrique, le serveur hébergeant mpfr.org sera éteint du mardi 23 février 2021 à 17:00 CET (16:00 UTC) au mercredi 24 février 2021 à 18:00 CET (17:00 UTC), sauf imprévu. Seul le site web mpfr.org sera affecté. La liste de diffusion de MPFR et InriaForge continueront de fonctionner.
Les patches 8 et 9 de GNU MPFR 4.1.0 sont disponibles dans la section bugs de la page de MPFR 4.1.0.
Les patches 1 à 7 de GNU MPFR 4.1.0 sont disponibles dans la section bugs de la page de MPFR 4.1.0.
Bonne année à tous!
À cause d'une coupure de l'alimentation électrique, le serveur hébergeant mpfr.org sera éteint du vendredi 22 janvier 2021 à 16:00 CET (15:00 UTC) au lundi 25 janvier 2021 à 10:00 CET (09:00 UTC), sauf imprévu. Seul le site web mpfr.org sera affecté. La liste de diffusion de MPFR et InriaForge continueront de fonctionner.
The GNU MPFR 4.1.0 release candidate is available.
Note that the default CFLAGS
value for GCC uses an option that has been introduced in GCC 4.1 (released in 2006). So, if you want to build MPFR with a GCC version less than 4.1, you need to provide an explicit CFLAGS
. This issue will be fixed in the final release.
Les patches 2 à 6 de GNU MPFR 4.0.2 sont disponibles dans la section bugs de la page de MPFR 4.0.2. Les principaux corrigent des problèmes d'underflow/overflow pouvant être visibles avec les fonctions suivantes: mpfr_set_ui_2exp
, mpfr_set_si_2exp
, mpfr_set_uj_2exp
, mpfr_set_sj_2exp
, mpfr_fmma
, mpfr_fmms
, mpfr_fma
, mpfr_fms
.