| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| zephir.phar | 2026-09-18 | 3.4 MB | |
| 1.5.0 source code.tar.gz | 2026-09-18 | 2.4 MB | |
| 1.5.0 source code.zip | 2026-09-18 | 3.9 MB | |
| README.md | 2026-09-18 | 3.8 kB | |
| Totals: 4 Items | 9.6 MB | 0 | |
Added
- Added PHP attributes on a class, interface, trait, property, class constant, method and parameter, reported by Reflection as they are for a PHP class #2466
- Added
#[\Attribute]support, so a Zephir class can be used as an attribute class #2466 - Added PHP attributes on a top-level function and its parameters. On a ZTS PHP up to 8.2 a named argument of a function attribute is reported positionally, because php-src's
function_copy_ctor()copies an attribute argument's value without its name; php-src 8.3 removed that copy and reports the name #2466
Changed
- Attribute arguments are folded at compile time, so an argument that is not a constant expression is a compile error #2466
- Raised the minimum
ext-zephir_parserto 2.8.0 for the attribute grammar #2466 - A call to an undefined function or method now throws
Errorwith PHP's own message and raises no warning first, instead ofRuntimeException#2712
Removed
- Removed the
is_private_property()builtin, whose optimizer emitted a kernel function that does not exist #2712
Fixed
- Fixed the first write or unset of an array property leaking the separated array, and every object it held, because the dup's only reference was dropped before the release #2698
- Fixed the persistent keys of an array class constant or array property default being freed by a copy written with a runtime built key, which corrupted the heap #2699
- Fixed
unsetof a literal offset on a property leaking the offset and emitting the unset twice, which gave anArrayAccessproperty twooffsetUnset()calls #2702 - Fixed
unsetof an offset held in a nativeintvariable not compiling #2702 - Fixed
unsetof an offset on a plain object, on a reference, and from PHP 8.1 on a scalar orfalse, which stayed silent where PHP reports an error #2702 - Fixed a literal numeric string array offset not resolving to the integer key PHP resolves it to, so
a["3"]anda[3]now name the same element #2708 - Fixed three duplicated code generation branches emitting a string array offset with a length one byte too long #2708
- Fixed
let {"name"} = valueemitting a kernel function removed in 0.18.0, so the generated C did not compile #2710 - Fixed reading a class constant with
static-constant-class-foldingoff emitting an undeclared kernel function, and a value where its address was required #2711 - Fixed an unreachable variable defaults path that called an undefined
add_slashes(), by deleting it #2707 - Fixed a method with an empty or comment only body never releasing the memory frame its parameter conversion opened, which retained 232 to 288 bytes per call #2716
- Fixed a
trywithout acatchclause never releasing its memory frame when its body throws, since the exception is cleared and control carries on #2716