Author: Patrick Allaert (patrickallaert)
Date: 2021-11-25T18:55:41+01:00

Commit: 
https://github.com/php/web-php/commit/70d91087d73012f49b5e66b6d2ca218b4dd3e66c
Raw diff: 
https://github.com/php/web-php/commit/70d91087d73012f49b5e66b6d2ca218b4dd3e66c.diff

Announce 8.1.0

Changed paths:
  A  archive/entries/2021-11-25-1.xml
  A  releases/8_1_0.php
  M  ChangeLog-8.php
  M  archive/archive.xml
  M  include/version.inc


Diff:

diff --git a/ChangeLog-8.php b/ChangeLog-8.php
index ad5feb7ad..2a2955c94 100644
--- a/ChangeLog-8.php
+++ b/ChangeLog-8.php
@@ -3,9 +3,306 @@
 include_once __DIR__ . '/include/prepend.inc';
 include_once __DIR__ . '/include/changelogs.inc';
 
-$MINOR_VERSIONS = ['8.0'];
+$MINOR_VERSIONS = ['8.1', '8.0'];
 changelog_header(8, $MINOR_VERSIONS);
 ?>
+<a id="PHP_8_1"></a>
+
+<section class="version" id="8.1.0"><!-- {{{ 8.1.0 -->
+<h3>Version 8.1.0</h3>
+<b><?php release_date('25-Nov-2021'); ?></b>
+<ul><li>Core:
+<ul>
+  <li>Fixed inclusion order for phpize builds on Windows.</li>
+  <li>Added missing hashtable insertion APIs for arr/obj/ref.</li>
+  <li><?php implemented(77372); ?> (Relative file path is removed from 
uploaded file).</li>
+  <li><?php bugfix(81607); ?> (CE_CACHE allocation with concurrent 
access).</li>
+  <li><?php bugfix(81507); ?> (Fiber does not compile on AIX).</li>
+  <li><?php bugfix(78647); ?> (SEGFAULT in 
zend_do_perform_implementation_check).</li>
+  <li><?php bugfix(81518); ?> (Header injection via default_mimetype / 
default_charset).</li>
+  <li><?php bugfix(75941); ?> (Fix compile failure on Solaris with clang).</li>
+  <li><?php bugfix(81380); ?> (Observer may not be initialized properly).</li>
+  <li><?php bugfix(81514); ?> (Using Enum as key in WeakMap triggers GC + 
SegFault).</li>
+  <li><?php bugfix(81520); ?> (TEST_PHP_CGI_EXECUTABLE badly set in 
run-tests.php).</li>
+  <li><?php bugfix(81377); ?> (unset() of $GLOBALS sub-key yields 
warning).</li>
+  <li><?php bugfix(81342); ?> (New ampersand token parsing depends on new line 
after it).</li>
+  <li><?php bugfix(81280); ?> (Unicode characters in cli.prompt causes 
segfault).</li>
+  <li><?php bugfix(81192); ?> ("Declaration should be compatible with" gives 
incorrect line number with traits).</li>
+  <li><?php bugfix(78919); ?> (CLI server: insufficient cleanup if request 
startup fails).</li>
+  <li><?php bugfix(81303); ?> (match error message improvements).</li>
+  <li><?php bugfix(81238); ?> (Fiber support missing for Solaris Sparc).</li>
+  <li><?php bugfix(81237); ?> (Comparison of fake closures doesn't work).</li>
+  <li><?php bugfix(81202); ?> (powerpc64 build fails on fibers).</li>
+  <li><?php bugfix(80072); ?> (Cyclic unserialize in TMPVAR operand may 
leak).</li>
+  <li><?php bugfix(81163); ?> (__sleep allowed to return non-array).</li>
+  <li><?php bugfix(75474); ?> (function scope static variables are not bound 
to a unique function).</li>
+  <li><?php bugfix(53826); ?> (__callStatic fired in base class through a 
parent call if the method is private).</li>
+</ul></li>
+<li>FPM:
+<ul>
+  <li>Added openmetrics status format.</li>
+  <li>Enable process renaming on macOS.</li>
+  <li>Added pm.max_spawn_rate option to configure max spawn child processes 
rate.</li>
+  <li><?php bugfix(81513); ?> (Future possibility for heap overflow in FPM 
zlog).</li>
+  <li><?php bugfix(81026); ?> (PHP-FPM oob R/W in root process leading to 
privilege escalation) (CVE-2021-21703).</li>
+  <li><?php bugfix(65800); ?> (Events port mechanism).</li>
+</ul></li>
+<li>Reflection:
+<ul>
+  <li>Implement ReflectionFunctionAbstract::getClosureUsedVariables 
(krakjoe)</li>
+  <li><?php bugfix(81611); ?> (ArgumentCountError when getting default value 
from ReflectionParameter with new).</li>
+  <li><?php bugfix(81630); ?> (PHP 8.1: ReflectionClass-&gt;getTraitAliases() 
crashes with Internal error).</li>
+  <li><?php bugfix(81457); ?> (Enum: ReflectionMethod-&gt;getDeclaringClass() 
return a ReflectionClass).</li>
+  <li><?php bugfix(81474); ?> (Make ReflectionEnum and related class 
non-final).</li>
+  <li><?php bugfix(80821); ?> (ReflectionProperty::getDefaultValue() returns 
current value for statics).</li>
+  <li><?php bugfix(80564); ?> (ReflectionProperty::__toString() renders 
current value, not default value).</li>
+  <li><?php bugfix(80097); ?> (ReflectionAttribute is not a Reflector).</li>
+  <li><?php bugfix(81200); ?> (no way to determine if Closure is static).</li>
+</ul></li>
+<li>XML:
+<ul>
+  <li><?php bugfix(79971); ?> (special character is breaking the path in xml 
function). (CVE-2021-21707)</li>
+  <li><?php bugfix(70962); ?> (XML_OPTION_SKIP_WHITE strips embedded 
whitespace).</li>
+</ul></li>
+<li>Date:
+<ul>
+  <li>Speed up finding timezone offset information.</li>
+  <li><?php bugfix(81458); ?> (Regression Incorrect difference after timezone 
change).</li>
+  <li><?php bugfix(81500); ?> (Interval serialization regression since 7.3.14 
/ 7.4.2).</li>
+  <li><?php bugfix(81504); ?> (Incorrect timezone transition details for POSIX 
data).</li>
+  <li><?php bugfix(80998); ?> (Missing second with inverted interval).</li>
+  <li><?php bugfix(79580); ?> (date_create_from_format misses leap year).</li>
+  <li><?php bugfix(80963); ?> (DateTimeZone::getTransitions() truncated).</li>
+  <li><?php bugfix(80974); ?> (Wrong diff between 2 dates in different 
timezones).</li>
+  <li><?php bugfix(80998); ?> (Missing second with inverted interval).</li>
+  <li><?php bugfix(81097); ?> (DateTimeZone silently falls back to UTC when 
providing an offset with seconds).</li>
+  <li><?php bugfix(81106); ?> (Regression in 8.1: add() now truncate 
-&gt;f).</li>
+  <li><?php bugfix(81273); ?> (Date interval calculation not correct).</li>
+  <li><?php bugfix(52480); ?> (Incorrect difference using DateInterval)</li>
+  <li><?php bugfix(62326); ?> (date_diff() function returns false result).</li>
+  <li><?php bugfix(64992); ?> (dst not handled past 2038).</li>
+  <li><?php bugfix(65003); ?> (Wrong date diff).</li>
+  <li><?php bugfix(66545); ?> (DateTime. diff returns negative values).</li>
+  <li><?php bugfix(68503); ?> (date_diff on two dates with timezone set 
localised returns wrong results).</li>
+  <li><?php bugfix(69806); ?> (Incorrect date from timestamp).</li>
+  <li><?php bugfix(71700); ?> (Extra day on diff between begin and end of 
march 2016).</li>
+  <li><?php bugfix(71826); ?> (DateTime::diff confuse on timezone 
'Asia/Tokyo').</li>
+  <li><?php bugfix(73460); ?> (Datetime add not realising it already applied 
DST change).</li>
+  <li><?php bugfix(74173); ?> (DateTimeImmutable::getTimestamp() triggers DST 
switch in incorrect time).</li>
+  <li><?php bugfix(74274); ?> (Handling DST transitions correctly).</li>
+  <li><?php bugfix(74524); ?> (Date diff is bad calculated, in same time 
zone).</li>
+  <li><?php bugfix(75167); ?> (DateTime::add does only care about backward DST 
transition, not forward).</li>
+  <li><?php bugfix(76032); ?> (DateTime-&gt;diff having issues with leap days 
for timezones ahead of UTC).</li>
+  <li><?php bugfix(76374); ?> (Date difference varies according day time).</li>
+  <li><?php bugfix(77571); ?> (DateTime's diff DateInterval incorrect in 
timezones from UTC+01:00 to UTC+12:00.</li>
+  <li><?php bugfix(78452); ?> (diff makes wrong in hour for Asia/Tehran).</li>
+  <li><?php bugfix(79452); ?> (DateTime::diff() generates months differently 
between time zones).</li>
+  <li><?php bugfix(79698); ?> (timelib mishandles future timestamps (triggered 
by 'zic -b slim')).</li>
+  <li><?php bugfix(79716); ?> (Invalid date time created (with day "00")).</li>
+  <li><?php bugfix(80610); ?> (DateTime calculate wrong with 
DateInterval).</li>
+  <li><?php bugfix(80664); ?> (DateTime objects behave incorrectly around DST 
transition).</li>
+  <li><?php bugfix(80913); ?> (DateTime(Immutable)::sub around DST yield 
incorrect time).</li>
+</ul></li>
+<li>GD:
+<ul>
+  <li>Convert resource&lt;gd font&gt; to object \GdFont.</li>
+  <li><?php bugfix(71316); ?> (libpng warning from imagecreatefromstring).</li>
+</ul></li>
+<li>Standard:
+<ul>
+  <li><?php bugfix(81076); ?> (incorrect debug info on Closures with implicit 
binds).</li>
+  <li><?php bugfix(81441); ?> (gethostbyaddr('::1') returns ip instead of name 
after calling some other method).</li>
+  <li><?php bugfix(81491); ?> (Incorrectly using libsodium for argon2 
hashing).</li>
+  <li><?php bugfix(66588); ?> (SplFileObject::fgetcsv incorrectly returns a 
row on premature EOF).</li>
+  <li><?php bugfix(81142); ?> (PHP 7.3+ memory leak when unserialize() is used 
on an associative array).</li>
+  <li><?php bugfix(81111); ?> (Serialization is unexpectedly allowed on 
anonymous classes with __serialize()).</li>
+  <li><?php bugfix(81137); ?> (hrtime breaks build on OSX before Sierra).</li>
+</ul></li>
+<li>DBA:
+<ul>
+  <li><?php bugfix(81588); ?> (TokyoCabinet driver leaks memory).</li>
+</ul></li>
+<li>JSON:
+<ul>
+  <li><?php bugfix(81532); ?> (Change of $depth behaviour in json_encode() on 
PHP 8.1).</li>
+</ul></li>
+<li>MBString:
+<ul>
+  <li><?php bugfix(76167); ?> (mbstring may use pointer from some previous 
request).</li>
+  <li><?php bugfix(81390); ?> (mb_detect_encoding() regression).</li>
+</ul></li>
+<li>CLI:
+<ul>
+  <li><?php bugfix(81496); ?> (Server logs incorrect request method).</li>
+</ul></li>
+<li>PCRE:
+<ul>
+  <li><?php bugfix(81424); ?> (PCRE2 10.35 JIT performance regression).</li>
+  <li>Bundled PCRE2 is 10.37.</li>
+</ul></li>
+<li>PgSQL:
+<ul>
+  <li>Convert resource&lt;pgsql link&gt; to object \PgSql\Connection.</li>
+  <li>Convert resource&lt;pgsql result&gt; to object \PgSql\Result.</li>
+  <li>Convert resource&lt;pgsql large object&gt; to object \PgSql\Lob.</li>
+  <li><?php bugfix(81509); ?> (pg_end_copy still expects a resource).</li>
+</ul></li>
+<li>OpenSSL:
+<ul>
+  <li>Bump minimal OpenSSL version to 1.0.2.</li>
+  <li><?php bugfix(81502); ?> ($tag argument of openssl_decrypt() should 
accept null/empty string).</li>
+</ul></li>
+<li>Streams:
+<ul>
+  <li><?php bugfix(81475); ?> (stream_isatty emits warning with attached 
stream wrapper).</li>
+</ul></li>
+<li>Zip:
+<ul>
+  <li><?php bugfix(81490); ?> (ZipArchive::extractTo() may leak memory).</li>
+  <li><?php bugfix(77978); ?> (Dirname ending in colon unzips to wrong 
dir).</li>
+  <li><?php bugfix(81420); ?> (ZipArchive::extractTo extracts outside of 
destination). (CVE-2021-21706)</li>
+  <li><?php bugfix(80833); ?> (ZipArchive::getStream doesn't use 
setPassword).</li>
+</ul></li>
+<li>Filter:
+<ul>
+  <li><?php bugfix(61700); ?> (FILTER_FLAG_IPV6/FILTER_FLAG_NO_PRIV|RES_RANGE 
failing).</li>
+</ul></li>
+<li>SPL:
+<ul>
+  <li><?php bugfix(80663); ?> (Recursive SplFixedArray::setSize() may cause 
double-free).</li>
+  <li><?php bugfix(81477); ?> (LimitIterator + SplFileObject regression in 
8.0.1).</li>
+  <li><?php bugfix(81112); ?> (Special json_encode behavior for 
SplFixedArray).</li>
+  <li><?php bugfix(80945); ?> ("Notice: Undefined index" on unset() 
ArrayObject non-existing key).</li>
+  <li><?php bugfix(80724); ?> (FilesystemIterator::FOLLOW_SYMLINKS remove 
KEY_AS_FILE from bitmask).</li>
+</ul></li>
+<li>DOM:
+<ul>
+  <li><?php bugfix(81433); ?> (DOMElement::setIdAttribute() called twice may 
remove ID).</li>
+</ul></li>
+<li>FFI:
+<ul>
+  <li><?php bugfix(79576); ?> ("TYPE *" shows unhelpful message when type is 
not defined).</li>
+</ul></li>
+<li>Shmop:
+<ul>
+  <li><?php bugfix(81407); ?> (shmop_open won't attach and causes php to 
crash).</li>
+</ul></li>
+<li>Opcache:
+<ul>
+  <li><?php bugfix(81409); ?> (Incorrect JIT code for ADD with a reference to 
array).</li>
+  <li><?php bugfix(81255); ?> (Memory leak in PHPUnit with functional JIT)</li>
+  <li><?php bugfix(80959); ?> (infinite loop in building cfg during JIT 
compilation).</li>
+  <li><?php bugfix(81225); ?> (Wrong result with pow operator with JIT 
enabled).</li>
+  <li><?php bugfix(81249); ?> (Intermittent property assignment failure with 
JIT enabled).</li>
+  <li><?php bugfix(81256); ?> (Assertion `zv != ((void *)0)' failed for 
"preload" with JIT).</li>
+  <li><?php bugfix(81133); ?> (building opcache with phpize fails).</li>
+  <li><?php bugfix(81136); ?> (opcache header not installed).</li>
+</ul></li>
+<li>COM:
+<ul>
+  <li>Dispatch using LANG_NEUTRAL instead of LOCALE_SYSTEM_DEFAULT.</li>
+</ul></li>
+<li>Mbstring:
+<ul>
+  <li><?php bugfix(81349); ?> (mb_detect_encoding misdetcts ASCII in some 
cases).</li>
+  <li><?php bugfix(81298); ?> (mb_detect_encoding() segfaults when 7bit 
encoding is specified).</li>
+</ul></li>
+<li>Phar:
+<ul>
+  <li>Use SHA256 by default for signature.</li>
+  <li>Add support for OpenSSL_SHA256 and OpenSSL_SHA512 signature.</li>
+</ul></li>
+<li>SNMP:
+<ul>
+  <li>Implement SHA256 and SHA512 for security protocol.</li>
+</ul></li>
+<li>MySQLnd:
+<ul>
+  <li><?php bugfix(63327); ?> (Crash (Bus Error) in mysqlnd due to wrong 
alignment).</li>
+</ul></li>
+<li>SimpleXML:
+<ul>
+  <li><?php bugfix(81325); ?> (Segfault in zif_simplexml_import_dom).</li>
+</ul></li>
+<li>Curl:
+<ul>
+  <li><?php bugfix(81085); ?> (Support CURLOPT_SSLCERT_BLOB for cert 
strings).</li>
+</ul></li>
+<li>phpdbg:
+<ul>
+  <li><?php bugfix(81135); ?> (unknown help topic causes assertion 
failure).</li>
+</ul></li>
+<li>FTP:
+<ul>
+  <li>Convert resource&lt;ftp&gt; to object \FTP\Connection.</li>
+</ul></li>
+<li>hash:
+<ul>
+  <li><?php implemented(68109); ?> (Add MurmurHash V3).</li>
+  <li><?php implemented(73385); ?> (Add xxHash support).</li>
+</ul></li>
+<li>LDAP:
+<ul>
+  <li>Convert resource&lt;ldap link&gt; to object \LDAP\Connection.</li>
+  <li>Convert resource&lt;ldap result&gt; to object \LDAP\Result.</li>
+  <li>Convert resource&lt;ldap result entry&gt; to object 
\LDAP\ResultEntry.</li>
+</ul></li>
+<li>MySQLi:
+<ul>
+  <li><?php bugfix(70372); ?> (Emulate mysqli_fetch_all() for 
libmysqlclient).</li>
+  <li><?php bugfix(80330); ?> (Replace language in APIs and source 
code/docs).</li>
+  <li><?php bugfix(80329); ?> (Add option to specify LOAD DATA LOCAL white 
list folder (including libmysql)).</li>
+</ul></li>
+<li>OPcache:
+<ul>
+  <li>Added inheritance cache.</li>
+</ul></li>
+<li>PDO:
+<ul>
+  <li><?php bugfix(80908); ?> (PDO::lastInsertId() return wrong).</li>
+</ul></li>
+<li>PDO MySQL:
+<ul>
+  <li><?php bugfix(40913); ?> (PDO_MYSQL: PDO::PARAM_LOB does not bind to a 
stream for fetching a BLOB).</li>
+  <li><?php bugfix(77627); ?> (method_exists on Closure::__invoke 
inconsistency).</li>
+  <li><?php bugfix(80761); ?> (PDO uses too much memory).</li>
+</ul></li>
+<li>PDO PgSQL:
+<ul>
+  <li><?php bugfix(81343); ?> (pdo_pgsql: Inconsitent boolean conversion after 
calling closeCursor()).</li>
+</ul></li>
+<li>PDO OCI:
+<ul>
+  <li><?php bugfix(77120); ?> (Support 'success with info' at connection).</li>
+</ul></li>
+<li>PDO ODBC:
+<ul>
+  <li><?php bugfix(81037); ?> (PDO discards error message text from prepared 
statement).</li>
+</ul></li>
+<li>PDO SQLite:
+<ul>
+  <li>Implement PDO_ATTR_SERVER_VERSION and PDO_ATTR_SERVER_INFO for 
PDO::getAttribute().</li>
+  <li><?php bugfix(38334); ?> (Proper data-type support for PDO_SQLITE).</li>
+</ul></li>
+<li>PSpell:
+<ul>
+  <li>Convert resource&lt;pspell&gt; to object \PSpell\Dictionary.</li>
+  <li>Convert resource&lt;pspell config&gt; to object \PSpell\Config.</li>
+</ul></li>
+<li>readline:
+<ul>
+  <li><?php bugfix(72998); ?> (invalid read in readline completion).</li>
+</ul></li>
+<li>Sodium:
+<ul>
+  <li>Added the XChaCha20 stream cipher functions.</li>
+  <li>Added the Ristretto255 functions, which are available in libsodium 
1.0.18.</li>
+</ul></li>
+</ul>
+<!-- }}} --></section>
+
+
+
 <a id="PHP_8_0"></a>
 
 <section class="version" id="8.0.13"><!-- {{{ 8.0.13 -->
diff --git a/archive/archive.xml b/archive/archive.xml
index 66a56e4fa..ef9783796 100644
--- a/archive/archive.xml
+++ b/archive/archive.xml
@@ -9,6 +9,7 @@
     <uri>http://php.net/contact</uri>
     <email>php-webmaster@lists.php.net</email>
   </author>
+  <xi:include href="entries/2021-11-25-1.xml"/>
   <xi:include href="entries/2021-11-22-1.xml"/>
   <xi:include href="entries/2021-11-19-1.xml"/>
   <xi:include href="entries/2021-11-18-2.xml"/>
diff --git a/archive/entries/2021-11-25-1.xml b/archive/entries/2021-11-25-1.xml
new file mode 100644
index 000000000..bf17e79ea
--- /dev/null
+++ b/archive/entries/2021-11-25-1.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<entry xmlns="http://www.w3.org/2005/Atom";>
+  <title>PHP 8.1.0 Released!</title>
+  <id>https://www.php.net/archive/2021.php#2021-11-25-1</id>
+  <published>2021-11-25T17:43:08+01:00</published>
+  <updated>2021-11-25T17:43:08+01:00</updated>
+  <link href="https://www.php.net/index.php#id2021-11-25-1"; rel="alternate" 
type="text/html"/>
+  <link href="https://www.php.net/archive/2021.php#2021-11-25-1"; rel="via" 
type="text/html"/>
+  <category term="releases" label="New PHP release"/>
+  <category term="frontpage" label="PHP.net frontpage news"/>
+  <content type="xhtml">
+    <div xmlns="http://www.w3.org/1999/xhtml";>
+<p>The PHP development team announces the immediate availability of PHP 8.1.0. 
This release marks the latest major release of the PHP language.</p>
+
+<p>PHP 8.1 comes with numerous improvements and new features such as:</p>
+
+<p>Take a look at the <a href="https://www.php.net/releases/8.1/";>PHP 8.1 
Announcement Addendum</a> for more information.</p>
+<ul>
+  <li><a 
href="https://www.php.net/manual/en/language.enumerations.php";>Enumerations</a></li>
+  <li><a href="https://wiki.php.net/rfc/readonly_properties_v2";>Readonly 
properties</a></li>
+  <li><a href="https://wiki.php.net/rfc/fibers";>Fibers</a></li>
+  <li><a href="https://wiki.php.net/rfc/pure-intersection-types";>Pure 
Intersection Types</a></li>
+  <li><a 
href="https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.core.never-type";>never</a>
 return type</li>
+  <li><a 
href="https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.core.callable-syntax";>First-class
 Callable Syntax</a></li>
+  <li>"final" modifier for class constants</li>
+  <li>New <a href="https://www.php.net/manual/en/function.fsync.php";>fsync</a> 
and <a 
href="https://www.php.net/manual/en/function.fdatasync.php";>fdatasync</a> 
functions</li>
+  <li>New <a 
href="https://www.php.net/manual/en/function.array-is-list.php";>array_is_list</a>
 function</li>
+  <li>Explicit <a 
href="https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.core.octal-literal-prefix";>Octal
 numeral notation</a></li>
+  <li>And much much more...</li>
+</ul>
+
+<p>For source downloads of PHP 8.1.0 please visit our <a 
href="https://www.php.net/downloads.php";>downloads page</a>,
+Windows source and binaries can be found on <a 
href="https://windows.php.net/download/";>windows.php.net/download/</a>.
+The list of changes is recorded in the <a 
href="https://www.php.net/ChangeLog-8.php#8.1.0";>ChangeLog</a>.
+</p>
+
+<p>The <a href="http://php.net/manual/en/migration81.php";>migration guide</a> 
is available in the PHP Manual.
+Please consult it for the detailed list of new features and backward 
incompatible changes.</p>
+
+<p>Many thanks to all the contributors and supporters!</p>
+    </div>
+  </content>
+</entry>
diff --git a/include/version.inc b/include/version.inc
index c94568ecf..4d72d0a1d 100644
--- a/include/version.inc
+++ b/include/version.inc
@@ -18,6 +18,18 @@
 $RELEASES = (function() {
     $data = [];
 
+    /* PHP 8.1 Release */
+    $data['8.1'] = [
+        'version' => '8.1.0',
+        'date'    => '25 Nov 2021',
+        'tags'    => [], // Set to ['security'] for security releases.
+        'sha256' => [
+            'tar.gz'  => 
'848705043ea4a6e022246ae12a1bff6afcf5c73ea98c6ac4d2108d6028c5c125',
+            'tar.bz2' => 
'0725ed2baea125496a898455d501a77460218b2a0cfad773fa9322f491b82b61',
+            'tar.xz'  => 
'a1317eff0723a2b3d3122bbfe107a1158570ea2822dc35a5fb360086db0f6bbc',
+        ]
+    ];
+
     /* PHP 8.0 Release */
     $data['8.0'] = [
         'version' => '8.0.13',
diff --git a/releases/8_1_0.php b/releases/8_1_0.php
new file mode 100644
index 000000000..9813c56c8
--- /dev/null
+++ b/releases/8_1_0.php
@@ -0,0 +1,35 @@
+<?php
+$_SERVER['BASE_PAGE'] = 'releases/8_1_0.php';
+include_once __DIR__ . '/../include/prepend.inc';
+site_header('PHP 8.1.0 Release Announcement');
+?>
+<h1>PHP 8.1.0 Release Announcement</h1>
+
+<p>The PHP development team announces the immediate availability of PHP 8.1.0. 
This release marks the latest major release of the PHP language.</p>
+
+<p>PHP 8.1 comes with numerous improvements and new features such as:</p>
+<ul>
+  <li><a 
href="https://www.php.net/manual/en/language.enumerations.php";>Enumerations</a></li>
+  <li><a href="https://wiki.php.net/rfc/readonly_properties_v2";>Readonly 
properties</a></li>
+  <li><a href="https://wiki.php.net/rfc/fibers";>Fibers</a></li>
+  <li><a href="https://wiki.php.net/rfc/pure-intersection-types";>Pure 
Intersection Types</a></li>
+  <li><a 
href="https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.core.never-type";>never</a>
 return type</li>
+  <li><a 
href="https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.core.callable-syntax";>First-class
 Callable Syntax</a></li>
+  <li>"final" modifier for class constants</li>
+  <li>New <a href="https://www.php.net/manual/en/function.fsync.php";>fsync</a> 
and <a 
href="https://www.php.net/manual/en/function.fdatasync.php";>fdatasync</a> 
functions</li>
+  <li>New <a 
href="https://www.php.net/manual/en/function.array-is-list.php";>array_is_list</a>
 function</li>
+  <li>Explicit <a 
href="https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.core.octal-literal-prefix";>Octal
 numeral notation</a></li>
+  <li>And much much more...</li>
+</ul>
+
+<p>For source downloads of PHP 8.1.0 please visit our <a 
href="https://www.php.net/downloads.php";>downloads page</a>,
+Windows source and binaries can be found on <a 
href="https://windows.php.net/download/";>windows.php.net/download/</a>.
+The list of changes is recorded in the <a 
href="https://www.php.net/ChangeLog-8.php#8.1.0";>ChangeLog</a>.
+</p>
+
+<p>The <a href="http://php.net/manual/en/migration81.php";>migration guide</a> 
is available in the PHP Manual.
+Please consult it for the detailed list of new features and backward 
incompatible changes.</p>
+
+<p>Many thanks to all the contributors and supporters!</p>
+
+<?php site_footer();

-- 
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to