<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/php-git.git/sapi/phpdbg, branch master</title>
<subtitle>git.php.net: repository/php-src.git
</subtitle>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/'/>
<entry>
<title>Change Zend Stream API to use zend_string* instead of char*.</title>
<updated>2021-03-16T17:31:36+00:00</updated>
<author>
<name>Dmitry Stogov</name>
<email>dmitry@zend.com</email>
</author>
<published>2021-03-16T17:31:36+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=c732ab400af92c54eee47c487a56009f1d79dd5d'/>
<id>c732ab400af92c54eee47c487a56009f1d79dd5d</id>
<content type='text'>
This allows to eliminate re-calculation of string lenght and hash value.
See the detailed list of changes in UPGRADING.INTERNALS.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows to eliminate re-calculation of string lenght and hash value.
See the detailed list of changes in UPGRADING.INTERNALS.
</pre>
</div>
</content>
</entry>
<entry>
<title>Reference dynamic functions through dynamic_defs</title>
<updated>2021-03-01T10:35:54+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>nikita.ppv@gmail.com</email>
</author>
<published>2020-05-18T13:46:06+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=47a2e5c785cdba71e003d9ad77cb799d4be88806'/>
<id>47a2e5c785cdba71e003d9ad77cb799d4be88806</id>
<content type='text'>
Currently, dynamically declared functions and closures are inserted
into the function table under a runtime definition key, and then later
possibly renamed. When opcache is not used and a file containing a
closure is repeatedly included, this leads to a very large memory leak,
as the no longer needed closure declarations will never be freed
(https://bugs.php.net/bug.php?id=76982).

With this patch, dynamic functions are instead stored in a
dynamic_func_defs member on the op_array, which opcodes reference
by index. When the parent op_array is destroyed, the dynamic_func_defs
it contains are also destroyed (unless they are stilled used elsewhere,
e.g. because they have been bound, or are used by a live closure). This
resolves the fundamental part of the leak, though doesn't completely
fix it yet due to some arena allocations.

The main non-obvious change here is to static variable handling:
We can't destroy static_variables_ptr in destroy_op_array, as e.g.
that would clear the static variables in a dynamic function when
the op_array containing it is destroyed. Static variable destruction
is separated out for this reason (we already do static variable
destruction separately for normal functions, so we only need to
handle main scripts).

Closes GH-5595.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, dynamically declared functions and closures are inserted
into the function table under a runtime definition key, and then later
possibly renamed. When opcache is not used and a file containing a
closure is repeatedly included, this leads to a very large memory leak,
as the no longer needed closure declarations will never be freed
(https://bugs.php.net/bug.php?id=76982).

With this patch, dynamic functions are instead stored in a
dynamic_func_defs member on the op_array, which opcodes reference
by index. When the parent op_array is destroyed, the dynamic_func_defs
it contains are also destroyed (unless they are stilled used elsewhere,
e.g. because they have been bound, or are used by a live closure). This
resolves the fundamental part of the leak, though doesn't completely
fix it yet due to some arena allocations.

The main non-obvious change here is to static variable handling:
We can't destroy static_variables_ptr in destroy_op_array, as e.g.
that would clear the static variables in a dynamic function when
the op_array containing it is destroyed. Static variable destruction
is separated out for this reason (we already do static variable
destruction separately for normal functions, so we only need to
handle main scripts).

Closes GH-5595.
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve SPL directory and stat() cache using zend_srting* instead of char*</title>
<updated>2021-02-25T23:28:46+00:00</updated>
<author>
<name>Dmitry Stogov</name>
<email>dmitry@zend.com</email>
</author>
<published>2021-02-25T23:28:46+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=13e4ce386bb7257dbbe3167b070382ea959ec763'/>
<id>13e4ce386bb7257dbbe3167b070382ea959ec763</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'PHP-8.0'</title>
<updated>2021-02-24T20:31:03+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>nikita.ppv@gmail.com</email>
</author>
<published>2021-02-24T20:31:03+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=4a8b93425dae191424410ed69f9ccc68faa5b118'/>
<id>4a8b93425dae191424410ed69f9ccc68faa5b118</id>
<content type='text'>
* PHP-8.0:
  Fix potential file collision in dom tests
  Fix bug #80757 (Exit code is 0 when could not open file)
  Update NEWS
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* PHP-8.0:
  Fix potential file collision in dom tests
  Fix bug #80757 (Exit code is 0 when could not open file)
  Update NEWS
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'PHP-7.4' into PHP-8.0</title>
<updated>2021-02-24T19:07:22+00:00</updated>
<author>
<name>Felipe Pena</name>
<email>felipe@php.net</email>
</author>
<published>2021-02-24T19:07:22+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=aaea81de7cd9e5c3c4fd5620cf6d1e5b6195ef32'/>
<id>aaea81de7cd9e5c3c4fd5620cf6d1e5b6195ef32</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix bug #80757 (Exit code is 0 when could not open file)</title>
<updated>2021-02-24T18:50:27+00:00</updated>
<author>
<name>Felipe Pena</name>
<email>felipe@php.net</email>
</author>
<published>2021-02-24T18:17:27+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=3ec37a74a27261193155228081ec1bf6df35868e'/>
<id>3ec37a74a27261193155228081ec1bf6df35868e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve class entry generation</title>
<updated>2021-02-16T12:09:56+00:00</updated>
<author>
<name>Máté Kocsis</name>
<email>kocsismate@woohoolabs.com</email>
</author>
<published>2021-02-15T21:14:36+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=bf0f6aaf18895c979dcf61ecb26bdd58a238a69b'/>
<id>bf0f6aaf18895c979dcf61ecb26bdd58a238a69b</id>
<content type='text'>
Related to GH-6701
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Related to GH-6701
</pre>
</div>
</content>
</entry>
<entry>
<title>Enable class entry generation for sapi extensions</title>
<updated>2021-02-14T11:03:48+00:00</updated>
<author>
<name>Máté Kocsis</name>
<email>kocsismate@woohoolabs.com</email>
</author>
<published>2021-02-14T11:03:48+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=31088eef456679b0ead6fe955dded0e9a38928da'/>
<id>31088eef456679b0ead6fe955dded0e9a38928da</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'PHP-8.0'</title>
<updated>2021-02-02T15:47:03+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>nikita.ppv@gmail.com</email>
</author>
<published>2021-02-02T15:47:03+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=d281cd8b4bc8193b4a8fe9d7bfa1b23936f7adab'/>
<id>d281cd8b4bc8193b4a8fe9d7bfa1b23936f7adab</id>
<content type='text'>
* PHP-8.0:
  Update year to 2021
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* PHP-8.0:
  Update year to 2021
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'PHP-7.4' into PHP-8.0</title>
<updated>2021-02-02T15:46:52+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>nikita.ppv@gmail.com</email>
</author>
<published>2021-02-02T15:46:52+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/php-git.git/commit/?id=f1cf5534370c5e82d0e3117c65e04840112ee44c'/>
<id>f1cf5534370c5e82d0e3117c65e04840112ee44c</id>
<content type='text'>
* PHP-7.4:
  Update year to 2021
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* PHP-7.4:
  Update year to 2021
</pre>
</div>
</content>
</entry>
</feed>
