4.11. Langages de programmation dynamiques, serveurs web et de base de données
Python 3.11 disponible dans RHEL 9
RHEL 9.2 introduit Python 3.11, fourni par le nouveau paquet python3.11 et une suite de paquets construits pour lui, ainsi que l'image de conteneur ubi9/python-311.
Les améliorations notables par rapport à la version précédente de Python 3.9 sont les suivantes :
- Amélioration significative des performances.
-
Correspondance des modèles structurels à l'aide du nouveau mot-clé
match(similaire àswitchdans d'autres langues). - Amélioration des messages d'erreur, par exemple en cas de parenthèses ou de crochets non fermés.
- Numéros de ligne exacts pour le débogage et d'autres cas d'utilisation.
- Prise en charge de la définition des gestionnaires de contexte sur plusieurs lignes en mettant les définitions entre parenthèses.
-
Diverses nouvelles fonctionnalités liées aux indications de type et au module
typing, telles que le nouvel opérateur d'union de typeX | Y, les génériques variadiques et le nouveau typeSelf. - Emplacements précis des erreurs dans les traces de retour qui pointent vers l'expression qui a causé l'erreur.
-
Un nouveau module de la bibliothèque standard
tomllibqui prend en charge l'analyse TOML. -
Possibilité de soulever et de traiter simultanément plusieurs exceptions sans rapport entre elles grâce aux groupes d'exceptions et à la nouvelle syntaxe
except*.
Python 3.11 et les paquets construits pour lui peuvent être installés en parallèle avec Python 3.9 sur le même système.
Pour installer les paquets de la pile python3.11, utilisez, par exemple :
dnf install python3.11 dnf install python3.11-pip
# dnf install python3.11
# dnf install python3.11-pip
Pour lancer l'interpréteur, utilisez, par exemple :
python3.11 python3.11 -m pip --help
$ python3.11
$ python3.11 -m pip --help
Voir Installation et utilisation de Python pour plus d'informations.
Notez que Python 3.11 aura un cycle de vie plus court que Python 3.9, qui est l'implémentation Python par défaut dans RHEL 9 ; voir Red Hat Enterprise Linux Application Streams Life Cycle.
nodejs:18 rebasé à la version 18.14 avec npm rebasé à la version 9
La mise à jour de Node.js 18.14 inclut une mise à jour majeure SemVer de npm de la version 8 à la version 9. Cette mise à jour était nécessaire pour des raisons de maintenance et peut nécessiter une adaptation de la configuration de npm.
Notamment, les paramètres liés à l'authentification qui ne sont pas liés à un registre spécifique ne sont plus pris en charge. Cette modification a été apportée pour des raisons de sécurité. Si vous utilisiez des configurations d'authentification non délimitées, le jeton fourni était envoyé à chaque registre répertorié dans le fichier .npmrc.
Si vous utilisez des jetons d'authentification non codés, générez et fournissez des jetons codés dans le registre dans votre fichier .npmrc.
Si vous avez des lignes de configuration utilisant _auth, comme //registry.npmjs.org/:_auth dans vos fichiers .npmrc, remplacez-les par //registry.npmjs.org/:_authToken=${NPM_TOKEN} et fournissez le jeton scoped que vous avez généré.
Pour une liste complète des changements, voir le journal des changements en amont.
git repassé à la version 2.39.1
Le système de contrôle de version Git a été mis à jour à la version 2.39.1, qui apporte des corrections de bogues, des améliorations et des gains de performance par rapport à la version 2.31 publiée précédemment.
Parmi les améliorations notables, citons
-
La commande
git logprend désormais en charge un format de remplacement pour la sortiegit describe:git log --format=%(describe) La commande
git commitsupporte désormais l'option--fixup<commit>qui permet de corriger le contenu du commit sans modifier le message de log. Avec cette mise à jour, vous pouvez également utiliser :-
L'option
--fixup=amend:<commit>permet de modifier à la fois le message et le contenu. -
L'option
--fixup=reword:<commit>permet de ne mettre à jour que le message de validation.
-
L'option
-
Vous pouvez utiliser la nouvelle option
--reject-shallowavec la commandegit clonepour désactiver le clonage à partir d'un référentiel peu profond. -
La commande
git branchprend désormais en charge l'option--recurse-submodules. Vous pouvez maintenant utiliser la commande
git merge-treepour :- Tester si deux branches peuvent fusionner.
- Calculer l'arbre qui résulterait du commit de fusion si les branches étaient fusionnées.
-
Vous pouvez utiliser la nouvelle variable de configuration
safe.bareRepositorypour filtrer les dépôts nus.
git-lfs repassé à la version 3.2.0
L'extension Git Large File Storage (LFS) a été mise à jour à la version 3.2.0, qui apporte des corrections de bogues, des améliorations et des gains de performance par rapport à la version 2.13 publiée précédemment.
Les changements les plus notables sont les suivants :
-
Git LFSintroduit un protocole de transport purement basé sur SSH. -
Git LFSpropose désormais un pilote de fusion. -
L'utilitaire
git lfs fsckvérifie désormais également que les pointeurs sont canoniques et que les fichiers LFS attendus ont un format correct. - La prise en charge du protocole d'authentification NT LAN Manager (NTLM) a été supprimée. Utilisez plutôt l'authentification Kerberos ou Basic.
Un nouveau flux de modules : nginx:1.22
Le serveur web et proxy nginx 1.22 est maintenant disponible en tant que module stream nginx:1.22. Cette mise à jour apporte un certain nombre de corrections de bogues, de correctifs de sécurité, de nouvelles fonctionnalités et d'améliorations par rapport à la version 1.20 publiée précédemment.
Nouvelles fonctionnalités :
nginxprend désormais en charge :-
OpenSSL 3.0 et la fonction
SSL_sendfile()lors de l'utilisation d'OpenSSL 3.0. - La bibliothèque PCRE2.
-
POP3 et IMAP pipelining dans le module proxy
mail.
-
OpenSSL 3.0 et la fonction
-
nginxtransmet maintenant les lignes d'en-têteAuth-SSL-ProtocoletAuth-SSL-Cipherau serveur d'authentification du proxy de messagerie.
Directives renforcées :
-
Plusieurs nouvelles directives sont désormais disponibles, telles que
ssl_conf_commandetssl_reject_handshake. -
La directive
proxy_cookie_flagsprend désormais en charge les variables. -
nginxsupporte désormais les variables dans les directives suivantes :proxy_ssl_certificate,proxy_ssl_certificate_key,grpc_ssl_certificate,grpc_ssl_certificate_key,uwsgi_ssl_certificate, etuwsgi_ssl_certificate_key. -
La directive
listendu module stream prend désormais en charge un nouveau paramètrefastopen, qui active le modeTCP Fast Openpour les sockets à l'écoute. -
Une nouvelle directive
max_errorsa été ajoutée au module proxymail.
Autres modifications :
nginxrenvoie désormais toujours une erreur si :-
La méthode
CONNECTest utilisée. -
Les en-têtes
Content-LengthetTransfer-Encodingsont spécifiés dans la demande. - Le nom de l'en-tête de la requête contient des espaces ou des caractères de contrôle.
-
La ligne d'en-tête de la demande
Hostcontient des espaces ou des caractères de contrôle.
-
La méthode
-
nginxbloque désormais toutes les requêtes HTTP/1.0 qui incluent l'en-têteTransfer-Encoding. -
nginxétablit désormais des connexions HTTP/2 en utilisant le protocole de négociation de la couche d'application (ALPN) et ne prend plus en charge le protocole de négociation du protocole suivant (NPN).
Pour installer le flux nginx:1.22, utilisez
dnf module install nginx:1.22
# dnf module install nginx:1.22
Pour plus d'informations, voir Installation et configuration de NGINX.
Pour obtenir des informations sur la durée de la prise en charge des flux du module nginx, consultez le cycle de vie des flux d'applications de Red Hat Enterprise Linux.
Bugzilla:2096174
mod_security repassé à la version 2.9.6
Le module mod_security pour le serveur HTTP Apache a été mis à jour à la version 2.9.6, qui apporte de nouvelles fonctionnalités, des corrections de bogues et des correctifs de sécurité par rapport à la version 2.9.3 précédemment disponible.
Parmi les améliorations notables, citons
-
Ajustement des règles d'activation de l'analyseur dans le fichier
modsecurity.conf-recommended. -
Amélioration de la façon dont
mod_securityanalyse les requêtes multipartites HTTP. -
Ajout d'une nouvelle collection
MULTIPART_PART_HEADERS. - Ajout d'une résolution d'horodatage en microsecondes à l'horodatage formaté du journal.
- Ajout des géo-pays manquants.
Nouveaux paquets : tomcat
RHEL 9.2 introduit la version 9 du serveur Apache Tomcat. Tomcat est le conteneur de servlets utilisé dans l'implémentation de référence officielle des technologies Java Servlet et JavaServer Pages. Les spécifications de Java Servlet et JavaServer Pages sont développées par Sun dans le cadre du Java Community Process. Tomcat est développé dans un environnement ouvert et participatif et publié sous la licence Apache Software License version 2.0.
Bugzilla:2160511
Un nouveau flux de modules : postgresql:15
RHEL 9.2 introduit PostgreSQL 15 en tant que flux de modules postgresql:15. PostgreSQL 15 offre un certain nombre de nouvelles fonctionnalités et d'améliorations par rapport à la version 13. Les changements notables sont les suivants :
Vous pouvez désormais accéder aux données JSON de
PostgreSQLen utilisant des indices. Exemple de requête :SELECT ('{ "postgres": { "release": 15 }}'::jsonb)['postgres']['release'];SELECT ('{ "postgres": { "release": 15 }}'::jsonb)['postgres']['release'];Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
PostgreSQLprend désormais en charge les types de données à plages multiples et étend la fonctionrange_aggpour agréger les types de données à plages multiples. PostgreSQLaméliore le suivi et l'observabilité :-
Vous pouvez désormais suivre la progression des commandes
COPYet de l'activité Write-ahead-log (WAL). -
PostgreSQLfournit désormais des statistiques sur les slots de réplication. -
En activant le paramètre
compute_query_id, vous pouvez désormais suivre une requête de manière unique à travers plusieurs fonctionnalitésPostgreSQL, y comprispg_stat_activityouEXPLAIN VERBOSE.
-
Vous pouvez désormais suivre la progression des commandes
PostgreSQLaméliore la prise en charge du parallélisme des requêtes de la manière suivante :- Amélioration des performances des analyses séquentielles parallèles.
-
La capacité du langage de procédure SQL (
PL/pgSQL) à exécuter des requêtes parallèles lors de l'utilisation de la commandeRETURN QUERY. -
Activation du parallélisme dans la commande
REFRESH MATERIALIZED VIEW.
-
PostgreSQLinclut désormais la commande SQL standardMERGE. Vous pouvez utiliserMERGEpour écrire des instructions SQL conditionnelles qui peuvent inclure les actionsINSERT,UPDATEetDELETEdans une seule instruction. -
PostgreSQLfournit les nouvelles fonctions suivantes pour l'utilisation d'expressions régulières pour inspecter les chaînes de caractères :regexp_count(),regexp_instr(),regexp_like(), etregexp_substr(). -
PostgreSQLajoute le paramètresecurity_invoker, que vous pouvez utiliser pour interroger les données avec les autorisations de l'appelant de la vue, et non du créateur de la vue. Cela vous permet de vous assurer que les appelants de la vue disposent des autorisations correctes pour travailler avec les données sous-jacentes. -
PostgreSQLaméliore les performances, notamment dans ses installations d'archivage et de sauvegarde. -
PostgreSQLajoute la prise en charge des algorithmes de compression sans perteLZ4etZstandard(zstd). -
PostgreSQLaméliore ses algorithmes de tri en mémoire et sur disque. -
La mise à jour du fichier d'unité
postgresql.servicesystemd garantit désormais que le servicepostgresqlest démarré après la mise en route du réseau.
Les modifications suivantes sont incompatibles avec le passé :
Les autorisations par défaut du schéma public ont été modifiées. Les utilisateurs nouvellement créés doivent obtenir une autorisation explicite en utilisant la commande
GRANT ALL ON SCHEMA public TO myuser;. Par exemple :postgres=# CREATE USER mydbuser; postgres=# GRANT ALL ON SCHEMA public TO mydbuser; postgres=# \c postgres mydbuser postgres=$ CREATE TABLE mytable (id int);
postgres=# CREATE USER mydbuser; postgres=# GRANT ALL ON SCHEMA public TO mydbuser; postgres=# \c postgres mydbuser postgres=$ CREATE TABLE mytable (id int);Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
La fonction
libpqPQsendQuery()n'est plus supportée en mode pipeline. Modifiez les applications concernées pour utiliser la fonctionPQsendQueryParams()à la place.
Voir aussi Utilisation de PostgreSQL.
Pour installer le flux postgresql:15, utilisez
dnf module install postgresql:15
# dnf module install postgresql:15
Si vous souhaitez effectuer une mise à niveau à partir d'un flux postgresql antérieur dans RHEL 9, migrez vos données PostgreSQL comme décrit dans Migrating to a RHEL 8 version of PostgreSQL (Migration vers une version RHEL 8 de PostgreSQL).
Pour obtenir des informations sur la durée de la prise en charge des flux du module postgresql, consultez le cycle de vie des flux d'applications de Red Hat Enterprise Linux.