29 Apr 2021, PHP 8.0.5
- Core:
. Fixed bug #75776 (Flushing streams with compression filter is broken). (cmb)
. Fixed bug #80811 (Function exec without $output but with $restult_code
parameter crashes). (Nikita)
. Fixed bug #80814 (threaded mod_php won't load on FreeBSD: No space
available for static Thread Local Storage). (Dmitry)
. Changed PowerPC CPU registers used by Zend VM to work around GCC bug.
Old registers (r28/r29) might be clobbered by _restgpr routine used for
return from C function compiled with -Os. (Dmitry)
- Dba:
. Fixed bug #80817 (dba_popen() may cause segfault during RSHUTDOWN). (cmb)
- DOM:
. Fixed bug #66783 (UAF when appending DOMDocument to element). (cmb)
- FFI:
. Fixed bug #80847 (CData structs with fields of type struct can't be passed
as C function argument). (Nickolas Daniel da Silva, Dmitry)
- FPM:
. Fixed bug #80024 (Duplication of info about inherited socket after pool
removing). (Jakub Zelenka)
- FTP:
. Fixed bug #80880 (SSL_read on shutdown, ftp/proc_open). (cmb, Jakub
Zelenka)
- IMAP:
. Fixed bug #80800 (imap_open() fails when the flags parameter includes
CL_EXPUNGE). (girgias)
. Fixed bug #80710 (imap_mail_compose() header injection). (cmb, Stas)
- Intl:
. Fixed bug #80763 (msgfmt_format() does not accept DateTime references).
(cmb)
- LibXML:
. Fixed bug #73533 (Invalid memory access in php_libxml_xmlCheckUTF8). (cmb)
. Fixed bug #51903 (simplexml_load_file() doesn't use HTTP headers). (cmb)
- MySQLnd:
. Fixed bug #80837 (Calling stmt_store_result after fetch doesn't throw an
error). (Kamil Tekiela)
- Opcache:
. Fixed bug #80839 (PHP problem with JIT). (Dmitry)
. Fixed bug #80861 (erronous array key overflow in 2D array with JIT).
(Dmitry)
. Fixed bug #80786 (PHP crash using JIT). (Nikita)
. Fixed bug #80782 (DASM_S_RANGE_VREG on PHP_INT_MIN-1). (Dmitry)
- Pcntl:
. Fixed bug #79812 (Potential integer overflow in pcntl_exec()). (cmb)
- PCRE:
. Fixed bug #80866 (preg_split ignores limit flag when pattern with \K has
0-width fullstring match). (Kamil Tekiela)
- PDO_ODBC:
. Fixed bug #80783 (PDO ODBC truncates BLOB records at every 256th byte).
(cmb)
- PDO_pgsql:
. Fixed bug #80892 (PDO::PARAM_INT is treated the same as PDO::PARAM_STR).
(Matteo)
- Session:
. Fixed bug #80889 (Cannot set save handler when save_handler is invalid).
(cmb)
. Fixed bug #80774 (session_name() problem with backslash). (cmb)
- SOAP:
. Fixed bug #69668 (SOAP special XML characters in namespace URIs not
encoded). (cmb)
- Standard:
. Fixed bug #80915 (Taking a reference to $_SERVER hides its values from
phpinfo()). (Rowan Tommins)
. Fixed bug #80914 ('getdir' accidentally defined as an alias of 'dir').
(Rowan Tommins)
. Fixed bug #80771 (phpinfo(INFO_CREDITS) displays nothing in CLI). (cmb)
. Fixed bug #78719 (http wrapper silently ignores long Location headers).
(cmb)
. Fixed bug #80838 (HTTP wrapper waits for HTTP 1 response after HTTP 101).
(manuelm)
- Zip:
. Fixed bug #80825 (ZipArchive::isCompressionMethodSupported does not exist).
(cmb)
New in version 2.1.4
* platform support:
* work around address-space randomization causing instability
on new versions of MinGW. (#1921141)
* bug fix: RANDOM on floats returns values strictly less than the
float argument.
* bug fix: compiler error on x86-64 resulting from attempting to
zero a memory location with xor. (reported by Eric Marsden)
* optimization: extended loops updating iteration variables with
THEN can perform specialized arithmetic for those updates.
* optimization: in some cases, the jump table resulting from a
compilation of TYPECASE is simpler.
* optimization: on x86-64, IF BOUNDP followed by SYMBOL-VALUE can
elide some memory loads and tests.
New in version 2.1.3
* minor incompatible change: support for the
:SB-SAFEPOINT-STRICTLY, :SB-THRUPTION, and :SB-WTIMER build
features has been removed
* platform support:
* support for :SB-CORE-COMPRESSION on Darwin/ARM64
* support ARM v8.1 atomic and compare-and-swap instructions
* x86, x86-64: microoptimizations in multiple type-checking routines
* bug fix: structures and conditions are now TYPEP all
classes in the class precedence list of their
class. (reported by Luis Oliveira)
* bug fix: derivation of the result type from subtraction
sometimes erroneously excluded zero. (#1916895)
* bug fix: reduce the number of places where the system
permissively accepts the symbol * as a type specifier where
it should not be accepted. (#1860919)
* bug fix: the code-walker used by the system's
implementation of CLOS can handle defuns declared
inline. (reported by Don Cohen)
* optimization: EQUALP on specialized vectors and arrays is faster.
* optimization: support routines for EQUALP hash tables
generate less garbage.
New in version 2.1.2
* platform support:
* support for ARM64 macOS;
* improvement in coverage mark implementation on non-x86oid backends,
approaching the existing x86oid support;
* more empirically-robust retrieval of the program counter from
illegal instruction traps on SPARC;
* retain fewer dead objects when saving cores with precise collectors.
* incompatible change: MAP-ALL-SAMPLES and MAP-TRACE-SAMPLES
are no longer present in the SB-SPROF contrib module.
* minor incompatible change: SB-SPROF:WITH-PROFILING defaults
to all threads. SB-SPROF:START-PROFILING no longer accepts
a :SAMPLING keyword.
* enhancement: the sb-introspect contrib now supports finding
the lambda lists of method combinations. (thanks to Didier
Verna)
* enhancement: short-form DEFSETF now stores a source-location.
* bug fix: canonical unions of CONS types were being
incorrectly computed. (#1912863, reported by James
Kalenius)
* bug fix: better understanding of array simplicity (or
otherwise) in the type system. (#1903241)
* bug fix: unions of rational and integer types now have a
single canonical form, allowing more correct reasoning
about them in the type system.
* bug fix: less likely to overclaim certainty about type
equality of union types. (#1916040)
* bug fix: HANDLER-BIND evaluates the forms producing handler
functions only once. (#1916302, reported by Christophe
Junke)
* optimization: FIND on constant sequences can be compiled
into a jump table, in a similar manner to POSITION
* optimization: the compiler's awareness of numeric contagion
rules for operations on pairs of floating point numbers is
improved. (#1914094, thanks to Andrew Berkley)
New in version 2.1.1
* platform support:
* restore non-threaded NetBSD builds;
* adjust how the finalizer thread is started; (#1906571, #1907872)
* fix the encoding of PEXTR on x86-64;
* minor incompatible change: emit warnings for list iteration
forms when the object being iterated over is known not to be a
list. (#1908819, reported by Michael Fiano)
* bug fix: detect 2 or 1 as an invalid number of arguments passed
to optimized slot reading or writing effective method
respectively. (#1909659, reported by Michal Herda)
* bug fix: division by zero errors were in some cases not being
signalled. (#1910098, reported by il71)
* bug fix: erroneous coercions in the type system could lose
precision. (#1910294)
* bug fix: literal (read-time evaluated) NaNs in source code no
longer cause compiler crashes. (#1909881, reported by Michal
Herda)
* bug fix: detect more erroneous syntax in method
bodies. (#1912362, reported by Paul M. Rodriguez)
* optimization: the compiler's understanding of EXPT is improved,
reducing the introduction of COMPLEX types. (#1908830, reported
by Michael Fiano)
* optimization: the compiler is better at computing numeric
contagion when (COMPLEX FLOAT) types are involved.
* micro-optimizations:
* moving from slightly-bigger-than-fixnum ranges is more
efficient on x86-64;
* encode character comparisons with smaller operands on x86-64;
* truncating (and related operations) on floats can be inlined
in more cases on 64-bit platforms;
* rounding can use specialized instructions on ARM64 and on
x86-64 when SSE4 is available;
Our binary packages have been broken because of bad "REQUIRES"
entries: GHC uses $ORIGIN in rpath but mk/pkgformat/pkg/metadata.mk
uses ldd(1) to extract the list of required .so objects, which causes
them to be wrongly expanded.
- Libraries and binaries don't have the .note.GNU-stack section stripped
anymore. Previously, "make strip" would strip that section, which
would sometimes (depending on the toolchain) cause binaries to be
incorrectly tagged as needing an executable stack. This is not a
security issue in itself, but an executable stack makes it easier for
an attacker to turn bugs into exploits, so it should be avoided
whenever possible. Thanks to Xavier Stonestreet for reporting and
finding the cause of the problem.
- Link tests are now performed with a regular file as their
output, instead of /dev/null, which makes them more portable to
old/buggy linkers.
Bump default BUILDLINK_API_DEPENDS to match.
most of these simply extend matching from "aarch64" to "aarch64eb"
in various forms of code. most remaining uses in pkgsrc of
"MACHINE_ARCH == aarch64" are because of missing aarch64eb support,
such as most of the binary-bootstrap requiring languages like rust,
go, and java.
no pkg-bump because this shouldn't change packages on systems that
could already build all of these.
- Fix malformed preprocessor directive: ``#ifdef FOO && BAR''
- Use V8_OS_NETBSD instead of defined(__NetBSD__) consistently where appropriate
XXX
Unfortunately, nodejs does not work for aarch64eb yet.
We need to add big-endian support to built-in assembler.
1.3.0.1: Released 2021-02-06
* Fixed build with GHC 9.0.1 (Simon Jakobi).
* Improved test-suite; fixed memory leaks in some tests.
* Moved CI to GitHub Actions.
1.3.0: Released 2020-10-16
* Upgrade included Lua version to new bug-fix release 5.3.6. See the
upstream documentation https://www.lua.org/bugs.html#5.3.5 for the
bugs which have been fixed.
* Stop exporting c_loaded_table and c_prelad_table from module
Foreign.Lua.Raw.Auxiliary. Both values are defined only if the flag
HARDCODE_REG_KEYS is disabled, leading to compilation errors when
the flag is enabled.
* Add new function peekStringy to Peek module. It allows to peek a
value of any IsString type from an UTF-8 encoded string.
* Various improvements to the continuous integration setup, including
cleanup of the config files, version bumps to the ghc/cabal versions
used for testing, and running the linter in a dedicated GitHub
Action.
1.2.0: Released 2020-08-15
* New module Foreign.Lua.Call: the module offers an alternative method
of exposing Haskell functions to Lua. The focus is on
maintainability: types and marshaling methods are made explicit; the
possibility of adding documentation and parameter names improves
error messages and allows for automatic documentation extraction.
Work on this module is ongoing; the interface is likely to
change. Suggestions and feedback are welcome.
* New types Module, Field, and new functions registerModule,
preloadModule, pushModule, and render exported from
Foreign.Lua.Module: this builds on the new Call module and allows
the creation of documented modules as well as automatic generation
of Markdown-formatted module documentation.
* Export new items nth and top from Foreign.Lua.Core and
Foreign.Lua. They are short-hands for nthFromTop and stackTop.
* Performance improvements: Calling of Lua functions and creation of
Haskell data wrapping userdata has been sped up by about 10%. This
is mostly due to using of previously missed optimization
opportunities.
* All foreign imports have been moved to into the new Foreign.Lua.Raw
module. This module will replace the current Foreign.Lua.Core module
in the future and will be distributed as a separate package (likely
starting with the 2.0 release); the remaining parts of the current
Core module will be promoted one level in the module hierarchy.
* The Raw module can be used whenever the full power of HsLua is not
needed.
* Error-signaling of API wrapper functions has been changed: instead
of returning special integer values, functions now take an
additional pointer argument, which is set to the status result of
the computation.
* The Failable type in Core.Error is no longer needed and has been
removed.
* CI builds now include GHC 8.8 and GHC 8.10, ensuring that all GHC
8.* versions are supported.
1.1.2: Released 2020-06-27
* Revert signature of function pushList to it's proper 1.1 value. This
fixes a mistake which caused the 1.1.1 release to be in violation of
the PVP versioning policy.
* Module Foreign.Lua.Peek: add function pushKeyValuePairs (Alex
Loomis).
1.1.1: Released 2020-06-02
WARNING: This version does not conform to the PVP versioning policy,
due to a unintended signature change of function pushList. It is
recommended not to use this version.
* New module Foreign.Lua.Push: provides functions which marshal and
push Haskell values onto Lua's stack.
* Most functions in Foreign.Lua.Types.Pushable are now defined using
functions from this module.
* New module Foreign.Lua.Peek: provides functions which unmarshal and
retrieve Haskell values from Lua's stack. Contrary to peek from
Foreign.Lua.Types.Peekable, the peeker functions in this module will
never throw errors, but use an Either type to signal retrieval
failure.
* The error type PeekError should not be considered final and will
likely be subject to change in later versions.
* Module Foreign.Lua.Utf8: never throw errors when decoding UTF-8
strings. Invalid UTF-8 input bytes no longer cause exceptions, but
are replaced with the Unicode replacement character U+FFFD.
* Fixed missing and faulty Haddock documentation.
* Fixed a bug which caused unnecessary use of strings to represent
floating point numbers under certain configurations.
1.1.0: Released 2020-03-25.
WARNING: The changes in this release are experimental. It is
recommended to skip this release unless the newly introduced features
are required.
* Allow custom error handling: conversion of Lua errors to Haskell
exceptions and back is made configurable. Users can define their own
exception/error handling strategies, even opening up the option to
pass arbitrary exceptions through Lua.
- New types exported from Foreign.Lua.Types:
* ErrorConversion: defines the ways in which exceptions and errors
are handled and converted.
* LuaEnvironment: environment in which Lua computations are
evaluated. Contains the Lua interpreter state and the error
conversion strategy.
- The environment of the Lua type is changed from a plain Lua State
to the above mentioned LuaEnvironment.
- New functions run' is exported from Foreign.Lua.Util and
Foreign.Lua: it is analogous to run, but allows to run
computations with a custom error conversion strategy.
- New function runWithConverter exported from Foreign.Lua.Core.Types
and Foreign.Lua.Core; like run', but takes a custom state.
- New function unsafeRunWith exported from Foreign.Lua.Core.Types
and Foreign.Lua.Core; runs a computation without proper error
handling.
- New function errorConversion exported from Foreign.Lua.Core.Types
and Foreign.Lua.Core: extract the error conversion strategy from
the Lua type.
- New function throwErrorAsException exported from
Foreign.Lua.Core.Error and Foreign.Lua.Core: throws a Lua error as
Haskell exception, using the current error conversion strategy.
- Function runWith is moved from module Foreign.Lua.Core to
Foreign.Lua.Util.
- The module Foreign.Lua.Utf8 is now exported.
GHC has stopped requiring perl since 8.2.1 release. The last component
written in Perl was the evil splitter (-fsplit-objs), which has been
superseded by -fsplit-sections. Hooray!
Now that allocateExec() in rts/sm/Storage.c uses libffi to map executable
pages, we no longer have to disable these protections unless the RTS linker
is to be used.