<?php
$cases = [
['1.0.0', '1.0.1', '<', true],
['1.0.0', '1.0.0', '=', true],
['1.0.0-dev', '1.0.0', '<', true],
['8.2.0', '8.10.0', '<', true],
];
foreach ($cases as [$a, $b, $op, $want]) {
$got = version_compare($a, $b, $op);
echo "$a $op $b => ", var_export($got, true), $got === $want ? " OK\n" : " FAIL\n";
}
echo version_compare('1.2', '1.10'), "\n";
Category
php-in-php· php-src-strictProblem
version_compare()is implemented in PHP (ext/standard/version_compare.php,VmInfo::version_compare()), but JIT/AOT still emitlib/JIT/Builtin/StringVersionCompareJit.php(~800 lines) of LLVM duplicating php-srcphp_version_comparetokenization (dev/alpha/beta/RC/pl/patch rules).Maintainers already deleted
phpc_version_compare.c; the LLVM class is the remaining duplicate surface.php-src reference
ext/standard/versioning.c—php_version_compareext/standard/basic_functions.stub.php—version_comparesignatureRepro
Save as
test/repro/maintainer_version_compare_jit.php:Scope
ext/standard/VersionCompareJitHelper.php(or reuseJitInfo.php)lib/JIT/Builtin/StringVersionCompareJit.phplib/JIT/Builtin/JitInfo.phpVmInfo::version_compare()version_compare_jit.phptDone when
StringVersionCompareJit.phpreduced to thin bridge (−700+ LLVM lines)ValueErrorvia PHP SSOT./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && vendor/bin/phpunit --filter version_compare'greenRelated