PHP 8.5.0 Released!

Outras Alterações

Alterações no Núcleo

Núcleo

O temporizador de alta resolução (hrtime()) no macOS agora usa a API recomendada clock_gettime_nsec_np(CLOCK_UPTIME_RAW) em vez de mach_absolute_time().

CGI/CLI

A opção -z ou --zend-extension foi removida por não estar funcionando. Use -d zend_extension=[caminho] em vez disso.

PDO_ODBC

O comportamento de busca para colunas maiores foi alterado. Em vez de buscar blocos de 256 bytes, o PDO_ODBC tentará buscar um tamanho de bloco maior; atualmente, esse tamanho é o tamanho da página menos a sobrecarga de string. Os drivers que retornam SQL_NO_TOTAL em SQLGetData também são tratados de forma mais eficiente. Isso deve melhorar a compatibilidade e o desempenho.

Alterações nos Módulos SAPI

CLI

Tentar definir um título de processo muito longo com cli_set_process_title() agora falhará em vez de truncar silenciosamente o título fornecido.

Adicionada uma nova opção --ini=diff para imprimir as configurações do arquivo INI alterado em relação ao padrão integrado.

FPM

O FPM com httpd ProxyPass decodifica opcionalmente o caminho completo do script. Adicionada a configuração INI fastcgi.script_path_encoded para evitar este novo comportamento.

O limite de log de acesso do FPM agora respeita o valor de log_limit.

Funções Alteradas

Intl

grapheme_extract() atribui corretamente o valor de $next ao ignorar bytes iniciais inválidos. Anteriormente, havia casos em que apontava para o início do limite do grafema em vez do fim.

transliterator_get_error_code(), transliterator_get_error_message(), TransLiterator::getErrorCode() e TransLiterator::getErrorMessage() removeram false da união de tipos de retorno. Retornar false na verdade nunca foi possível.

As seguintes funções agora suportam um argumento $locale: grapheme_strpos(), grapheme_stripos(), grapheme_strrpos(), grapheme_strripos(), grapheme_substr(), grapheme_strstr() e grapheme_stristr().

LDAP

ldap_get_option() agora aceita uma conexão null, como ldap_set_option(), para permitir a recuperação de opções globais.

libxml

libxml_set_external_entity_loader() agora tem um tipo de retorno formal de true.

OpenSSL

openssl_public_encrypt() e openssl_private_decrypt() têm um novo parâmetro $digest_algo que permite especificar o algoritmo de hash para o preenchimento OAEP.

openssl_sign() e openssl_verify() possuem um novo parâmetro $padding para permitir o uso de um preenchimento RSA PSS mais seguro.

openssl_cms_encrypt() $cipher_algo O parâmetro pode ser uma string com o nome da cifra. Isso permite usar mais algoritmos, incluindo algoritmos de cifra AES e GCM para dados envelopados de autenticação.

PCNTL

pcntl_exec() agora tem um tipo de retorno formal de false.

pcntl_waitid() recebe um argumento adicional resource_usage para coletar várias métricas específicas da plataforma sobre o processo filho.

PDO_PGSQL

Pdo\Pgsql::copyFromArray() agora suporta entradas iterable.

Pdo\Pgsql::setAttribute() e Pdo\Pgsql::prepare() suportam configurar PDO::ATTR_PREFETCH para 0, que entra no modo lento de busca. Neste modo, as instruções não podem ser executadas em paralelo.

PostgreSQL

pg_copy_from() agora suporta entradas iterable.

pg_connect() verifica se o argumento connection_string contém algum byte nulo.

pg_close_stmt() verifica se o argumento connection_string contém algum byte nulo.

POSIX

posix_ttyname() define last_error como EBADF ao encontrar um descritor de arquivo inválido.

posix_isatty() gera uma mensagem E_WARNING ao encontrar um descritor de arquivo inválido.

posix_fpathconf() verifica descritores de arquivo inválidos e define last_error como EBADF e gera uma mensagem E_WARNING.

Reflection

ReflectionClass::__toString() para enumerações foi alterada para melhor indicar que a classe é uma enumeração e que os casos de enumeração não são constantes de classe normais.

A saída de ReflectionProperty::__toString() para propriedades com ganchos foi alterada para indicar quais ganchos a propriedade possui, se esses ganchos são finais e se a propriedade é virtual. Isso também afeta a saída de ReflectionClass::__toString() quando uma classe contém propriedades com ganchos.

Sockets

socket_create()/socket_bind() podem criar soquetes da família AF_PACKET.

socket_getsockname() obtém o índice da interface e sua representação em string com o soquete AF_PACKET.

Zlib

O argumento $use_include_path para as funções gzfile(), gzopen() e readgzfile() foi alterado de int para bool.

As funções gzfile(), gzopen() e readgzfile() agora respeitam o contexto de fluxo padrão.

Outras Alterações em Extensões

cURL

