====== PHP RFC: Oniguruma maintenance end and future of mbregex ====== * Version: 0.1 * Date: 2025-08-21 * Author: Yuya Hamada youkidearitai@gmail.com * Status: Draft * Implementation: https://github.com/php/php-src/pull/19258 ===== Introduction ===== [[https://github.com/kkos/oniguruma|Oniguruma]] maintenance ended on 2025-04-24. PHP uses mbregex (mb_ereg...) functions. We need to decide the future of this group of functions. ===== Proposal ===== It is likely that the following points need to be decided, and how we will maintain versions 8.2 - 8.5. * Maintenance versions: 8.2. 8.3, 8.4, 8.5 * Deprecate version: 8.6 (next after 8.5) * Drop support: 9.0 PHP 8.1 is not included because it is EOL in FreeBSD on 2026-12-01. Maintenance versions can use mbregex functions. However, FreeBSD will drop support on 2026-12-01 (ref: https://github.com/php/php-src/issues/18467#issuecomment-3044192511). We should decide what we will do after EOL in FreeBSD. * Re-include Oniguruma (can we fix security issues and maintain?) * Drop support in maintenance versions on 2026-12-01 (can we change this?) Deprecate and drop the following mbregex functions: * mb_ereg * mb_ereg_match * mb_ereg_replace * mb_ereg_replace_callback * mb_ereg_search * mb_ereg_search_getpos * mb_ereg_search_getregs * mb_ereg_search_init * mb_ereg_search_pos * mb_ereg_search_regs * mb_ereg_search_setpos * mb_eregi * mb_eregi_replace * mb_regex_encoding * mb_regex_set_options * mb_split Constants: * MB_ONIGURUMA_VERSION php.ini options: * mbstring.regex_retry_limit * mbstring.regex_stack_limit ===== Backward Incompatible Changes ===== The mbregex functions cannot be used. ===== Proposed PHP Version(s) ===== Deprecate for 8.6 and remove in 9.0, but what do we do in maintenance versions? ===== RFC Impact ===== ==== To Existing Extensions ==== Mbregex ==== To SAPIs ==== Describe the impact to CLI, Development web server, embedded PHP etc. ===== Open Issues ===== https://github.com/php/php-src/issues/18467 ===== Future Scope ===== This section should outline areas that you are not planning to work on in the scope of this RFC, but that might be iterated upon in the future by yourself or another contributor. This helps with long-term planning and ensuring this RFC does not prevent future work. ===== Voting Choices ===== * We decide deprecate and drop support for mbregex functions * How do we handle maintenance versions? ===== Implementation ===== * Re-include Oniguruma version: https://github.com/php/php-src/pull/19258 * Deprecate mbregex: TBD ===== References ===== * [[http://ml.php.gr.jp/pipermail/php-dev/2003-August/000844.html|Mailing list when mbregex was changed to Oniguruma (Japanese mailing list ml.php.gr.jp)]] * https://externals.io/message/127245#127245 ===== Rejected Features ===== Keep this updated with features that were discussed on the mail lists. ===== Changelog ===== If there are major changes to the initial proposal, please include a short summary with a date or a link to the mailing list announcement here, as not everyone has access to the wikis' version history.