<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration84.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'migration84.other-changes.php',
    1 => 'Autres changements',
    2 => 'Autres changements',
  ),
  'up' => 
  array (
    0 => 'migration84.php',
    1 => 'Migration de PHP 8.3.x vers PHP 8.4.x',
  ),
  'prev' => 
  array (
    0 => 'migration84.removed-extensions.php',
    1 => 'Extensions supprim&eacute;es',
  ),
  'next' => 
  array (
    0 => 'migration84.windows-support.php',
    1 => 'Support Windows',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'appendices/migration84/other-changes.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration84.other-changes" class="sect1">
 <h2 class="title">Autres changements</h2>

 <div class="sect2" id="migration84.other-changes.core">
  <h3 class="title">Changement du noyau</h3>

  <div class="sect3" id="migration84.other-changes.core.closures">
   <h4 class="title">Closures</h4>

   <p class="simpara">
    Les noms de fermeture ont été ajustés pour inclure le nom de la fonction parente
    et la ligne de définition pour les rendre plus faciles à distinguer, par exemple
    dans les traces de pile.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.core.fibers">
   <h4 class="title">Fibres</h4>

   <p class="simpara">
    Les commutations de fibres pendant l&#039;exécution du destructeur sont désormais autorisées. Cela était précédemment
    bloqué en raison de conflits avec la collecte des déchets.
   </p>

   <p class="simpara">
    Les destructeurs peuvent désormais être exécutés dans une fibre séparée :
   </p>

   <p class="simpara">
    Lorsque le ramasse-miettes est déclenché dans une fibre,
    les destructeurs appelés par le ramasse-miettes sont exécutés dans une fibre séparée :
    la gc_destructor_fiber.
    Si cette fibre est suspendue, une nouvelle est créée pour exécuter les destructeurs
    restants.
    Le gc_destructor_fiber précédent n&#039;est plus référencé par le ramasse-miettes
    et peut être collecté s&#039;il n&#039;est plus référencé ailleurs.
    Les objets dont le destructeur est suspendu ne seront pas collectés tant que le
    destructeur ne retourne pas ou que la <span class="classname"><a href="class.fiber.php" class="classname">Fiber</a></span> n&#039;est pas collectée.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.core.output">
   <h4 class="title">Gestionnaires de sortie</h4>

   <p class="simpara">
    Les drapeaux d&#039;état des gestionnaires de sortie passés au paramètre <code class="parameter">flags</code>
    de <span class="function"><a href="function.ob-start.php" class="function">ob_start()</a></span> sont maintenant effacés.
   </p>

   <p class="simpara">
    <span class="function"><a href="function.output-add-rewrite-var.php" class="function">output_add_rewrite_var()</a></span> utilise désormais
    <a href="outcontrol.configuration.php#ini.url-rewriter.hosts" class="link"><code class="literal">url_rewriter.hosts</code></a>
    à la place de 
    <a href="session.configuration.php#ini.session.trans-sid-hosts" class="link"><code class="literal">session.trans_sid_hosts</code></a>
    pour la sélection des hôtes qui seront réécrits.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration84.other-changes.sapi">
  <h3 class="title">Changements dans les modules SAPI</h3>

  <div class="sect3" id="migration84.other-changes.sapi.apache">
   <h4 class="title">apache2handler</h4>

   <p class="simpara">
    Le support pour l&#039;EOL Apache 2.0 et 2.2 a été supprimé.
    La version minimale d&#039;Apache requise est désormais 2.4.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.sapi.cli">
   <h4 class="title">CLI</h4>

   <p class="simpara">
    Le serveur intégré recherche un fichier d&#039;index de manière récursive en parcourant les répertoires
    parents si le fichier spécifié ne peut pas être localisé.
    Ce processus était précédemment ignoré si le chemin semblait
    faire référence à un fichier, c&#039;est-à-dire si le dernier composant du chemin contenait un point.
    Dans ce cas, une erreur 404 était renvoyée.
    Le comportement a été modifié pour rechercher un fichier d&#039;index dans tous les cas.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.sapi.fpm">
   <h4 class="title">FPM</h4>

   <p class="simpara">
    La vidange des en-têtes sans corps réussira désormais.
    
   </p>

   <p class="simpara">
    La page d&#039;état dispose d&#039;un nouveau champ pour afficher un pic de mémoire.
   </p>

   <p class="simpara">
    
    La configuration <var class="filename">/dev/poll</var> de <code class="literal">events.mechanism</code>
    pour Solaris/Illumos a été retirée.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration84.other-changes.functions">
  <h3 class="title">Fonctions changées</h3>

  <div class="sect3" id="migration84.other-changes.functions.core">
   <h4 class="title">Core</h4>

   <p class="simpara">
    <span class="function"><a href="function.trigger-error.php" class="function">trigger_error()</a></span> et <span class="function"><a href="function.user-error.php" class="function">user_error()</a></span>
    ont désormais un type de retour de <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span> au lieu de <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.dom">
   <h4 class="title">DOM</h4>

   <p class="simpara">
    <span class="methodname"><a href="domdocument.registernodeclass.php" class="methodname">DOMDocument::registerNodeClass()</a></span>
    a désormais un type de retour de <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span> au lieu de
    <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
    Il ne pouvait retourner que <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en pratique.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.hash">
   <h4 class="title">Hash</h4>

   <p class="simpara">
    <span class="function"><a href="function.hash-update.php" class="function">hash_update()</a></span>
    a désormais un type de retour de <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span> au lieu de
    <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
    Il ne pouvait retourner que <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en pratique.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.intl">
   <h4 class="title">Intl</h4>

   <p class="simpara">
    <strong><code><a href="class.numberformatter.php#numberformatter.constants.round-toward-zero">NumberFormatter::ROUND_TOWARD_ZERO</a></code></strong> et
    <strong><code><a href="class.numberformatter.php#numberformatter.constants.round-away-from-zero">NumberFormatter::ROUND_AWAY_FROM_ZERO</a></code></strong>
    ont été ajoutés en tant qu&#039;alias pour
    <strong><code><a href="class.numberformatter.php#numberformatter.constants.round-down">NumberFormatter::ROUND_DOWN</a></code></strong> et
    <strong><code><a href="class.numberformatter.php#numberformatter.constants.round-up">NumberFormatter::ROUND_UP</a></code></strong>
    pour être cohérent avec les nouveaux modes
    <strong><code><a href="math.constants.php#constant.php-round-half-up">PHP_ROUND_<span class="replaceable">*</span></a></code></strong>.
   </p>

   <p class="simpara">
    <span class="methodname"><a href="resourcebundle.get.php" class="methodname">ResourceBundle::get()</a></span>
    
    a désormais un type de retour provisoire de <code class="literal">ResourceBundle|array|string|int|null</code>.
   </p>

   <p class="simpara">
    Les fonctions <span class="function"><a href="function.idn-to-ascii.php" class="function">idn_to_ascii()</a></span> et <span class="function"><a href="function.idn-to-utf8.php" class="function">idn_to_utf8()</a></span>
    lancent désormais toujours des exceptions <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span>
    si le nom de <code class="parameter">domain</code> est vide ou trop long.
   </p>

   <p class="simpara">
    Les fonctions <span class="function"><a href="function.idn-to-ascii.php" class="function">idn_to_ascii()</a></span> et <span class="function"><a href="function.idn-to-utf8.php" class="function">idn_to_utf8()</a></span>
    lancent désormais toujours des exceptions <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span>
    si le paramètre <code class="parameter">variant</code> n&#039;est pas
    <strong><code><a href="intl.constants.php#constant.intl-idna-variant-uts46">INTL_IDNA_VARIANT_UTS46</a></code></strong>.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.libxml">
   <h4 class="title">LibXML</h4>

   <p class="simpara">
    <span class="function"><a href="function.libxml-set-streams-context.php" class="function">libxml_set_streams_context()</a></span> lance désormais immédiatement une
    <span class="exceptionname"><a href="class.typeerror.php" class="exceptionname">TypeError</a></span> lorsqu&#039;une ressource non contextuelle de flux
    est passée à la fonction,
    au lieu de lancer plus tard lorsque le contexte de flux est utilisé.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.mbstring">
   <h4 class="title">MBString</h4>

   <p class="simpara">
    Le comportement de <span class="function"><a href="function.mb-strcut.php" class="function">mb_strcut()</a></span> est désormais plus cohérent
    sur les chaînes UTF-8 et UTF-16 invalides.
    Il n&#039;y a pas de changement de comportement pour les chaînes UTF-8 et UTF-16 valides.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.odbc">
   <h4 class="title">ODBC</h4>

   <p class="simpara">
    Le <code class="parameter">row</code> de
    <span class="function"><a href="function.odbc-fetch-object.php" class="function">odbc_fetch_object()</a></span>,
    <span class="function"><a href="function.odbc-fetch-array.php" class="function">odbc_fetch_array()</a></span>, de
    <span class="function"><a href="function.odbc-fetch-into.php" class="function">odbc_fetch_into()</a></span> a désormais une valeur par défaut de <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>,
    restant cohérent avec <span class="function"><a href="function.odbc-fetch-row.php" class="function">odbc_fetch_row()</a></span>.
    Auparavant, les valeurs par défaut étaient
    <code class="literal">-1</code>,
    <code class="literal">-1</code>,
    et <code class="literal">0</code>,
    respectivement.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.openssl">
   <h4 class="title">OpenSSL</h4>

   <p class="simpara">
    L&#039;<code class="parameter">extra_attributes</code> dans
    <span class="function"><a href="function.openssl-csr-new.php" class="function">openssl_csr_new()</a></span> définit les attributs du
    <abbr title="Certificate Signing Request">CSR</abbr> au lieu du DN du sujet, ce qui était incorrectement fait précédemment.
   </p>

   <p class="simpara">
    Le <code class="parameter">dn</code> dans
    <span class="function"><a href="function.openssl-csr-new.php" class="function">openssl_csr_new()</a></span> permet de définir un <span class="type"><a href="language.types.array.php" class="type array">array</a></span>
    de valeurs pour une seule entrée.
   </p>

   <p class="simpara">
    Un nouveau <code class="parameter">serial_hex</code> a été ajouté à
    <span class="function"><a href="function.openssl-csr-sign.php" class="function">openssl_csr_sign()</a></span> pour permettre de définir des numéros de série
    au format hexadécimal.
   </p>

   <p class="simpara">
    Analyser un ASN.1 UTCTime avec <span class="function"><a href="function.openssl-x509-parse.php" class="function">openssl_x509_parse()</a></span>
    échoue si les secondes sont omises pour les versions d&#039;OpenSSL inférieures à 3.2
    (<code class="literal">-1</code> est retourné pour de tels champs).
    Les versions d&#039;OpenSSL supérieures à 3.3 ne chargeaient déjà pas de tels certificats.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.pdo">
   <h4 class="title">PDO</h4>

   <p class="simpara">
    Il est désormais possible de récupérer la valeur de l&#039;attribut
    <strong><code><a href="pdo.constants.php#pdo.constants.attr-stringify-fetches">PDO::ATTR_STRINGIFY_FETCHES</a></code></strong> avec   
    <span class="methodname"><a href="pdo.getattribute.php" class="methodname">PDO::getAttribute()</a></span>.
   </p>

   <p class="simpara">
    Une nouvelle constante <strong><code>PDO::PGSQL_ATTR_RESULT_MEMORY_SIZE</code></strong>
    a été ajoutée pour récupérer l&#039;utilisation de la mémoire des résultats de requête avec
    <span class="methodname"><a href="pdo.getattribute.php" class="methodname">PDO::getAttribute()</a></span> pour les pilotes qui le prennent en charge.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.pdo-firebird">
   <h4 class="title">PDO_FIREBIRD</h4>

   <p class="simpara">
    Il est désormais possible de récupérer la valeur des attributs
    
    <strong><code>FB_ATTR_DATE_FORMAT</code></strong>,
    <strong><code>FB_ATTR_TIME_FORMAT</code></strong>,
    <strong><code>FB_ATTR_TIMESTAMP_FORMAT</code></strong>,
    avec
    
    <span class="methodname"><a href="pdo.getattribute.php" class="methodname">PDO::getAttribute()</a></span>.
   </p>

   <p class="para">
    Ajout de nouveaux attributs pour spécifier le niveau d&#039;isolation de transaction et le mode d&#039;accès.
    Cinq constantes liées à cette fonctionnalité ont été ajoutées :

    <ul class="simplelist">
     <li><strong><code><a href="class.pdo-firebird.php#pdo-firebird.constants.transaction-isolation-level">Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL</a></code></strong></li>
     <li><strong><code><a href="class.pdo-firebird.php#pdo-firebird.constants.read-committed">Pdo\Firebird::READ_COMMITTED</a></code></strong></li>
     <li><strong><code><a href="class.pdo-firebird.php#pdo-firebird.constants.repeatable-read">Pdo\Firebird::REPEATABLE_READ</a></code></strong></li>
     <li><strong><code><a href="class.pdo-firebird.php#pdo-firebird.constants.serializable">Pdo\Firebird::SERIALIZABLE</a></code></strong></li>
     <li><strong><code><a href="class.pdo-firebird.php#pdo-firebird.constants.writable-transaction">Pdo\Firebird::WRITABLE_TRANSACTION</a></code></strong></li>
    </ul>
   </p>

   <p class="simpara">
    Lors de l&#039;utilisation de connexions persistantes, il y a maintenant une vérification de vivacité dans
    le constructeur.
   </p>

   <p class="simpara">
    Le contenu qui est construit change en fonction de la valeur de
    <strong><code>FB_API_VER</code></strong> dans
    <var class="filename">ibase.h</var>.
    Une nouvelle méthode statique <span class="methodname"><a href="pdo-firebird.getapiversion.php" class="methodname">Pdo\Firebird::getApiVersion()</a></span>
    peut être utilisée pour obtenir cette information.
    Cette information est également maintenant référencée dans <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>.
   </p>

   <p class="para">
    Cinq nouveaux types de données sont désormais disponibles :
    <span class="simplelist"><code class="literal">INT128</code>, <code class="literal">DEC16</code>, <code class="literal">DEC34</code>, <code class="literal">TIMESTAMP_TZ</code>, <code class="literal">TIME_TZ</code></span>
    .
    Ceux-ci sont disponibles à partir de Firebird 4.0.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.pdo-mysql">
   <h4 class="title">PDO_MYSQL</h4>

   <p class="simpara">
    Il est désormais possible de récupérer la valeur de l&#039;attribut
    <strong><code><a href="pdo.constants.php#pdo.constants.attr-fetch-table-names">PDO::ATTR_FETCH_TABLE_NAMES</a></code></strong> avec
    
    <span class="methodname"><a href="pdo.getattribute.php" class="methodname">PDO::getAttribute()</a></span>.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.pdo-pgsql">
   <h4 class="title">PDO_PGSQL</h4>

   <p class="simpara">
    Support de la récupération de l&#039;utilisation de la mémoire des requêtes pour
    <strong><code>PDO::PGSQL_ATTR_RESULT_MEMORY_SIZE</code></strong>.
   </p>

   <p class="simpara">
    Si la colonne est de type <code class="literal">FLOAT4OID</code> ou
    <code class="literal">FLOAT8OID</code> la valeur sera maintenant retournée en tant que
    <span class="type"><a href="language.types.float.php" class="type float">float</a></span> au lieu d&#039;une <span class="type"><a href="language.types.string.php" class="type string">string</a></span>.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.pgsql">
   <h4 class="title">PGSQL</h4>

   <p class="simpara">
    Le paramètre <code class="parameter">conditions</code> de
    <span class="function"><a href="function.pg-select.php" class="function">pg_select()</a></span> est désormais facultatif et accepte un tableau vide.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.phar">
   <h4 class="title">Phar</h4>

   <p class="para">
    Les méthodes
    <span class="simplelist"><span class="methodname"><a href="phar.setalias.php" class="methodname">Phar::setAlias()</a></span>, <span class="methodname"><a href="phar.setdefaultstub.php" class="methodname">Phar::setDefaultStub()</a></span></span>
    peuvent désormais avoir un type de retour provisoire de <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span>
    au lieu de <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.posix">
   <h4 class="title">POSIX</h4>

   <p class="simpara">
    <span class="function"><a href="function.posix-isatty.php" class="function">posix_isatty()</a></span> définit désormais le numéro d&#039;erreur lorsque
    l&#039;argument de descripteur de fichier/flux est invalide.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.reflection">
   <h4 class="title">Reflection</h4>

   <p class="simpara">
    <span class="methodname"><a href="reflectiongenerator.getfunction.php" class="methodname">ReflectionGenerator::getFunction()</a></span>
    peut maintenant être appelé après que le générateur ait fini d&#039;exécuter.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.sockets">
   <h4 class="title">Sockets</h4>

   <p class="simpara">
    Le paramètre <code class="parameter">backlog</code> de
    <span class="function"><a href="function.socket-create-listen.php" class="function">socket_create_listen()</a></span> a désormais une valeur par défaut de
    <strong><code><a href="sockets.constants.php#constant.somaxconn">SOMAXCONN</a></code></strong>.
    Auparavant, c&#039;était <code class="literal">128</code>.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.sodium">
   <h4 class="title">Sodium</h4>

   <p class="simpara">
    Les fonctions <span class="function">sodium_crypto_aead_aes256gcm_<span class="replaceable">*</span></span>
    sont désormais disponibles sur les processeurs aarch64 avec les extensions
    cryptographiques ARM.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.spl">
   <h4 class="title">SPL</h4>

   <p class="para">
    Les méthodes
    <span class="simplelist"><span class="methodname"><a href="splpriorityqueue.insert.php" class="methodname">SplPriorityQueue::insert()</a></span>, <span class="methodname"><a href="splpriorityqueue.recoverfromcorruption.php" class="methodname">SplPriorityQueue::recoverFromCorruption()</a></span>, <span class="methodname"><a href="splheap.insert.php" class="methodname">SplHeap::insert()</a></span>, <span class="methodname"><a href="splheap.recoverfromcorruption.php" class="methodname">SplHeap::recoverFromCorruption()</a></span></span>
    peuvent désormais avoir un type de retour provisoire de <span class="type"><a href="language.types.singleton.php" class="type true">true</a></span>
    à la place de <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>.
   </p>

   <p class="simpara">
    <span class="classname"><a href="class.splobjectstorage.php" class="classname">SplObjectStorage</a></span> implémente désormais
    <span class="interfacename"><a href="class.seekableiterator.php" class="interfacename">SeekableIterator</a></span>.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.functions.standard">
   <h4 class="title">Standard</h4>

   <p class="simpara">
     La valeur par défaut du <code class="literal">&#039;cost&#039;</code> pour l&#039;algorithme de hachage <strong><code><a href="password.constants.php#constant.password-bcrypt">PASSWORD_BCRYPT</a></code></strong>
     utilisé par la fonction <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span> a été augmentée de
     <code class="literal">10</code> à <code class="literal">12</code>.
     
    </p>

   <p class="simpara">
    <span class="function"><a href="function.debug-zval-dump.php" class="function">debug_zval_dump()</a></span> indique désormais si un tableau est compacté.
   </p>

   <p class="simpara">
    <span class="function"><a href="function.long2ip.php" class="function">long2ip()</a></span> a désormais un type de retour de <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    
    à la place de <code class="literal">string|false</code>.
   </p>

   <p class="simpara">
    
    <span class="function"><a href="function.highlight-string.php" class="function">highlight_string()</a></span> a désormais un type de retour de
    <span class="type">string|true</span> à la place de <code class="literal">string|bool</code>.
   </p>

   <p class="simpara">
    
    <span class="function"><a href="function.print-r.php" class="function">print_r()</a></span> a désormais un type de retour de
    <span class="type">string|true</span> à la place de <code class="literal">string|bool</code>.
   </p>

   
   <div class="sect4">
    <h5 class="title">Arrondir avec <span class="function"><a href="function.round.php" class="function">round()</a></span></h5>

    <p class="simpara">
     Le paramètre <code class="parameter">mode</code> de la fonction <span class="function"><a href="function.round.php" class="function">round()</a></span> a été étendu pour accepter
     
     <code class="literal">RoundingMode|int</code>,
     
     acceptant des instances d&#039;un nouvel énumérateur <span class="classname"><a href="enum.roundingmode.php" class="classname">RoundingMode</a></span>.
     
    </p>

    <p class="para">
    Quatre nouveaux modes ont été ajoutés à la fonction <span class="function"><a href="function.round.php" class="function">round()</a></span> :
    <span class="simplelist">RoundingMode::PositiveInfinity, RoundingMode::NegativeInfinity, RoundingMode::TowardsZero, RoundingMode::AwayFromZero</span>
     
    </p>

    <p class="simpara">
     L&#039;implémentation interne de l&#039;arrondi aux entiers a été réécrite pour être plus facile à vérifier
     pour la correction et plus facile à maintenir.
     Quelques bugs d&#039;arrondi ont été corrigés à la suite de la réécriture.
     Par exemple, auparavant, l&#039;arrondi de <code class="literal">0.49999999999999994</code> à l&#039;entier le plus proche
     aurait donné <code class="literal">1.0</code> au lieu du résultat correct <code class="literal">0.0</code>.
     Des entrées supplémentaires pourraient également être affectées et donner des résultats différents
     par rapport aux versions PHP précédentes.
    </p>

    <p class="simpara">
     Correction d&#039;un bug causé par l&#039;arrondi &quot;pré-arrondi&quot; de la fonction round().
     Auparavant, en utilisant &quot;pré-arrondi&quot; pour traiter une valeur comme <code class="literal">0.285</code>
     (en fait <code class="literal">0.28499999999999998</code>) comme un nombre décimal et l&#039;arrondir à <code class="literal">0.29</code>.
     Cependant, &quot;pré-arrondi&quot; arrondit incorrectement certains nombres,
     donc cette correction supprime &quot;pré-arrondi&quot; et change la façon dont les nombres sont comparés,
     donc les valeurs sont correctement arrondies en tant que nombres décimaux.
    </p>

    <p class="simpara">
     Le nombre maximum de chiffres significatifs que <span class="function"><a href="function.round.php" class="function">round()</a></span> peut gérer a été étendu
     d&#039;un chiffre.
     Par exemple, <code class="code">round(4503599627370495.5)</code> retournait
     <code class="literal">4503599627370495.5</code>,
     mais retourne maintenant <code class="literal">4503599627370496</code>.
    </p>

   </div>
  </div>

 </div>

 <div class="sect2" id="migration84.other-changes.extensions">
  <h3 class="title">Autres changements aux extensions</h3>

  <div class="sect3" id="migration84.other-changes.extensions.curl">
   <h4 class="title">cURL</h4>

   <p class="simpara">
    Le minimum de la version de libcurl requise est désormais 7.61.0.
   </p>

   <p class="simpara">
    L&#039;option <strong><code><a href="curl.constants.php#constant.curlopt-dns-use-global-cache">CURLOPT_DNS_USE_GLOBAL_CACHE</a></code></strong> n&#039;a plus
    aucun effet et est silencieusement ignorée.
    Cette fonctionnalité sous-jacente a été dépréciée dans libcurl 7.11.1,
    et supprimée dans libcurl 7.62.0.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.gmp">
   <h4 class="title">GMP</h4>

   
   <p class="simpara">
    Changer de type d&#039;un objet <span class="classname"><a href="class.gmp.php" class="classname">GMP</a></span> en <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> est désormais
    possible au lieu de générer une <strong><code><a href="errorfunc.constants.php#constant.e-recoverable-error">E_RECOVERABLE_ERROR</a></code></strong>.
    Le comportement de conversion est surchargé de sorte qu&#039;un objet <span class="classname"><a href="class.gmp.php" class="classname">GMP</a></span>
    représentant la valeur <code class="literal">0</code> est converti en <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.libxml">
   <h4 class="title">LibXML</h4>

   <p class="simpara">
    Le minimum de la version de libxml2 requise est désormais 2.9.4.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.intl">
   <h4 class="title">Intl</h4>

   <p class="simpara">
    Le comportement de la classe Intl a été normalisé pour toujours lancer
    des exceptions <span class="exceptionname"><a href="class.error.php" class="exceptionname">Error</a></span> lors de la tentative d&#039;utilisation
    d&#039;un objet non initialisé, ou lorsque le clonage échoue.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.mbstring">
   <h4 class="title">MBString</h4>

   <p class="simpara">
    Les tables de données Unicode ont été mises à jour en Unicode 16.0.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.mysqlnd">
   <h4 class="title">MySQLnd</h4>

   <p class="simpara">
    Le support pour le nouveau type de données VECTOR de MySQL 9 a été ajouté.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.openssl">
   <h4 class="title">OpenSSL</h4>

   <p class="simpara">
    Le minimum de la version d&#039;OpenSSL requise est désormais 1.1.1.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.pdo-pgsql">
   <h4 class="title">PDO_PGSQL</h4>

   <p class="simpara">
    Le minimum de la version de libpq requise est désormais 10.0.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.pgsql">
   <h4 class="title">PGSQL</h4>

   <p class="simpara">
    Le minimum de la version de libpq requise est désormais 10.0.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.spl">
   <h4 class="title">SPL</h4>

   <p class="simpara">
    Les accès hors limites dans <span class="classname"><a href="class.splfixedarray.php" class="classname">SplFixedArray</a></span> lancent désormais
    des exceptions de type <span class="exceptionname"><a href="class.outofboundsexception.php" class="exceptionname">OutOfBoundsException</a></span>
    au lieu de <span class="exceptionname"><a href="class.runtimeexception.php" class="exceptionname">RuntimeException</a></span>.
    Car <span class="exceptionname"><a href="class.outofboundsexception.php" class="exceptionname">OutOfBoundsException</a></span> est une classe enfant de
    <span class="exceptionname"><a href="class.runtimeexception.php" class="exceptionname">RuntimeException</a></span>, aucun changement de comportement
    n&#039;est observé lors de la tentative de capture de ces exceptions.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.xsl">
   <h4 class="title">XSL</h4>

   <p class="simpara">
    Les propriétés typées <span class="property"><a href="class.xsltprocessor.php#xsltprocessor.props.clonedocument">XSLTProcessor::$cloneDocument</a></span>
    et <span class="property"><a href="class.xsltprocessor.php#xsltprocessor.props.doxinclude">XSLTProcessor::$doXInclude</a></span> sont désormais déclarées.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.extensions.zlib">
   <h4 class="title">Zlib</h4>

   <p class="simpara">
    Le minimum de la version de zlib requise est désormais 1.2.11.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration84.other-changes.performance">
  <h3 class="title">Performance</h3>

  <div class="sect3" id="migration84.other-changes.performance.core">
   <h4 class="title">Core</h4>

   <p class="simpara">
    Augmentation de la performance de l&#039;analyse et de la génération de nombres à virgule flottante
    dans les constructions ZTS sous des charges très concurrentes.
    Cela affecte les fonctions <span class="function"><a href="function.printf.php" class="function">printf()</a></span> ainsi
    que les fonctions de sérialisation telles que <span class="function"><a href="function.json-encode.php" class="function">json_encode()</a></span>
    ou <span class="function"><a href="function.serialize.php" class="function">serialize()</a></span>.
   </p>

   <p class="simpara">
    <span class="function"><a href="function.sprintf.php" class="function">sprintf()</a></span> utilisant uniquement <code class="literal">%s</code> et
    l&#039;interpolation de chaîne <code class="literal">%d</code> sera compilé en l&#039;interpolation
    de chaîne équivalente, évitant les frais généraux d&#039;un appel de fonction et
    l&#039;analyse répétée de la chaîne de format.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.bcmath">
   <h4 class="title">BCMath</h4>

   <p class="simpara">
    Augmentation de la performance des conversions de nombres et des opérations.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.dom">
   <h4 class="title">DOM</h4>

   <p class="simpara">
    La performance de <span class="methodname"><a href="domnode.c14n.php" class="methodname">DOMNode::C14N()</a></span> est grandement
    améliorée pour le cas sans requête xpath.
    Cela peut donner une amélioration de temps de facilement deux ordres de
    grandeur pour les documents avec des dizaines de milliers de nœuds.
   </p>

   <p class="simpara">
    Augmentation de la performance et réduction de la consommation de mémoire de la sérialisation XML.
   </p>

   <p class="simpara">
    Réduction de la consommation de mémoire des classes de nœuds.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.ftp">
   <h4 class="title">FTP</h4>

   <p class="simpara">
    Augmentation de la performance des téléversements FTP jusqu&#039;à un facteur de 10x pour les
    téléversements volumineux.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.hash">
   <h4 class="title">Hash</h4>

   <p class="simpara">
    Ajout des implémentations SSE2 et SHA-NI de SHA-256.
    Cela améliore les performances sur les processeurs pris en charge de ~1.3x (SSE2),
    et 3x - 5x (SHA-NI).
    Crédit à Colin Percival / Tarsnap pour cette optimisation.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.mbstring">
   <h4 class="title">MBString</h4>

   <p class="simpara">
    <span class="function"><a href="function.mb-strcut.php" class="function">mb_strcut()</a></span> est désormais beaucoup plus rapide pour les chaînes UTF-8
    et UTF-16.
   </p>

   <p class="simpara">
    La recherche des noms d&#039;encodage mbstring est désormais beaucoup plus rapide.
   </p>

   <p class="simpara">
    La performance de la conversion de SJIS-win en Unicode est grandement améliorée.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.mysqlnd">
   <h4 class="title">MySQLnd</h4>

   <p class="simpara">
    Augmentation de la performance de l&#039;échappement MySQLnd.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.pcre">
   <h4 class="title">PCRE</h4>

   <p class="simpara">
    Augmentation de la performance des groupes de capture nommés.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.random">
   <h4 class="title">Random</h4>

   <p class="simpara">
    Augmentation de la performance de <span class="classname"><a href="class.random-randomizer.php" class="classname">Random\Randomizer</a></span>,
    avec un accent spécifique sur les méthodes
    <span class="methodname"><a href="random-randomizer.getbytes.php" class="methodname">Random\Randomizer::getBytes()</a></span>,
    et <span class="methodname"><strong>Random\Randomizer::getBytesFromString()()</strong></span>.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.simplexml">
   <h4 class="title">SimpleXML</h4>

   <p class="simpara">
    Augmentation de la performance et réduction de la consommation de mémoire de la sérialisation XML.
   </p>
  </div>

  <div class="sect3" id="migration84.other-changes.performance.standard">
   <h4 class="title">Standard</h4>

   <p class="simpara">
    Les performances de <span class="function"><a href="function.strspn.php" class="function">strspn()</a></span> et
    <span class="function"><a href="function.strcspn.php" class="function">strcspn()</a></span> sont grandement améliorées.
    Elles s&#039;exécutent désormais en temps linéaire au lieu d&#039;être bornées par un temps quadratique.
   </p>

   <p class="simpara">
    Augmentation de la performance de <span class="function"><a href="function.strpbrk.php" class="function">strpbrk()</a></span>.
   </p>

   <p class="simpara">
    <span class="function"><a href="function.get-browser.php" class="function">get_browser()</a></span> est désormais beaucoup plus rapide,
    jusqu&#039;à 1.5x - 2.5x pour certains cas de test.
   </p>
  </div>
 </div>

</div><?php manual_footer($setup); ?>