September 28, 2023

ZendPHP 8.1.24

ZendPHP Changes

- Added litespeed package

Community Fixes

- Core:
 . Fixed bug GH-11937 (Constant ASTs containing objects).
 . Fixed bug GH-11790 (On riscv64 require libatomic if actually needed).
 . Fixed bug GH-12073 (Segfault when freeing incompletely initialized
   closures).
 . Fixed bug GH-12060 (Internal iterator rewind handler is called twice).
 . Fixed bug GH-12102 (Incorrect compile error when using array access on TMP
   value in function call).

- DOM:
 . Fix memory leak when setting an invalid DOMDocument encoding.

- Iconv:
 . Fixed build for NetBSD which still uses the old iconv signature.

- Intl:
 . Fixed bug GH-12020 (intl_get_error_message() broken after
   MessageFormatter::formatMessage() fails).

- MySQLnd:
 . Fixed bug GH-10270 (Invalid error message when connection via SSL fails:
   "trying to connect via (null)").

- ODBC:
 . Fixed memory leak with failed SQLPrepare.
 . Fixed persistent procedural ODBC connections not getting closed.

- SimpleXML:
 . Fixed bug #52751 (XPath processing-instruction() function is not
   supported).

- SPL:
 . Fixed bug GH-11972 (RecursiveCallbackFilterIterator regression in 8.1.18).

- SQLite3:
 . Fixed bug GH-11878 (SQLite3 callback functions cause a memory leak with
   a callable array).
 

ZendPHP 8.2.11:

ZendPHP Changes

- Added litespeed package

Community Fixes

- Core:
 . Fixed bug GH-11937 (Constant ASTs containing objects).
 . Fixed bug GH-11790 (On riscv64 require libatomic if actually needed).
 . Fixed bug GH-11876: ini_parse_quantity() accepts invalid quantities.
 . Fixed bug GH-12073 (Segfault when freeing incompletely initialized
   closures).
 . Fixed bug GH-12060 (Internal iterator rewind handler is called twice).
 . Fixed bug GH-12102 (Incorrect compile error when using array access on TMP
   value in function call).

- DOM:
 . Fix memory leak when setting an invalid DOMDocument encoding.

- Iconv:
 . Fixed build for NetBSD which still uses the old iconv signature.

- Intl:
 . Fixed bug GH-12020 (intl_get_error_message() broken after
   MessageFormatter::formatMessage() fails).

- MySQLnd:
 . Fixed bug GH-10270 (Invalid error message when connection via SSL fails:
   "trying to connect via (null)").

- ODBC:
 . Fixed memory leak with failed SQLPrepare.
 . Fixed persistent procedural ODBC connections not getting closed.

- SimpleXML:
 . Fixed bug #52751 (XPath processing-instruction() function is not
   supported).

- SPL:
 . Fixed bug GH-11972 (RecursiveCallbackFilterIterator regression in 8.1.18).

- SQLite3:
 . Fixed bug GH-11878 (SQLite3 callback functions cause a memory leak with
   a callable array).

September 18, 2023

ZendHQ 1.4.0

New Features

  • Added Z-Ray SQL queries handler for the PHP PDO class.
    The following directives were added to the ZendHQ PHP extension:
    • zendhq.zray.collect_sql = 1
    • zendhq.zray.collect_backtrace.sql_queries = 1
    • zendhq.zray.max_bound_value_size = 1
  • Added Z-Ray SQL queries to the database.
    • Added tables for storing SQL queries, database connections and transactions.
    • Moved stack trace frames into a separate table and updated existing tables to
      reference stack trace frames in the new table.
    • Z-Ray database schema version is now 1.1. Existing databases are upgraded
      to the version 1.1 without a loss of data.
  • Added Z-Ray SQL queries to the JSON RPC
    • Implemented and documented the zray.SQL_QUERIES JSON RPC notification event.
      • The JSON RPC zray namespace version number is now 1.5 .
      • The JSON RPC session namespace version number is now 1.4 .
  • ZendHQ documentation is now installed to the ${INSTALL_PREFIX}/doc directory
  • Added preliminary support for the upcoming PHP 8.3 version

Bug Fixes

  • Fixed setting the node name value in the ZendHQ PHP extension.
  • The node name value is now initialized when PHP processes the first request, which
    allows changing the value for PHP FPM pools with the php_value[zendhq.node_name]
    directive.
  • Fixed Job Queue that kept running recurring jobs even if the license expired.
  • All the queues are now suspended if the license is expired, missing, or invalid.
  • Fixed retrieving scheduled Job Queue jobs using the PHP API
  • If a running task had a name, then it was not added to the list of scheduled
    jobs when requested without a name filter.

Internal Changes and Fixes

  • Added Z-Ray SQL queries to the 0MQ messages.
  • Implemented new 0MQ messages ZRAY_SQL_TRANSACTIONS and ZRAY_SQL_QUERIES , which
    carry all the information about Z-Ray SQL queries.
  • The zend::protobuf::ZendPHP::StackTraceFrame protobuf message can now optionally
    include function call arguments.
  • Added zend::protobuf::ZendPHP::StackTrace protobuf message for stack traces
    that contains zero to many zend::protbuf::ZendPHP::StackTraceFframe messages.
  • 0MQ messaging protocol API version is now 20230621 .
  • The ZendPHP::ExecHandler now has call-backs for the case when the PHP stack trace
    becomes empty (like when exiting the {main} function).
  • The ZendPHP::ExecHandler now optionally supports returning the current call-stack
    with all the function arguments.
  • The ZendPHP unique_zval_ptr is now using efree() to release the zval pointer
    and the pointer MUST be allocated with emalloc() . A helper function new_zval()
    was added that allocates a new zval using emalloc() .
  • Switched to the C++17 standard
  • Switched default linking option to visibility=hidden and implemented necessary
    changes to make exported symbols visible.

Build and Packaging Changes

  • Added zendhq-doc package. Currently contains JSON-RPC documentation.
    Located in /opt/zend/zendphp/doc as .md files.
  • Updated dependency libraries versions:
    • qt5 v5.15.14
    • protobuf 3.21.12
    • re2 2023.08.01, built with statically linked abseil 20230802.0
  • ZendHQ binaries (incl. PHP extension) built using static linking to re2, protobuf and
    zeromq dependency libraries.
    Formerly needed dependency packages are not needed anymore and may be removed after
    zendhq upgrade:
    • Debian, Ubuntu distros: libprotobuf28-zendphplibzmq5-zendphplibre2-*
    • Alpine distros: libprotobuf-zendphplibzmq-zendphplibre2
    • RHEL compatible distros: protobuf-zendphpzeromq-zendphpre2
      These obsolete packages mentioned above are currently not removed automatically.
      Please pay attention on re2 libraries when removing - these were installed from OS distribution
      repositories and may be required for other installed packages. yum autoremove and
      apt autoremove should be safe to use for removing unneeded packages.
      On Alpine apk update [<packages>] will automatically remove unused packages.