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 àswitch
dans 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
tomllib
qui 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
Pour lancer l'interpréteur, utilisez, par exemple :
$ 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 log
prend désormais en charge un format de remplacement pour la sortiegit describe
:git log --format=%(describe)
La commande
git commit
supporte 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-shallow
avec la commandegit clone
pour désactiver le clonage à partir d'un référentiel peu profond. -
La commande
git branch
prend désormais en charge l'option--recurse-submodules
. Vous pouvez maintenant utiliser la commande
git merge-tree
pour :- 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.bareRepository
pour 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 LFS
introduit un protocole de transport purement basé sur SSH. -
Git LFS
propose désormais un pilote de fusion. -
L'utilitaire
git lfs fsck
vé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 :
nginx
prend 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
-
nginx
transmet maintenant les lignes d'en-têteAuth-SSL-Protocol
etAuth-SSL-Cipher
au serveur d'authentification du proxy de messagerie.
Directives renforcées :
-
Plusieurs nouvelles directives sont désormais disponibles, telles que
ssl_conf_command
etssl_reject_handshake
. -
La directive
proxy_cookie_flags
prend désormais en charge les variables. -
nginx
supporte 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
listen
du module stream prend désormais en charge un nouveau paramètrefastopen
, qui active le modeTCP Fast Open
pour les sockets à l'écoute. -
Une nouvelle directive
max_errors
a été ajoutée au module proxymail
.
Autres modifications :
nginx
renvoie désormais toujours une erreur si :-
La méthode
CONNECT
est utilisée. -
Les en-têtes
Content-Length
etTransfer-Encoding
sont 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
Host
contient des espaces ou des caractères de contrôle.
-
La méthode
-
nginx
bloque 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
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_security
analyse 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
PostgreSQL
en utilisant des indices. Exemple de requête :SELECT ('{ "postgres": { "release": 15 }}'::jsonb)['postgres']['release'];
-
PostgreSQL
prend désormais en charge les types de données à plages multiples et étend la fonctionrange_agg
pour agréger les types de données à plages multiples. PostgreSQL
améliore le suivi et l'observabilité :-
Vous pouvez désormais suivre la progression des commandes
COPY
et de l'activité Write-ahead-log (WAL). -
PostgreSQL
fournit 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_activity
ouEXPLAIN VERBOSE
.
-
Vous pouvez désormais suivre la progression des commandes
PostgreSQL
amé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
.
-
PostgreSQL
inclut désormais la commande SQL standardMERGE
. Vous pouvez utiliserMERGE
pour écrire des instructions SQL conditionnelles qui peuvent inclure les actionsINSERT
,UPDATE
etDELETE
dans une seule instruction. -
PostgreSQL
fournit 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()
. -
PostgreSQL
ajoute 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. -
PostgreSQL
améliore les performances, notamment dans ses installations d'archivage et de sauvegarde. -
PostgreSQL
ajoute la prise en charge des algorithmes de compression sans perteLZ4
etZstandard
(zstd
). -
PostgreSQL
améliore ses algorithmes de tri en mémoire et sur disque. -
La mise à jour du fichier d'unité
postgresql.service
systemd garantit désormais que le servicepostgresql
est 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);
-
La fonction
libpq
PQsendQuery()
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
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.