Python 3.14.1 arrive avec une pile d'améliorations
Agence web » Actualités du digital » Python 3.14.1 arrive avec une pile d'améliorations

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 re objets 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 .pyc les 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 RecursionError ou 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 le perf_jit back-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.destroy fonction 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 bytearray ou bytes est formaté avec le %*b format avec une grande largeur qui donne lieu à un MemoryError.

  • gh-140260 : Correction struct course 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 dict si dict.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() avec strict=True lorsque 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.AST initialisation du nœud en cas de rencontre d'un message malformé _fields contenant 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 readline fonctions read_init_file(), read_history_file(), write_history_file()et append_history_file() quand PySys_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 un int.

  • 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 PyConfig chez 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.ParamSpecou typing.TypeVarTuple et 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 Union taper. 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() et os.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 pour return/break/continue dans finally (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 finally bloc.

  • 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 mmap thread-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 SyntaxError message lorsqu'une syntaxe invalide apparaît sur la même ligne qu'une syntaxe valide import ... as ... ou from ... import ... as ... déclaration. Patch de Brian Schubert.

  • gh-105487 : Supprimer les éléments inexistants __copy__(), __deepcopy__()et __bases__ de la __dir__() entrées de types.GenericAlias.

  • gh-69605 : Correction de certains sous-modules de bibliothèque standard manquants dans le REPL auto-complétion des importations.

  • gh-116738 : Faire cProfile thread-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() ou PyEval_SetTraceAllThreads() ou leurs équivalents Python threading.settrace_all_threads() et threading.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 frozenset en 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.

★★★★★