Sortie du langage de programmation Python 3.8

Après un an et demi de développement présenté une mise à jour majeure du langage de programmation Python 3.8. Des mises à jour correctives pour la branche Python 3.8 prévu seront publiées pendant 18 mois. Les vulnérabilités critiques seront corrigées pendant 5 ans jusqu'en octobre 2024. Les mises à jour correctives pour la branche 3.8 sortiront tous les deux mois, la première mise à jour corrective Python 3.8.1 étant prévue pour décembre.

Parmi les ajouts innovations:

  • Support d'opérations d'affectation à l'intérieur d'expressions complexes. Grâce au nouvel opérateur « := », il est désormais possible de réaliser des opérations d'affectation de valeurs à l'intérieur d'autres expressions, par exemple pour éviter les appels doubles de fonctions dans les instructions conditionnelles et lors de la définition de boucles :

    if (n := len(a)) > 10:
    …

    while (block := f.read(256)) != »:
    …

  • Support une nouvelle syntaxe pour définir les arguments de fonction. Lors de l'énumération des arguments lors de la définition de la fonction, il est désormais possible d'indiquer le marqueur « / », permettant de séparer les arguments dont les valeurs peuvent uniquement être affectées en fonction de l'ordre des valeurs lors de l'appel de la fonction, des arguments pouvant être affectés dans n'importe quel ordre (système « variable=valeur »). Sur le plan pratique, cette nouvelle possibilité permet de reproduire complètement le comportement des fonctions existantes en C dans les fonctions Python, tout en évitant les liaisons à des noms spécifiques, par exemple si le nom du paramètre doit être modifié à l'avenir.

    Le marqueur « / » complète le marqueur « * » précédemment ajouté, séparant les variables pour lesquelles l'affectation se fait uniquement sous la forme « variable=valeur ». Par exemple, dans la fonction « def f(a, b, /, c, d, *, e, f): », les variables « a » et « b » ne peuvent être affectées que dans l'ordre des valeurs énumérées,
    les variables « e » et « f », uniquement par l'affectation « variable=valeur », et les variables « c » et « d » par n'importe quel des moyens indiqués :

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, c=30, d=40, e=50, f=60)

  • Ajouté une nouvelle API C
    pour configurer les paramètres d'initialisation de Python, permettant un contrôle total de toute configuration et fournissant des outils avancés pour le traitement des erreurs. L'API proposée facilite l'intégration de la fonctionnalité de l'interpréteur Python dans d'autres applications en C ;
  • l'opérateur de séquence optionnelle un nouveau protocole Vectorcall pour un accès plus rapide aux objets écrits en C. Dans CPython 3.8, l'accès à Vectorcall est pour l'instant limité à un usage interne, la conversion en API publiquement accessibles étant prévue dans CPython 3.9.
  • Ajoutés Appels de Runtime Audit Hooks, permettant aux applications et frameworks en Python d'accéder à des informations de bas niveau sur l'exécution du script pour auditer les actions exécutées (par exemple, il est possible de suivre l'importation de modules, l'ouverture de fichiers, l'utilisation de la traçabilité, les appels aux sockets réseau, l'exécution de code via exec, eval et run_mod);
  • Dans le module pickle la livraison par défaut de la version de Firefox basée sur Wayland est assurée. Des problèmes d'utilisation des pilotes binaires propriétaires NVIDIA avec Wayland ont été résolus. prend en charge le protocole Pickle 5, utilisé pour la sérialisation et la désérialisation d'objets. Pickle permet d'optimiser le transfert de grandes quantités de données entre les processus Python dans des configurations multi-cœurs et multi-nœuds, réduisant le nombre d'opérations de copie en mémoire et appliquant des techniques d'optimisation supplémentaires, telles que l'utilisation d'algorithmes de compression spécifiques à certains types de données. La cinquième version du protocole se distingue par l'ajout d'un mode de transfert séparé (out-of-band), où les données peuvent être transférées séparément du flux principal de pickle.
  • Par défaut, la quatrième version du protocole Pickle est activée, qui par rapport à la troisième version précédemment proposée par défaut permet d'obtenir de meilleures performances et de réduire la taille des données transférées;
  • Dans le module typing introduit plusieurs nouvelles fonctionnalités :
    • Classe TypedDict pour les tableaux associatifs, dans lesquels les informations sur le type des données liées aux clés sont explicitement définies ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Type Literal, permettant de limiter un paramètre ou une valeur de retour à plusieurs valeurs prédéfinies ("Literal['connected', 'disconnected']").
    • La construction "Final" permettant de définir les valeurs des variables, fonctions, méthodes et classes qui ne peuvent pas être modifiées ou réaffectées ("pi: Final[float] = 3.1415926536").
  • Ajout de la possibilité d'attribuer un cache aux fichiers compilés avec le bytecode, stockés dans un arbre FS séparé et distinct des répertoires contenant le code. Le chemin pour enregistrer les fichiers de bytecode est défini via la variable PYTHONPYCACHEPREFIX ou l'option "-X pycache_prefix";
  • Mise en œuvre de possibilité de créer des builds de débogage Python utilisant un ABI identique à celui des versions stables, ce qui permet de charger dans les builds de débogage des extensions écrites en C compilées pour des versions stables;
  • Les f-strings (littéraux formatés avec le préfixe ‘f’) prennent en charge l'opérateur « = » (par exemple, « f'{expr=}' »), permettant de transformer une expression en texte pour simplifier le débogage. Par exemple :

    ››› utilisateur = ‘eric_idle’
    ››› membre_depuis = date(1975, 7, 31)
    ››› f'{utilisateur=} {membre_depuis=}’
    « utilisateur=’eric_idle’ membre_depuis=datetime.date(1975, 7, 31) »

  • L'expression «continuer» est autorisée à être utilisée à l'intérieur du bloc finalement;
  • Nouveau module ajouté multiprocessing.shared_memory, permettant d'utiliser des segments de mémoire partagée dans des configurations multiprocessus ;
  • Sur la plateforme Windows, l'implémentation d'asyncio a été modifiée pour utiliser la classe ProactorEventLoop;
  • La performance de l'instruction LOAD_GLOBAL a été augmentée d'environ 40 % grâce à un nouveau mécanisme de mise en cache du code objet.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster