4.13. Langages de programmation dynamiques, serveurs web et de base de données
Python dans RHEL 9
Python 3.9 est l'implémentation par défaut de Python dans RHEL 9. Python 3.9 est distribué dans un paquet RPM python3
non modulaire dans le dépôt BaseOS et est généralement installé par défaut. Python 3.9 sera pris en charge pendant toute la durée de vie de RHEL 9.
Les versions supplémentaires de Python 3 seront distribuées sous forme de paquets RPM avec un cycle de vie plus court via le dépôt AppStream et pourront être installées en parallèle.
La commande python
(/usr/bin/python
), ainsi que d'autres commandes liées à Python, telles que pip
, sont disponibles sous forme non versionnée et renvoient à la version par défaut Python 3.9.
Python 2 n'est pas distribué avec RHEL 9.
Pour plus d'informations sur Python dans RHEL 9, voir Introduction à Python.
(BZ#1941595, JIRA:RHELPLAN-80598)
Node.js 16
disponible dans RHEL 9
RHEL 9 fournit la version 16 du support à long terme (LTS) de Node.js
, une plate-forme de développement logiciel pour la création d'applications réseau rapides et évolutives dans le langage de programmation JavaScript.
Les changements notables survenus sur Node.js 16
à partir de Node.js 14
sont les suivants :
-
Le moteur
V8
est passé à la version 9.4. -
Le gestionnaire de paquets
npm
a été mis à niveau vers la version 8.3.1. -
Une nouvelle API
Timers Promises
fournit un ensemble alternatif de fonctions de minuterie qui renvoient des objetsPromise
. -
Node.js
est désormais compatible avecOpenSSL 3.0
. -
Node.js
fournit désormais une nouvelle API expérimentaleWeb Streams
et une API expérimentale de crochets de chargement de modules ECMAScript (ESM).
Node.js 16
est la version initiale de ce flux d'applications, que vous pouvez installer facilement en tant que paquetage RPM. Node.js 16
a un cycle de vie plus court que RHEL 9. Pour plus de détails, consultez le document Red Hat Enterprise Linux Application Streams Life Cycle (cycle de vie des flux d'applications Red Hat Enterprise Linux ). D'autres versions de Node.js
seront fournies en tant que modules ayant également un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
RHEL 9 fournit Ruby 3.0
RHEL 9 est distribué avec Ruby 3.0.3
, qui apporte un certain nombre d'améliorations de performance, de corrections de bogues et de sécurité, ainsi que de nouvelles fonctionnalités par rapport à Ruby 2.7
.
Parmi les améliorations notables, citons
Caractéristiques de concurence et de parallélisme :
-
Ractor
une abstraction de modèle d'acteur qui permet une exécution parallèle sûre pour les threads, est fournie à titre expérimental. -
Fiber Scheduler
a été introduit à titre expérimental.Fiber Scheduler
intercepte les opérations bloquantes, ce qui permet une concurrence légère sans modifier le code existant.
-
Caractéristiques de l'analyse statique :
-
Le langage
RBS
, qui décrit la structure des programmesRuby
, a été introduit. La gemmerbs
a été ajoutée pour analyser les définitions de type écrites enRBS
. -
L'utilitaire
TypeProf
a été introduit. Il s'agit d'un outil d'analyse de type pour le codeRuby
.
-
Le langage
-
La recherche de motifs avec l'expression
case/in
n'est plus expérimentale. - La recherche de motifs sur une ligne, qui est une fonctionnalité expérimentale, a été repensée.
- La fonction de recherche de motifs a été ajoutée à titre expérimental.
Les améliorations suivantes ont été apportées aux performances :
-
Le collage d'un long code sur le site
Interactive Ruby Shell (IRB)
est désormais beaucoup plus rapide. -
La commande
measure
a été ajoutée àIRB
pour la mesure du temps.
D'autres changements notables sont à signaler :
- Les arguments de type mot-clé sont désormais séparés des autres arguments.
-
Le répertoire par défaut pour les gemmes installées par l'utilisateur est désormais
$HOME/.local/share/gem/
, sauf si le répertoire$HOME/.gem/
est déjà présent.
Ruby 3.0
est la version initiale de ce flux d'applications que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de Ruby
seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
(JIRA:RHELPLAN-80758)
RHEL 9 présente Perl 5.32
RHEL 9 inclut Perl 5.32
, qui apporte un certain nombre de corrections de bogues et d'améliorations par rapport à la version 5.30.
Parmi les améliorations notables, on peut citer
-
Perl
supporte désormais la version 13.0 d'Unicode. -
L'opérateur de citation
qr
a été amélioré. -
Les fonctions
POSIX::mblen()
,mbtowc
, etwctomb
fonctionnent désormais sur les locales shift state et sont thread-safe sur les compilateurs C99 et supérieurs lorsqu'elles sont exécutées sur une plateforme qui dispose de la thread-safety locale ; les paramètres length sont désormais optionnels. -
Le nouvel opérateur infixe expérimental
isa
vérifie si un objet donné est une instance d'une classe donnée ou une classe dérivée. - Les assertions alpha ne sont plus expérimentales.
- Les exécutions de scripts ne sont plus expérimentales.
- Les vérifications des caractéristiques sont désormais plus rapides.
-
Perl
peut désormais extraire les motifs compilés avant l'optimisation.
Perl 5.32
est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de Perl
seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
(JIRA:RHELPLAN-80759)
RHEL 9 comprend PHP 8.0
RHEL 9 est distribué avec PHP 8.0
, qui apporte un certain nombre de corrections de bogues et d'améliorations par rapport à la version 7.4.
Parmi les améliorations notables, citons
- Les nouveaux arguments nommés sont indépendants de l'ordre et auto-documentés, et vous permettent de ne spécifier que les paramètres requis.
- De nouveaux attributs permettent d'utiliser des métadonnées structurées avec la syntaxe native de PHP.
- Les nouveaux types d'union vous permettent d'utiliser des déclarations de type d'union natives qui sont validées au moment de l'exécution au lieu des annotations PHPDoc pour une combinaison de types.
- Les fonctions internes lèvent désormais plus systématiquement une exception d'erreur au lieu d'un avertissement en cas d'échec de la validation des paramètres.
- Les nouveaux moteurs de compilation Just-In-Time améliorent considérablement les performances des applications.
-
L'extension de débogage et de productivité
Xdebug
pour PHP a été mise à jour à la version 3. Cette version introduit des changements majeurs dans les fonctionnalités et la configuration par rapport àXdebug 2
.
PHP 8.0
est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de PHP
seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
Pour plus d'informations, voir Utilisation du langage de script PHP.
RHEL 9 fournit Git 2.31
et Git LFS 2.13
RHEL 9 est distribué avec Git 2.31
qui fournit un certain nombre d'améliorations et de performances par rapport à la version 2.27 disponible dans RHEL 8. Les changements les plus importants sont les suivants :
-
La commande
git status
indique désormais l'état de la vérification des données éparses (sparse checkout). -
Vous pouvez désormais utiliser l'option
--add-file
avec la commandegit archive
pour inclure des fichiers non suivis dans un instantané à partir d'un identifiant de type arbre. -
Vous pouvez utiliser la variable de configuration
clone.defaultremotename
pour personnaliser le surnom du référentiel distant source. -
Vous pouvez configurer la longueur maximale des noms de fichiers de sortie créés par la commande
git format-patch
. Auparavant, la limite de longueur était de 64 octets. - La prise en charge de la bibliothèque PCRE1, obsolète, a été supprimée.
En outre, la version 2.13 de l'extension Git Large File Storage (LFS)
est désormais disponible. Les améliorations par rapport à la version 2.11 distribuée dans RHEL 8 sont les suivantes :
-
Git LFS
supporte désormais les dépôts SHA-256. -
Git LFS
prend désormais en charge le protocolesocks5h
. -
Une nouvelle option
--worktree
est disponible pour les commandesgit lfs install
etgit lfs uninstall
. -
Un nouveau paramètre
--above
est disponible pour la commandegit lfs migrate import
.
(BZ#1956345, BZ#1952517)
Subversion 1.14
dans RHEL 9
RHEL 9 est distribué avec Subversion 1.14
. Subversion 1.14
est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de Subversion
seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
(JIRA:RHELPLAN-82578)
Changements notables dans le serveur HTTP Apache
RHEL 9.0 fournit la version 2.4.51 du serveur HTTP Apache. Les changements notables par rapport à la version 2.4.37 sont les suivants :
Interface de contrôle du serveur HTTP Apache (
apachectl
) :-
Le pager
systemctl
est maintenant désactivé pour la sortieapachectl status
. -
La commande
apachectl
échoue maintenant au lieu de donner un avertissement si vous passez des arguments supplémentaires. -
La commande
apachectl graceful-stop
revient maintenant immédiatement. -
La commande
apachectl configtest
exécute désormais la commandehttpd -t
sans modifier le contexte SELinux. -
La page de manuel
apachectl(8)
de RHEL documente désormais pleinement les différences avec la version amontapachectl
.
-
Le pager
Outil Apache eXtenSion (
apxs
) :-
La commande
/usr/bin/apxs
n'utilise ni n'expose plus les drapeaux d'optimisation du compilateur tels qu'ils sont appliqués lors de la construction du paquethttpd
. Vous pouvez maintenant utiliser la commande/usr/lib64/httpd/build/vendor-apxs
pour appliquer les mêmes drapeaux de compilateur que ceux utilisés pour construirehttpd
. Pour utiliser la commandevendor-apxs
, vous devez d'abord installer le paquetageredhat-rpm-config
.
-
La commande
Modules Apache :
-
Le module
mod_lua
est désormais fourni dans un paquet séparé. -
Un nouveau connecteur
mod_jk
pour le serveur Apache HTTP est un module qui utilise le protocole Apache JServ (AJP) pour connecter les serveurs web avec Apache Tomcat et d'autres backends. -
Un nouveau module
mod_proxy_cluster
fournit un équilibreur de charge basé sur httpd qui utilise un canal de communication pour transmettre les demandes de l'équilibreur de charge à l'un des nœuds du serveur d'application. Les nœuds de serveurs d'application utilisent cette connexion pour transmettre à l'équilibreur de charge les facteurs d'équilibrage de la charge côté serveur et les événements du cycle de vie par le biais d'un ensemble personnalisé de méthodes HTTP appelé Mod-Cluster Management Protocol (MCMP). Ce canal de retour d'information supplémentaire permet àmod_proxy_cluster
d'offrir un niveau d'intelligence et de granularité que l'on ne trouve pas dans d'autres solutions d'équilibrage de charge. Ce module nécessite que le clientModCluster
soit installé sur le serveur dorsal pour communiquer avec succès.
-
Le module
Modifications de la syntaxe de configuration :
-
Dans la directive obsolète
Allow
fournie par le modulemod_access_compat
, un commentaire (le caractère#
) déclenche désormais une erreur de syntaxe au lieu d'être ignoré silencieusement.
-
Dans la directive obsolète
Autres modifications :
- Les identifiants des threads du noyau sont désormais utilisés directement dans les messages du journal des erreurs, ce qui les rend à la fois précis et plus concis.
- Nombreuses améliorations mineures et corrections de bugs.
- Un certain nombre de nouvelles interfaces sont à la disposition des auteurs de modules.
L'API du module httpd
n'a fait l'objet d'aucune modification rétrocompatible depuis RHEL 8.
Apache HTTP Server 2.4 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM.
Pour plus d'informations, voir Configuration du serveur web Apache HTTP.
(JIRA:RHELPLAN-68364, BZ#1931976, JIRA:RHELPLAN-80725)
nginx 1.20
disponible dans RHEL 9
RHEL 9 inclut le serveur web et proxy nginx 1.20
. Cette version 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.18.
Nouvelles fonctionnalités :
-
nginx
prend désormais en charge la validation des certificats SSL des clients avec le protocole OCSP (Online Certificate Status Protocol). -
nginx
prend désormais en charge l'effacement du cache en fonction de la quantité minimale d'espace libre. Ce support est implémenté dans le paramètremin_free
de la directiveproxy_cache_path
. -
Un nouveau module
ngx_stream_set_module
a été ajouté, qui permet de définir une valeur pour une variable. -
Un nouveau paquetage
nginx-mod-devel
a été ajouté, qui fournit tous les fichiers nécessaires, y compris les macros RPM et le code source denginx
, pour construire des modules dynamiques externes pournginx
.
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.
Amélioration de la prise en charge de HTTP/2 :
-
Le module
ngx_http_v2
comprend désormais les directiveslingering_close
,lingering_time
,lingering_timeout
. -
La gestion des connexions dans HTTP/2 a été alignée sur HTTP/1.x. À partir de
nginx 1.20
, utilisez les directiveskeepalive_timeout
etkeepalive_requests
au lieu des directiveshttp2_recv_timeout
,http2_idle_timeout
ethttp2_max_requests
qui ont été supprimées.
nginx 1.20
est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de nginx
seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
Pour plus d'informations, voir Installation et configuration de NGINX.
Varnish Cache 6.6
dans RHEL 9
RHEL 9 comprend Varnish Cache 6.6
, un proxy inverse HTTP très performant.
Les changements notables depuis la version 6.0 sont les suivants :
-
Amélioration des performances des outils de traitement des journaux, tels que
varnishlog
- Amélioration de la précision des statistiques
- Un certain nombre d'optimisations dans les consultations du cache
- Diverses modifications de la configuration
- Nombreuses améliorations et corrections de bugs
Varnish Cache 6
est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM.
RHEL 9 présente Squid 5
RHEL 9 est distribué avec Squid 5.2
, un serveur proxy de mise en cache haute performance pour les clients web, prenant en charge les objets de données FTP, Gopher et HTTP. Cette version propose un certain nombre de corrections de bogues, de correctifs de sécurité, de nouvelles fonctionnalités et d'améliorations par rapport à la version 4.
Nouvelles fonctionnalités :
Squid
améliore la responsabilité en utilisant l'algorithme Happy Eyeballs (HE).-
Squid
utilise désormais une adresse IP reçue dès que la demande de transfert l'exige, au lieu d'attendre que toutes les destinations de transfert potentielles soient entièrement résolues. -
De nouvelles directives sont désormais disponibles :
happy_eyeballs_connect_gap
les directiveshappy_eyeballs_connect_limit
ethappy_eyeballs_connect_timeout
. -
La directive
dns_v4_first
a été supprimée.
-
-
Squid
utilise désormais l'en-têteCDN-Loop
comme source de détection des boucles dans les réseaux de diffusion de contenu (CDN). -
Squid
introduit la prise en charge du peering pour le bumping SSL. - Une nouvelle fonctionnalité pour les remorques du protocole d'adaptation du contenu Internet (ICAP) est disponible. Elle permet aux agents ICAP d'envoyer de manière fiable les métadonnées du message après le corps du message.
Modifications des options de configuration :
-
L'option de configuration
mark_client_packet
a remplacéclientside_mark
. -
L'option de configuration
shared_transient_entries_limit
a remplacécollapsed_forwarding_shared_entries_limit
.
Squid 5
est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM.
Pour plus d'informations, voir Configuration du serveur proxy de mise en cache Squid.
MariaDB 10.5
dans RHEL 9
RHEL 9 fournit MariaDB 10.5
. MariaDB 10.5
est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de MariaDB
seront fournies sous forme de modules ayant un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
Pour plus d'informations, voir Utilisation de MariaDB.
RHEL 9 comprend MySQL 8.0
RHEL 9 est distribué avec MySQL 8.0
. MySQL 8.0
est la version initiale de ce flux d'applications, que vous pouvez installer facilement en tant que paquetage RPM. MySQL 8.0
a un cycle de vie plus court que RHEL 9. Pour plus de détails, consultez le document Red Hat Enterprise Linux Application Streams Life Cycle (cycle de vie des flux d'applications ).
Pour plus d'informations sur l'utilisation, voir Utilisation de MySQL.
(JIRA:RHELPLAN-78673)
RHEL 9 fournit PostgreSQL 13
PostgreSQL 13
est disponible avec RHEL 9. PostgreSQL 13
est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de PostgreSQL
seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
Pour plus d'informations, voir Utilisation de PostgreSQL.
(JIRA:RHELPLAN-78675)
Redis 6.2
dans RHEL 9
RHEL 9 est distribué avec Redis 6.2
, qui apporte un certain nombre de corrections de bogues et de sécurité, ainsi que des améliorations par rapport à la version 6.0 disponible dans RHEL 8.
Notamment, les fichiers de configuration du serveur Redis
sont désormais situés dans un répertoire dédié : /etc/redis/redis.conf
et /etc/redis/sentinel.conf
. Dans la version RHEL 8, l'emplacement de ces fichiers était respectivement /etc/redis.conf
et /etc/redis-sentinel.conf
.
Redis 6
est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM.
Nouveau paquet : perl-Module-Signature
RHEL 9 introduit le module Perl perl-Module-Signature
. Avec ce nouveau module, vous pouvez activer la vérification des signatures pour cpan
afin d'atténuer la CVE-2020-16156. Pour plus d'informations, voir Comment atténuer CVE-2020-16154 dans perl-App-cpanminus et CVE-2020-16156 dans perl-CPAN.
(BZ#2039361)