curl_setopt() com o valor da opção CURLOPT_FOLLOWLOCATION não é mais tratada como booleano mas como inteiro, para lidar com CURLFOLLOW_OBEYCODE e CURLFOLLOW_FIRSTONLY.

Fileinfo

Biblioteca atualizada da versão 5.45 para a 5.46.

O tipo de retorno de finfo_close() foi alterado para true, em vez de bool.

Intl

O mecanismo interno de erros de Intl foi modernizado para que indique com mais precisão qual local de chamada causou qual erro. Além disso, algumas exceções de ext/date agora são encapsuladas em uma IntlException.

Lexbor

Uma extensão lexbor sempre habilitada foi adicionada. Ela contém a biblioteca lexbor que foi separada de ext/dom para ser reutilizada entre outras extensões. A nova extensão não é exposta diretamente ao espaço do usuário.

Opcache

A extensão Opcache agora está sempre integrada ao binário do PHP e é sempre carregada. As diretivas INI opcache.enable e opcache.enable_cli ainda são respeitadas.

PCRE

Atualizada a biblioteca pcre2lib da versão 10.44 para a 10.46.

PDO_Sqlite

Alterada a versão mínima suportada de 3.7.7 para 3.7.17.

Readline

Os tipos de retorno de readline_add_history(), readline_clear_history() e readline_callback_handler_install() foram alterados para true, em vez de bool.

Reflection

ReflectionConstant não é mais final.

Alterações na Manipulação de Arquivos INI

Núcleo

Adicionada a opção 'fatal_error_backtraces' para controlar se os erros fatais devem incluir um rastreamento de pilha.

Adicionada configuração INI 'max_memory_limit' exclusiva da inicialização para controlar o limite máximo de memória que pode ser configurado na inicialização ou em tempo de execução. Exceder esse valor gera um aviso, a menos que seja definido como -1, e define o limite de memória para o valor atual de 'max_memory_limit'.

Opcache

Adicionada a opção 'opcache.file_cache_read_only' para suportar um diretório somente leitura opcache.file_cache, para uso com sistemas de arquivos somente leitura (por exemplo, contêineres Docker somente leitura). Melhor utilizado com opcache.validate_timestamps=0, opcache.enable_file_override=1 e opcache.file_cache_consistency_checks=0.

Nota: Um cache gerado com uma versão diferente do PHP, um caminho de arquivo diferente ou configurações diferentes (incluindo quais extensões estão carregadas) pode ser ignorado.

O valor padrão de opcache.jit_hot_loop é agora 61 (um número primo) para evitar que seja um múltiplo do número de iterações do loop. Recomenda-se que este parâmetro seja definido como um número primo.

Alterar opcache.memory_consumption quando o OPcache SHM já estiver configurado agora reportará corretamente uma falha em vez de não fazer nada silenciosamente e mostrar valores enganosos no PHPInfo.

OpenSSL

Adicionada a opção 'openssl.libctx' para selecionar o tipo de contexto da biblioteca OpenSSL. É possível usar uma libctx personalizada para cada thread ou uma única libctx global (padrão).

Desempenho

Núcleo

Removidos os OPcodes para comparações de identidade com valores booleanos, especialmente para o padrão match(true).

Adicionada a especialização de OPcode para comparações === [] e !== [].

A criação de objetos de exceção agora é muito mais rápida.

As partes do código que utilizavam SSE2 foram adaptadas para usar SIMD com ARM NEON também.

Introduzida a máquina virtual TAILCALL, habilitada por padrão ao compilar com Clang>=19 em x86_64 ou aarch64. A máquina virtual TAILCALL é tão rápida quanto a máquina virtual HYBRID usada ao compilar com GCC. Isso faz com que os binários PHP compilados com Clang>=19 sejam tão rápidos quanto os binários compilados com GCC. O desempenho da máquina virtual CALL, usada com outros compiladores, também melhorou consideravelmente.

Intl

Agora evita a criação de cópias extras de strings ao converter strings para uso no compilador.

MBString

As partes do código que utilizavam SSE2 foram adaptadas para usar SIMD com ARM NEON também.

Opcache

Melhoria no desempenho da obtenção de variáveis ​​TLS em código compilado JIT em builds que não utilizam Glibc.

SPL

Melhoria no desempenho dos acessadores de dimensão e dos métodos de SplFixedArray.

Standard

Melhoria no desempenho de funções de array com chamadas de retorno (array_find(), array_filter(), array_map(), usort(), ...).

Desempenho aprimorado de urlencode() e rawurlencode().

Melhoria no desempenho de unpack() com repetições sem nome evitando a criação de strings temporárias e sua reanálise.

Melhoria no desempenho de pack().

Pequenas melhorias no desempenho de array_chunk().

XML

Melhoria no desempenho de acesso às propriedades do XMLReader.

Melhoria no desempenho do XMLWriter e redução no consumo de memória.

adicionar nota

Notas de Usuários

Não há notas de usuários para esta página.
To Top