## New Features

### PHP Core

#### SensitiveParameter Attribute

Added the `#[\SensitiveParameter]` attribute to redact sensitive data in backtraces.

#### error_log_mode INI directive

The error_log_mode INI directive has been added which allows setting the permissions for the error log file.

#### Enumerations properties in constant expressions

It is now possible to fetch properties of Enumerations in constant expressions.

#### Type System Improvements

It is now possible to use null and false as stand-alone types.

The true type has been added.

It is now possible to combine intersection and union types. The type needs to be written in DNF.

#### Constants in Traits

It is now possible to define constants in traits.

#### Readonly Classes

Support for readonly on classes has been added.

### cURL

Added the `CURLINFO_EFFECTIVE_METHOD` option, which returns the effective HTTP method in the return value of curl_getinfo().

Exposed multiple new constants from libcurl 7.62 to 7.80.

Added the curl_upkeep() function to perform any connection upkeep checks.

### DBA

The LMDB Driver now accepts the `DBA_LMDB_USE_SUB_DIR` or `DBA_LMDB_NO_SUB_DIR` flags to determine if it should create a subdirectory or not when creating a database file.

### OCI8

Added the oci8.prefetch_lob_size INI directive and oci_set_prefetch_lob() function to tune LOB query performance by reducing the number of round-trips between PHP and Oracle Databases when fetching LOBS. This is usable with Oracle Database 12.2 or later.

### OpenSSL

Added AEAD support for the chacha20-poly1305 algorithm.

### ODBC

Added the odbc_connection_string_is_quoted(), odbc_connection_string_should_quote(), and odbc_connection_string_quote() functions. These are primarily used behind the scenes in the ODBC and PDO_ODBC extensions, but are exposed to userland for easier unit testing, and for user applications and libraries to perform quoting themselves.

### PCRE

Added support for the `n` (NO_AUTO_CAPTURE) modifier, which makes simple `(xyz)` groups non-capturing. Only named groups like `(?<name>xyz)` are capturing. This only affects which groups are capturing, it is still possible to use numbered subpattern references, and the matches array will still contain numbered results.

### Random

This is a new extension which organises and consolidates existing implementations related to random number generators. New and better RNGs are available with scope issues eliminated.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open