PHP 8.3 Alpha 1 lançado com detecção de estouro de pilha, e mais

E foi lançado o PHP 8.3 Alpha 1 com detecção de estouro de pilha, e mais. Confira as novidades e ajude a testar.

O PHP (Ou Hypertext Preprocessor, originalmente Personal Home Page) é uma linguagem interpretada livre. Inicialmente ela era usada apenas para o desenvolvimento de aplicações no lado do servidor, capazes de gerar conteúdo dinâmico na World Wide Web.

PHP é uma linguagem de programação que permite o desenvolvimento web ou aplicações web dinâmicas. O código dela é interpretado no lado do servidor pelo módulo PHP, que também gera a página web a ser visualizada no lado do cliente.

Agora, o primeiro lançamento alfa do PHP 8.3 está disponível.

PHP 8.3 Alpha 1 lançado com detecção de estouro de pilha, e mais

PHP 8.3 Alpha 1 lançado com detecção de estouro de pilha, e mais
PHP 8.3 Alpha 1 lançado com detecção de estouro de pilha, e mais

Com o lançamento desta versão do PHP 8.3 para Alpha 1 testando as funcionalidades previstas para sua implementação, destaca-se a função json_validate(), por exemplo, para verificar rapidamente se uma string está no formato JSON sem realizar operações de decodificação, pois anteriormente um string JSON consistia em um formato de dados especificado e, se exigisse a validação de uma string JSON, a função json_decode() era necessária.

Outra das mudanças que se destacam são as melhorias no tratamento de erros, bem como na detecção de estouro de pilha com as duas novas diretivas zend.max_allowed_stack_size e zend.reried_stack_size que foram adicionadas ao arquivo ini para definir o tamanho máximo da pilha permitido e reservado.

É mencionado que o benefício desse recurso é que as falhas de segmentação induzidas pelo estouro de pilha não gerarão mais falhas de segmentação, o que torna a depuração muito mais fácil.

Sobre o funcionamento, é mencionado que o programa irá travar quando se aproximar do esgotamento da pilha, quando a pilha encher mais que a diferença entre os valores de zend.max_allowed_stack_size e zend.reried_stack_size (a execução irá parar sem trazer a situação a uma falha de segmentação).

Por padrão, o valor de zend.max_allowed_stack_size é definido como 0 (0: o tamanho é determinado automaticamente, você pode definir -1 para desabilitar o limite).

Além disso, também vale a pena notar que novos métodos foram adicionados à classe Randomizer, que fornece uma API de alto nível para gerar números e sequências pseudo-aleatórias.

Algumas pequenas adições estão integradas nesta atualização: getBytesFromString para gerar uma string de um determinado tamanho usando caracteres aleatórios presentes em outra string; getFloat e nextFloat para gerar um número de ponto flutuante aleatório dentro do intervalo especificado.

Destaca também as melhorias no tratamento de exceções de data/hora, já que anteriormente o PHP simplesmente se limitava a emitir um warning ou erro quando algo dava errado no tratamento de datas e horas, mas agora foi adicionada a geração de exceções separadas DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError em caso de problemas com operações de data e hora.

Das outras alterações presentes no PHP 8.3 Alpha 1, destacam-se:

  • Adicionada a capacidade de extrair constantes usando a sintaxe de classe dinâmica.
  • A função adicionada getBytesFromString() pode ser usada para gerar uma string do comprimento desejado a partir de bytes de uma string escolhida aleatoriamente
  • Tratamento aprimorado de erros que ocorrem ao analisar dados serializados na função unserialize() . Em caso de problemas, unserialize() agora retornará E_WARNING em vez de E_NOTICE.
  • Adicionado getfloat() que retorna um float entre $min e $max
  • Função nextfloat() adicionada .
  • Adicionadas novas funções POSIX posix_sysconf(), posix_pathconf(), posix_fpathconf() e posix_eaccess().
  • Ao usar FFI, as funções C que têm um tipo de retorno void agora retornam null em vez de retornar FFI\CData:void
    posix_getrlimit() agora usam um parâmetro $res opcional para permitir obter um único limite de recurso.
  • gc_status() tem quatro novos campos: running, protected, full buffer_size.
  • class_alias() agora suporta a criação de um alias de uma classe interna.
  • mysqli_poll() agora gera ValueError quando argumentos de leitura ou erro são passados.
  • array_pad() agora é limitado apenas pelo número máximo de elementos que um array pode ter. Anteriormente, só era possível adicionar no máximo 1048576 itens por vez.
  • Novas funções posix: posix_sysconf(), posix_pathconf(), posix_fpathconf()yposix_eaccess()
  • A execução de proc_get_status() várias vezes agora sempre retornará o valor correto em sistemas posix.

Aos interessados, o PHP 8.3 Alpha 1 pode ser baixado no site PHP.net.

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.