All notable changes to this project will be documented in this file.
The format based on Keep a Changelog and this project adheres to Semantic Versioning.
- Added support of PHP
8.3
#2407 - Added support of multiple return types in stubs
- Changed
PHP_DEBUG
const usage toZEND_DEBUG_BUILD
- Changed minimal PHP version to
8.0
#2407
0.17.0 - 2023-02-11
- Added support of PHP
8.2
#2255
- Fixed backtrace on alpine #2397
0.16.3 - 2022-09-17
- Fixed segmentation fault on
mixed
return type and PHP 7.4 #2387
0.16.2 - 2022-08-22
- Added support for
object
return type #2374
0.16.1 - 2022-08-21
- Changed usage of
utf8_decode()
function in favour ofmb_convert_encoding()
#2376
- Fixed generation of
ARG_INFO
for nullable object (?object
) #2374
0.16.0 - 2022-03-20
- Added custom list of arg info definition (Phalcon only) #2341
- Added support for
int|false
return type (PHP >= 8.0 only) #2338 - Added support of PHP
8.1
#2255
- Fixed left
null
withstring
condition #2299 - Improved support of
mixed
type #2330 - Fixed Interfaces Breaking Child Projects Of Same Root Level Namespace #2334
0.15.2 - 2021-10-24
- Fixed output of
string
type INI in globals #2312
0.15.1 - 2021-10-08
- Fixed support of
string
type in struct globals #2308
0.15.0 - 2021-10-05
- Removed
.zep
from stubs filenames #2273
0.14.0 - 2021-09-18
- Added support for
require_once
#2253
- Bumped minimal version of Zephir Parser to
1.4.1
. #2284
0.14.0-beta.3 - 2021-08-06
- Fixed class entry generation of external class #2261
0.14.0-beta.2 - 2021-08-06
- Fixed missing
config/
directory inzephir.phar
#2259
0.14.0-beta.1 - 2021-08-06
- Fixed nullable dynamic argument definition #2245
- Changed detection of external class entries #2213
0.13.5 - 2021-05-09
- Fixed
zephir build
command #2240 - Fixed
zephir generate
when processing Closure #2241 - Fixed stubs generation with variable-length argument #2239
0.13.4 - 2021-04-26
0.13.3 - 2021-04-25
- Fixed nullable array #1094
- Fixed default value detection with Reflection (only PHP 8.0) #1134
- Updated supported list of class entries for PHP date extension #2226
- Fixed unset from class property #1259
- Added support syntax assign-bitwise operators #1103
0.13.2 - 2021-04-10
- Fixed default value of nullable string parameter #2180
- Fixed cast of
string
toint
andfloat
#828 - Fix
uint
cast tounsigned int
in function params #812 - Fixed
null
strict check when variable isstring
type #2186
0.13.1 - 2021-03-31
- Added jobs
-j, --jobs
option forzephir compile
#2174
- Fixed not used arginfo for interface static method without parameters (PHP
>= 8.0
only) #2178 - Fixed
zephir install
command #2175
0.13.0 - 2021-03-25
- Dropped support of PHP
< 7.4
versions #2111 - Removed call of
generate
command insidecompile
call #2150 - Removed call of
compile
command insideinstall
call #2150
- Fixed parameters type detection in methods/functions (PHP
>= 8.0
only) - Fixed not adding all build directories #2144
0.12.21 - 2021-03-05
- Fixed path separators in generated
config.m4
file on Windows #2153
0.12.20 - 2020-12-16
- Added supports void type return value for stubs phalcon/ide-stubs#50 #1977
- Fixed missing kernel directory at build time ice/framework#271
- Fixed stubs generation for case with array declaration with square brackets in params
- Fixed parameters positioning for
implode()
php function #2120
0.12.19 - 2020-05-13
- Fixed duplicate definition with GCC 10 ice/framework#266
- Fixed initialization of object properties with default values when the object is an instance of a child class #2089
- Improved stubs generation for methods which may return object or null #2092
0.12.18 - 2020-04-25
- In some cases for C "control characters" aren't properly escaped #2065
- Zephir ignored property visibility and has not thrown error when setting private/protected properties in scope that shouldn't intend for it #2078, phalcon/cphalcon#14810, phalcon/cphalcon#14766
0.12.17 - 2020-02-14
- On some platforms special alpha characters aren't correctly escaped. #2058
- Changed the internal DI environment mode when compile PHAR #2049
0.12.16 - 2020-01-16
- Do not dump config file if config was changed.
Usually we need dump configuration exactly once - at project initialization.
There are no needs to dump it for every config change. Also, this patch
removes
Config::$changed
variable that is no longer needed #2035 - Use a different path for the Kernel cache if possible. This patch fixes a cache collision issue. The issue is after creating the cache and filling it with a project-specific configuration, there is no way to invalidate it. Any next project will use the same Kernel cache and the same Kernel configuration (if any). #2036
- Fixed
-V
CLI flag purpose. Initially it was designed to disable verbose mode on the fly, e.g. to override project configuration for a single Zephir pass. This behavior was returned back. - Fix increment array elements operation #2020
- Fixed compound addition and subtraction assignment operators for static properties #2038
- Improved type hint for arrays when generating stubs #2026
0.12.15 - 2019-12-12
- Removed
uint
typedef usage
0.12.14 - 2019-12-11
- Removed
zend_uint
typedef usage
0.12.13 - 2019-12-08
- Fixed PHP 7.4 support for macOS phalcon/cphalcon#14577
- Removed
uint
andulong
typedefs usage
0.12.12 - 2019-11-25
- Option to set banner for stubs generator #1987
- Calling object methods from static context yields segmentation fault when
internal-call-transformation
is set toTRUE
#2000 - Certain method calls fail when called from static context when
internal-call-transformation
is set toTRUE
#2005 - Method context loses track of
this
after calling static method wheninternal-call-transformation
is set toTRUE
#2007 - Fixed incorrect stubs generation for return type hint #1990
- Fixed incorrect stubs generation for classes in the same namespace #2016
0.12.11 - 2019-11-02
- Fixed arithmetical operations with
zvals
which storesdouble
numbers - Fixed updating static variables in the loop which represents
double
andinteger
data types #1494 - Fixed casting char into another of a different type #1988
- Fixed
internal
methods definition wheninternal-call-transformation
is enabled #1956 - Fixed aliases using in the
use
statement when generating stubs #1986 - Fixed incorrect namespace on type hinted return when generating API docs #1229
0.12.10 - 2019-10-19
- Fixed incorrect behavior in
zephir_get_global
ifzval
reference count <= 1 #1961
- Removed
--vernum
option from the help for regular commands - Removed
void
from the return type hint in the generated stubs #1977 - Remove no longer supported
TSRMLS_CC
usage #1865
- Disabled PHP warnings for PHP >= 7.3.0 to be able correct work with lowest versions of dependencies zendframework/zend-code#160
- Introduced support of multi line
@param
body for generated stubs #1968
0.12.9 - 2019-10-14
- Added a single hyphen version of
dumpversion
option (just-dumpversion
) - Added
--vernum
option to print compiler version as integer
- Create local
.zephir
only when necessary - Fixed IDE stubs generation #1778
- Fixed segfault on cast
IS_UNDEF
to array #1941 - Disables some regression changes introduced in the version
0.12.5
#1941 (comment) - Fixed memory leak on update array #1937
- Fixed IDE stubs generation for classes that extends base classes #1907
- Proper escape slashes in strings #1495
- Print warning during the code generation if the
timecop
extension was detected #1950 - Improved error handling to not print PHP stack traces if
ZEPHIR_DEBUG
is not set
- Removed no longer used
zephir_dtor
macro
0.12.8 - 2019-10-03
- Fixed
zephir_preg_match
to useZVAL_NULL
instead ofZEPHIR_NULL
#1946 - Fixed
Extension\InternalClassesTest
test to be able run full test suite without Phalcon #1949
0.12.7 - 2019-10-03
- Fixed regression introduced in
0.12.5
for those users who doesn't use bundledext/pcre/php_pcre.h
#1944 #1940 - Fixed sitemap API generator #1940
0.12.6 - 2019-10-03
- Fixed regression introduced in
0.12.5
for those users who doesn't use bundledext/json/php_json.h
#1940
0.12.5 - 2019-10-02
- Update
zend_update_static_property
to be compatible with PHP >= 7.3 #1904 - Improved error handling
- Fixed IDE stubs generation to properly generate return type hint for
var | null
#1922 - Fixed updating Super Globals #1917
- Fixed casting variables to array #1923
- Fixed work with constant which are not present #1928
- Fixed access to Super Globals #1934, phalcon/cphalcon#14426
0.12.4 - 2019-09-22
- Fixed install template
0.12.3 - 2019-09-22
- Fixed concatenation support of strings with
double
numbers #1893 - Fixed 'void' return type hint being ignored #1908
- Fixed updating array properties #1915
0.12.2 - 2019-08-05
- Introduced initial ability to generate
zend_module_deps
#1900, phalcon/cphalcon#13702, phalcon/cphalcon#13794
- Write errors compiler to stderr if available
0.12.1 - 2019-07-30
- Added initial bash completion support (see
zephir-autocomplete
file)
- Remove HAVE_SPL usage phalcon/cphalcon#14215
- Remove not used redundant command line options
- Cleaning up redundant CLI options
- Fixed segfault when auto-loading class with syntax error #1885
- Optimize memory usage #1882
- Fixed modifying array values in loops #1879
0.12.0 - 2019-06-20
- PHP 5.x is no longer supported
- The minimal Zephir Parser version is 1.3.0
- Fixed CLI runner for Windows #1857
- Fixed segfault with fetching and opcache #1855
- Extended classes can't access their private variables #1851
- Incorrect usage of
zend_declare_class_constant_ex
phalcon/cphalcon#14160, https://bugs.php.net/bug.php?id=78121 - Incorrect implementation of ArrayAccess methods #1871
- Fixed exception on call undefined method #1863
0.11.12 - 2019-03-24
- Compilation error for instanceof #1828
- Fixed
array_shift
behavior to mimicry PHP's "change by reference" #1831 - Fixed reference counting while changing object's properties that are arrays #1833
0.11.11 - 2019-02-26
- Objects are not traversable with
foreach
#1818 #1595 - Recursion for array_push on PHP 7 #1140
- Invalid array initialization #1159
0.11.10 - 2019-02-23
- Moved internal cache and logs to the user's home directory.
- On macOS Zephir will use
XDG
if it is possible, otherwise$HOME/Library
- On Windows Zephir will use
LOCALAPPDATA
if it is possible, otherwise home dir as a base path - In any other cases, e.g. Linux, BSD and so on, Zephir will use
XDG
if it is possible, otherwise$HOME/.local
and$HOME/.cache
- On macOS Zephir will use
- Per project cache used for temporary operations was moved to
%CWD%/.zephir/%VERSION%
where%CWD%
is the current working directory and%VERSION%
is the current Zephir version e.g.0.11.10-4a825b8
- Array of object as return type is reported to PHP as type, not array #1779
- Use namespace as a prefix for ini name #1604
- Fixed calling anonymous functions by resolving context #1751
- Fixed a bug when accessing super-global variables that do not exist (only for PHP >= 7.0 ) #1775
- Fixed incorrect behavior during work with ArrayAccess #1061, #1400
0.11.9 - 2019-01-15
- Fixed
zend_closure
declaration to reflect PHP 7.3 changes
0.11.8 - 2018-12-01
- Fixed compilation error with inheritance of prototype interfaces #1758
- Fixed compilation error when a new file is added or removed to the project #1776
0.11.7 - 2018-11-27
- The cache directory, formerly known as
.temp
, used for temporary operations was moved to the new.zephir
directory. The algorithm for calculating cache path is as follows:%CWD%/.zephir/%HASH%/cache/IR
where%CWD%
is the current working directory and%HASH%
means a hash calculated from the current Zephir version, environment and configuration - The compiler's messages was divided into streams. Thus, now it is possible to redirect compiler's
output as follows:
zephir generate 2> errors.log 1> /dev/null
- Fixed type hints for scalar arguments for PHP < 7.2 #1658
- Coloring the compiler messages in the terminal is temporarily disabled
- Fixed incorrect behavior of
func_get_arg
andfunc_get_args
functions for PHP 7.3
0.11.6 - 2018-11-19
0.11.4 - 2018-11-18
- Introduced a brand new CLI interface
- The preferred method of installation is to use the Zephir PHAR which can be downloaded from the most recent Github Release
- Added
--no-dev
option to force building the extension in production mode #1520 - Zephir development mode will be enabled silently if your PHP binary was compiled in a debug configuration #1520
- Added missed CLI option
--export-classes
to flag whether classes must be exported. If export-classes is enabled all headers are copied toinclude/php/ext
.
- Fixed regression introduced in the 0.10.12 related to
require
file using protocols #1713
0.11.3 - 2018-11-13
- Remove legacy installers and provide a common way to install Zephir
#1714. Supported installation strategies are:
- Install as a global application (using
composer global require
) - Install as a PHAR file. (this feature currently in the testing phase and not released officially)
- Install as a Git clone (using
git clone
andcomposer install
inside cloned project) - Install as a project's dependency (using
composer require
)
- Install as a global application (using
0.11.2 - 2018-11-11
- Introduced an ability to pack project into one
zephir.phar
file (for PHP 7.1 and later)
- Composer now is a mandatory dependency
- Improved Zephir's Compiler error reporting
- PHP 5.5 no longer supported
- Correct return types hint check
0.11.1 - 2018-10-19
- Initial support of PHP 7.3 (ported from the 0.10.x branch)
0.11.0 - 2018-08-05
- Add type hints for scalar arguments and return values in ZendEngine 3 1656
0.10.14 - 2018-11-20
- Fixed incorrect behavior of
func_get_arg
andfunc_get_args
functions for PHP 7.3 (backported from the upstream)
0.10.13 - 2018-11-18
- Fixed regression introduced in the 0.10.12 related to
require
file using protocols #1713 (backported from the upstream) - Fixed incorrect behavior of
require
statement for ZendEngine3 #1621 #1403 #1428 (backported from the upstream)
0.10.12 - 2018-10-19
- Initial support of PHP 7.3
0.10.11 - 2018-08-05
- Allow extension to be loaded prior to the tests
- Fixed Copy-On-Write violation for arrays zvals
- Fixed some testing settings 5deb64a
- Fixed casting resource to int (only ZendEngine 3) #1524