Download Latest Version 1.6.1 source code.zip (4.0 MB) Google Add to Preferred Sources
Home / 1.5.0
Name Modified Size InfoDownloads / 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_parser to 2.8.0 for the attribute grammar #2466
  • A call to an undefined function or method now throws Error with PHP's own message and raises no warning first, instead of RuntimeException #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 unset of a literal offset on a property leaking the offset and emitting the unset twice, which gave an ArrayAccess property two offsetUnset() calls #2702
  • Fixed unset of an offset held in a native int variable not compiling #2702
  • Fixed unset of an offset on a plain object, on a reference, and from PHP 8.1 on a scalar or false, 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"] and a[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"} = value emitting 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-folding off 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 try without a catch clause never releasing its memory frame when its body throws, since the exception is cleared and control carries on #2716
Source: README.md, updated 2026-09-18