Skip to content

Commit

Permalink
Basis for the PHP 8.4 migration guide (#3822)
Browse files Browse the repository at this point in the history
This creates the basis for the PHP 8.4 migration guide.
This will not go live on php.net until a change to the `manual.xml.in` file is done in the doc-base repo.
As such, there are still some TODOs that need to be fixed in follow-up PRs.

Co-authored-by: Niels Dossche <[email protected]>
Co-authored-by: Larry Garfield <[email protected]>
Co-authored-by: Christoph M. Becker <[email protected]>
  • Loading branch information
4 people authored Oct 16, 2024
1 parent 6b53a02 commit d64e811
Show file tree
Hide file tree
Showing 10 changed files with 3,601 additions and 0 deletions.
55 changes: 55 additions & 0 deletions appendices/migration84.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<appendix xml:id="migration84" xmlns="http://docbook.org/ns/docbook">
<title>Migrating from PHP 8.3.x to PHP 8.4.x</title>

<para>
This new minor version brings with it a number of
<link linkend="migration84.new-features">new features</link> and a
<link linkend="migration84.incompatible">few incompatibilities</link>
that should be tested for before switching PHP versions in production
environments.
</para>

<para>
&manual.migration.seealso;
<link linkend="migration71">7.1.x</link>,
<link linkend="migration72">7.2.x</link>,
<link linkend="migration73">7.3.x</link>,
<link linkend="migration74">7.4.x</link>,
<link linkend="migration80">8.0.x</link>,
<link linkend="migration81">8.1.x</link>,
<link linkend="migration82">8.2.x</link>,
<link linkend="migration83">8.3.x</link>.
</para>

&appendices.migration84.new-features;
&appendices.migration84.new-classes;
&appendices.migration84.new-functions;
&appendices.migration84.constants;
&appendices.migration84.incompatible;
&appendices.migration84.deprecated;
&appendices.migration84.removed-extensions;
&appendices.migration84.other-changes;
&appendices.migration84.windows-support;

</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
322 changes: 322 additions & 0 deletions appendices/migration84/constants.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,322 @@
<?xml version="1.0" encoding="utf-8"?>
<sect1 xml:id="migration84.constants">
<title>New Global Constants</title>

<sect2 xml:id="migration84.constants.core">
<title>Core</title>

<simplelist>
<member>
<constant>PHP_OUTPUT_HANDLER_PROCESSED</constant>
</member>
<member>
<constant>PHP_SBINDIR</constant>
</member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.curl">
<title>cURL</title>

<simplelist>
<member>
<constant>CURL_HTTP_VERSION_3</constant>
</member>
<member>
<constant>CURL_HTTP_VERSION_3ONLY</constant>
</member>
<member>
<constant>CURL_TCP_KEEPCNT</constant>
</member>
<member>
<constant>CURLOPT_PREREQFUNCTION</constant>
</member>
<member>
<constant>CURL_PREREQFUNC_OK</constant>
</member>
<member>
<constant>CURL_PREREQFUNC_ABORT</constant>
</member>
<member>
<constant>CURLOPT_SERVER_RESPONSE_TIMEOUT</constant>
</member>
<member>
<constant>CURLOPT_DEBUGFUNCTION</constant>
</member>
<member>
<constant>CURLINFO_TEXT</constant>
</member>
<member>
<constant>CURLINFO_HEADER_IN</constant>
</member>
<member>
<constant>CURLINFO_DATA_IN</constant>
</member>
<member>
<constant>CURLINFO_DATA_OUT</constant>
</member>
<member>
<constant>CURLINFO_SSL_DATA_OUT</constant>
</member>
<member>
<constant>CURLINFO_SSL_DATA_IN</constant>
</member>
<member>
<constant>CURLINFO_POSTTRANSFER_TIME_T</constant>
</member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.intl">
<title>Intl</title>

<simplelist>
<member>
<constant>PATTERN</constant>
(<classname>IntlDateFormatter</classname>)
</member>
<member>
<constant>PROPERTY_IDS_UNARY_OPERATOR</constant>
(<classname>IntlChar</classname>)
</member>
<member>
<constant>PROPERTY_ID_COMPAT_MATH_START</constant>
<!-- for mathematical identifier profiling purpose -->
</member>
<member>
<constant>PROPERTY_ID_COMPAT_MATH_CONTINUE</constant>
<!-- for mathematical identifier profiling purpose -->
</member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.ldap">
<title>LDAP</title>

<simplelist>
<member>
<constant>LDAP_OPT_X_TLS_PROTOCOL_MAX</constant>
</member>
<member>
<constant>LDAP_OPT_X_TLS_PROTOCOL_TLS1_3</constant>
</member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.libxml">
<title>libxml</title>

<simplelist>
<member>
<constant>LIBXML_RECOVER</constant>
</member>
<member>
<constant>LIBXML_NO_XXE</constant>.
This is used together with <constant>LIBXML_NOENT</constant>
when entity substitution should be performed,
while disallowing external entity loading.
This constant is available as of libxml2 2.13.
</member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.mysqli">
<title>MySQLi</title>

<simplelist>
<member>
<constant>MYSQLI_TYPE_VECTOR</constant>
</member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.openssl">
<title>OpenSSL</title>

<simplelist>
<member><constant>X509_PURPOSE_OCSP_HELPER</constant></member>
<member><constant>X509_PURPOSE_TIMESTAMP_SIGN</constant></member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.pcntl">
<title>PCNTL</title>

<simplelist>
<member>
<constant>SIGCKPT</constant> (DragonFlyBSD only)
</member>
<member>
<constant>SIGCKPTEXIT</constant> (DragonFlyBSD only)
</member>
<member>
<constant>WEXITED</constant>
</member>
<member>
<constant>WSTOPPED</constant>
</member>
<member>
<constant>WNOWAIT</constant>
</member>
<member>
<constant>P_ALL</constant>
</member>
<member>
<constant>P_PID</constant>
</member>
<member>
<constant>P_PGID</constant>
</member>
<member>
<constant>P_PIDFD</constant> (Linux only)
</member>
<member>
<constant>P_UID</constant> (NetBSD/FreeBSD only)
</member>
<member>
<constant>P_GID</constant> (NetBSD/FreeBSD only)
</member>
<member>
<constant>P_SID</constant> (NetBSD/FreeBSD only)
</member>
<member>
<constant>P_JAILID</constant> (FreeBSD only)
</member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.pgsql">
<title>PGSQL</title>

<simplelist>
<member><constant>PGSQL_TUPLES_CHUNK</constant></member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.posix">
<title>POSIX</title>

<simplelist>
<member><constant>POSIX_SC_CHILD_MAX</constant></member>
<member><constant>POSIX_SC_CLK_TCK</constant></member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.sockets">
<title>Sockets</title>

<simpara>
The following socket options are now defined if they are supported:
</simpara>

<simplelist>
<member>
<constant>SO_EXCLUSIVEADDRUSE</constant> (Windows only)
</member>
<member>
<constant>SOCK_CONN_DGRAM</constant> (NetBSD only)
</member>
<member>
<constant>SOCK_DCCP</constant> (NetBSD only)
</member>
<member>
<constant>TCP_SYNCNT</constant> (Linux only)
</member>
<member>
<constant>SO_EXCLBIND</constant> (Solaris/Illumos only)
</member>
<member>
<constant>SO_NOSIGPIPE</constant> (macOS and FreeBSD)
</member>
<member>
<constant>SO_LINGER_SEC</constant> (macOS only)
</member>
<member>
<constant>IP_PORTRANGE</constant> (FreeBSD/NetBSD/OpenBSD only)
</member>
<member>
<constant>IP_PORTRANGE_DEFAULT</constant> (FreeBSD/NetBSD/OpenBSD only)
</member>
<member>
<constant>IP_PORTRANGE_HIGH</constant> (FreeBSD/NetBSD/OpenBSD only)
</member>
<member>
<constant>IP_PORTRANGE_LOW</constant> (FreeBSD/NetBSD/OpenBSD only)
</member>
<member>
<constant>SOCK_NONBLOCK</constant>
</member>
<member>
<constant>SOCK_CLOEXEC</constant>
</member>
<member>
<constant>SO_BINDTOIFINDEX</constant>
</member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.sodium">
<title>Sodium</title>

<simplelist>
<member>
<constant>SODIUM_CRYPTO_AEAD_AEGIS128L_KEYBYTES</constant>
</member>
<member>
<constant>SODIUM_CRYPTO_AEAD_AEGIS128L_NSECBYTES</constant>
</member>
<member>
<constant>SODIUM_CRYPTO_AEAD_AEGIS128L_NPUBBYTES</constant>
</member>
<member>
<constant>SODIUM_CRYPTO_AEAD_AEGIS128L_ABYTES</constant>
</member>
<member>
<constant>SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES</constant>
</member>
<member>
<constant>SODIUM_CRYPTO_AEAD_AEGIS256_NSECBYTES</constant>
</member>
<member>
<constant>SODIUM_CRYPTO_AEAD_AEGIS256_NPUBBYTES</constant>
</member>
<member>
<constant>SODIUM_CRYPTO_AEAD_AEGIS256_ABYTES</constant>
</member>
</simplelist>
</sect2>

<sect2 xml:id="migration84.constants.xml">
<title>XML</title>

<simplelist>
<member>
<constant>XML_OPTION_PARSE_HUGE</constant>
which allows parsing large inputs with
<function>xml_parse</function> and
<function>xml_parse_into_struct</function>.
</member>
</simplelist>
</sect2>

</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
Loading

0 comments on commit d64e811

Please sign in to comment.