Python 3.14.1 arrive avec une pile d'améliorations
Python 3.14 a été publié en octobre, mais quelques bugs ont réussi à se propager dans la grande version, et quelques autres modifications n'étaient pas prêtes pour les heures de grande écoute. Une nouvelle mise à jour mineure est maintenant arrivée sous le nom de Python 3.14.1, avec sa propre pile de corrections de bugs et quelques nouvelles fonctionnalités.
La dernière mise à jour majeure, Python 3.14, a ajouté la prise en charge des littéraux de chaîne de modèle (t-strings) et a fait sortir la version à thread libre du statut expérimental. Cette mise à jour est beaucoup plus petite, mais comporte quelques modifications utiles. Bugs qui ont provoqué des plantages dans le re.Scanner, functools, locale.strxfrm, dict, concurrent.interpreterset ssl les fonctions ont été corrigées. Le Python à thread libre a désormais amélioré le garbage collection et la mise à l'échelle multi-thread, et plusieurs problèmes de fuite de mémoire ont été résolus dans les utilitaires et bibliothèques principaux.
Python 3.14.1 apporte également quelques améliorations à la création pour les plates-formes iOS et iPadOS. Les modules binaires peuvent désormais être compilés avec une liaison de bibliothèque dynamique, au lieu d'une liaison Framework. L'application du banc de test iOS peut également utiliser la variable d'environnement GITHUB_ACTIONS, et le banc de test iOS gère désormais correctement les arguments de test contenant des espaces.
Il n'y aura peut-être pas d'améliorations linguistiques significatives dans cette version (nous devrons attendre Python 3.15 pour cela) mais tous les petits changements s'ajoutent à une excellente mise à jour. Vous pouvez voir le journal des modifications complet sur le lien source ci-dessous, mais il s'agit uniquement des modifications apportées au noyau Python et aux bibliothèques intégrées :
Journal des modifications Python 3.14.1 pour les utilitaires principaux
-
gh-142048 : Correction des délais de récupération de place augmentant de façon quadratique dans la version à thread libre.
-
gh-116738 : Correction d'un problème de sécurité des threads avec
reobjets scanner dans les versions à thread libre. -
gh-141930 : Lors de l'importation d'un module, utilisez l'objet fichier standard de Python pour vous assurer que les écritures dans
.pycles fichiers sont complets ou une erreur appropriée est générée. -
gh-120158 : Correction d'un état incohérent lors de l'activation ou de la désactivation des événements de surveillance trop souvent.
-
gh-139653 : Ne soulevez qu'un
RecursionErrorou déclencher une erreur fatale si le pointeur de pile est tous deux en dessous du pointeur de limite et au-dessus de la base de la pile. Si vous êtes en dehors de ces limites, supposez que tout va bien. Cela évite les faux positifs lorsque les threads de l’espace utilisateur échangent les piles. -
gh-139103 : Améliorez la mise à l'échelle multithread des classes de données sur la version à thread libre.
-
gh-141579 : Correction
sys.activate_stack_trampoline()pour soutenir correctement leperf_jitback-end. Patch de Pablo Galindo. -
gh-114203 : Ignorer le verrouillage si l'objet est déjà verrouillé par une section critique à deux mutex.
-
gh-141528 : suggérer d'utiliser
concurrent.interpreters.Interpreter.close()au lieu du privé_interpreters.destroyfonction lors de l’avertissement concernant les sous-interprètes restants. Patch de Sergueï Miryanov. -
gh-141312 : Correction de l'échec de l'assertion dans le
__setstate__méthode de l’itérateur de plage lorsqu’un argument non entier est passé. Patch de Sergueï Miryanov. -
gh-116738 : Rendre le module csv thread-safe sur le fil gratuit construire.
-
gh-140939 : Correction d'une fuite de mémoire lorsque
bytearrayoubytesest formaté avec le%*bformat avec une grande largeur qui donne lieu à unMemoryError. -
gh-140260 : Correction
structcourse aux données dans l'initialisation de la table endian avec des sous-interprètes. Patch de Shamil Abdulaev. -
gh-140530 : Correction d'une fuite de référence lorsque
raise exc from causeéchoue. Patch de Bénédict Tran. -
gh-140373 : Émettre correctement
PY_UNWINDévénement lorsque l'objet générateur est fermé. Patch de Mikhaïl Efimov. -
gh-140576 : Correction d'un crash dans
tokenize.generate_tokens()en cas de saisie incorrecte spécifique. Patch de Mikhaïl Efimov. -
gh-140551 : Correction d'un crash dans
dictsidict.clear()est appelé au stade de la recherche. Patch de Mikhail Efimov et Inada Naoki. -
gh-140517 : Correction d'une fuite de référence lors de l'itération sur le résultat de
map()avecstrict=Truelorsque les itérables d'entrée ont des longueurs différentes. Patch de Mikhaïl Efimov. -
gh-140471 : Correction d'un débordement potentiel de tampon dans
ast.ASTinitialisation du nœud en cas de rencontre d'un message malformé_fieldscontenant des non-str. -
gh-140431 : Correction d'un crash dans Python éboueur en raison d'une initialisation partielle coroutine objets lorsque la profondeur de suivi de l'origine de la coroutine est activée (
sys.set_coroutine_origin_tracking_depth()). -
gh-140398 : Correction des fuites de mémoire dans
readlinefonctionsread_init_file(),read_history_file(),write_history_file()etappend_history_file()quandPySys_Audit()échoue. -
gh-140406 : Correction d'une fuite de mémoire lorsqu'un objet
__hash__()La méthode renvoie un objet qui n'est pas unint. -
gh-140358 : Restaurez le temps écoulé et le nombre d'objets inaccessibles dans la sortie de débogage GC. Ceux-ci ont été supprimés par inadvertance lors d'une refactorisation de
gc.c. Le journal de débogage indique à nouveau le temps de collecte écoulé et le nombre d'objets inaccessibles. Contribution de Pål Grønås Drange. -
gh-140306 : Correction des fuites de mémoire dans les opérations de canal entre interprètes et la gestion des espaces de noms partagés.
-
gh-140301 : Correction d'une fuite de mémoire de
PyConfigchez les sous-interprètes. -
gh-140257 : Correction d'une course aux données entre performer_clear() et take_gil() sur eval_breaker lors de la finalisation avec les threads démons.
-
gh-139951 : corrige une régression des performances GC pour un tas croissant composé principalement de petits tuples.
-
gh-140104 : Correction d'un bug avec la gestion des exceptions dans le JIT. Patch de Ken Jin. Bug signalé par Daniel Diniz.
-
gh-140061 : Correction de la vérification si un objet est référencé de manière unique pour garantir la compatibilité avec le thread libre. Patch de Sergueï Miryanov.
-
gh-140067 : Correction d'une fuite de mémoire lors de la création d'un sous-interprète.
-
gh-140000 : Correction d'une fuite de mémoire potentielle lorsqu'un cycle de référence existe entre une instance de
typing.TypeAliasType,typing.TypeVar,typing.ParamSpecoutyping.TypeVarTupleet son__name__attribut. Patch de Mikhaïl Efimov. -
gh-139914 : Restaurez la prise en charge de HP PA-RISC, qui a une pile croissante.
-
gh-139988 : Correction d'une fuite de mémoire lors de l'échec de la création d'un
Uniontaper. Patch de Bénédict Tran. -
gh-139748 : Correction des fuites de référence dans les branches d'erreur des fonctions acceptant des chaînes de chemin ou des octets tels que
compile()etos.system(). Patch de Bénédict Tran. -
gh-139516 : Correction de la spécification de format de démarrage par erreur des deux points lambda dans la chaîne f dans le tokenizer.
-
gh-139640 :
ast.parse()n'émet plus d'avertissements de syntaxe pourreturn/break/continuedansfinally(voir PPE 765) – ils ne sont émis que lors de la compilation. -
gh-139640 : Correction du fait d'avaler certains avertissements de syntaxe dans différents modules s'ils ont accidentellement le même message et sont émis à partir de la même ligne. Corrigez les avertissements en double dans le
finallybloc. -
gh-63161 : prend en charge le shebang et les commentaires non UTF-8 dans les fichiers source Python si un encodage non UTF-8 est spécifié. Détectez les erreurs de décodage dans les commentaires pour le codage par défaut (UTF-8). Afficher la ligne et la position de l'erreur de décodage pour le codage par défaut dans un traçage. Afficher la ligne contenant le cookie de codage lorsqu'il entre en conflit avec la nomenclature dans un traçage.
-
gh-116738 : Faire
mmapthread-safe sur le fil gratuit construire. -
gh-138558 : Correction de la gestion des annotations inhabituelles de chaînes de caractères dans annotationlib. Patch de Dave Peck.
-
gh-134466 : N'exécutez pas PyREPL dans un environnement dégradé où la définition des attributs termios n'est pas autorisée.
-
gh-138944 : Correction
SyntaxErrormessage lorsqu'une syntaxe invalide apparaît sur la même ligne qu'une syntaxe valideimport ... as ...oufrom ... import ... as ...déclaration. Patch de Brian Schubert. -
gh-105487 : Supprimer les éléments inexistants
__copy__(),__deepcopy__()et__bases__de la__dir__()entrées detypes.GenericAlias. -
gh-69605 : Correction de certains sous-modules de bibliothèque standard manquants dans le REPL auto-complétion des importations.
-
gh-116738 : Faire
cProfilethread-safe sur le fil gratuit construire. -
gh-138004 : Sur les plateformes Solaris/Illumos, les noms de threads sont désormais codés en ASCII pour éviter les erreurs sur les systèmes (par exemple OpenIndiana) qui ne prennent pas en charge les noms non-ASCII.
-
gh-137433 : Correction d'un blocage potentiel dans le enfilage gratuit build lorsque les threads démons activent ou désactivent le profilage ou le traçage pendant que le thread principal arrête l'interpréteur.
-
gh-137400 : Correction d'un crash dans le enfilage gratuit build lors de la désactivation du profilage ou du traçage sur tous les threads avec
PyEval_SetProfileAllThreads()ouPyEval_SetTraceAllThreads()ou leurs équivalents Pythonthreading.settrace_all_threads()etthreading.setprofile_all_threads(). -
gh-58124 : Correction du nom de l'encodage Python dans les erreurs Unicode du codec de la page de codes : utilisez « cp65000 » et « cp65001 » au lieu de « CP_UTF7 » et « CP_UTF8 » qui ne sont pas des noms de code Python valides. Patch de Victor Stinner.
-
gh-132657 : Améliorer les performances de
frozenseten supprimant les verrous dans la version free-threading. -
gh-133400 : Correction du comportement Ctrl+D (^D) dans le module _pyrepl pour correspondre à l'ancien comportement REPL antérieur à la version 3.13.
-
gh-128640 : Correction d'un crash lors de l'utilisation de threads à l'intérieur d'un sous-interprète.
Vous pouvez télécharger la dernière version de Python sur le site officiel du projet. Les systèmes Linux devraient pouvoir être mis à jour via le référentiel de packages système, et les utilisateurs Mac et Linux peuvent également l'obtenir via Homebrew, bien que la version 3.14.1 n'y apparaisse pas encore.
