Skip to content

Stdlib: mb_ucfirst()/mb_lcfirst() missing on forward 8.4 profile while mb_trim family registered (ext/mbstring/mbstring.c, extends #4007) #17609

Description

@PurHur

Category

Stdlib · php-src-strict · forward-profile surface

Problem

PHP 8.4 forward profile (PHP_COMPILER_PROFILE=8.4) advertises mb_trim, mb_ltrim, and mb_rtrim, but mb_ucfirst() / mb_lcfirst() remain unregistered (PHP 8.3+ mbstring). Vendor code probing function_exists('mb_ucfirst') before use will skip UTF-8 case changes even though other 8.4 mbstring helpers are present.

Builtin function_exists VM forward 8.4 (2026-07-10)
mb_trim true
mb_ltrim / mb_rtrim true
mb_ucfirst / mb_lcfirst false
mb_strtoupper true

php-src reference

PHP implementation target

Repro

./script/docker-exec.sh -- bash -lc 'PHP_COMPILER_PROFILE=8.4 php bin/vm.php test/repro/maintainer_gap_mb_ucfirst_forward84_missing.php'

Done when

  • Forward 8.4: function_exists('mb_ucfirst') and mb_lcfirst true; mb_ucfirst('über') → Über
  • Reference profile still withholds until stable Zend gate (no phantom on 8.2)
  • Compliance .phpt under test/compliance/cases/stdlib/
  • docs/capabilities.md rows via script/capability-matrix.php

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:vmVirtual machineenhancementNew feature or requestimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimphase-4:stdlibPhase 4 – stdlib for web appsstdlib

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions