rfc:remove_zend_api

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:remove_zend_api [2009/04/05 19:33] – linkify pbiggarrfc:remove_zend_api [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Removal of the Zend API ====== ====== Removal of the Zend API ======
-  * Version: 1.0+  * Version: 1.1
   * Date: 2009-03-27   * Date: 2009-03-27
   * Author: Paul Biggar <paul.biggar@gmail.com>   * Author: Paul Biggar <paul.biggar@gmail.com>
-  * Status: revising after v1.0+  * **Status: Brainstorming: [[http://wiki.php.net/rfc/remove_zend_api/scratchpad]]**
  
 ===== Introduction ===== ===== Introduction =====
  
-This RFC provides a rationale for removing external access to the Zend Engine (aka remove the Zend API).+Currently, PHP's interpreter, the Zend Engine, provides access to its internals via the Zend API. This RFC provides a rationale for this access, by removing the Zend API.
  
-See also php_native_interface.+This RFC does not describe how to remove access, and what to replace it with. That is described separately, in [[php_native_interface]]. The goals of this RFC are predicated on achieving the goals of [[php_native_interface]].
  
  
Line 28: Line 28:
 The main problem with it is that it constrains the implementation of the Zend Engine. The Zend API creates a tight coupling between the Zend Engine and its clients, restricting greatly our ability to change the Zend Engine. By requiring backwards compatability with the Zend Engine, we are ensuring that the Zend Engine can only be modified in minor ways. This holds the Zend Engine to design decisions made nearly 10 years ago, and prevents PHP from getting much faster in the long term. The main problem with it is that it constrains the implementation of the Zend Engine. The Zend API creates a tight coupling between the Zend Engine and its clients, restricting greatly our ability to change the Zend Engine. By requiring backwards compatability with the Zend Engine, we are ensuring that the Zend Engine can only be modified in minor ways. This holds the Zend Engine to design decisions made nearly 10 years ago, and prevents PHP from getting much faster in the long term.
  
-The Zend API also makes it difficult to write PHP extensions. Although most of the API is not terribly difficult to work with, concepts like copy-on-write, change-on-write sets, and separation appear to be tricky concepts for many people. The only documentation is Sara Golemon's book, and the actual code is not well commented. Although zend_parse_parameters has simplified the parameter parsing somewhat, it seems that a simpler way of writing extensions would be welcome.+The Zend API also makes it difficult to write PHP extensions. Although most of the API is not terribly difficult to work with, concepts like copy-on-write, change-on-write sets, and separation appear to be tricky concepts for many people. The only documentation is Sara Golemon's book, and the actual code is not well commented. Although //zend_parse_parameters()// has simplified the parameter parsing somewhat, it seems that a simpler way of writing extensions would be welcome.
  
 A number of other PHP implementations exist, such as IBM's Project Zero, Phalanger, Roadsend, Quercus and phc. Many of these projects find it very difficult to re-use PHP's standard libraries. They have chosen different strategies: A number of other PHP implementations exist, such as IBM's Project Zero, Phalanger, Roadsend, Quercus and phc. Many of these projects find it very difficult to re-use PHP's standard libraries. They have chosen different strategies:
Line 37: Line 37:
  
  
-A proposed replacement for the Zend API is described in php_native_interace. However, to actually solve this issue, a decision must be made to not only use the PHP Native Interface to provide an interface between extensions and implementations, but also to disallow any external access to the Zend API. 
  
  
 +===== How to proceed ======
  
  
-===== Project Plan ===== +A proposed replacement for the Zend API is described in [[php_native_interface]]However, to actually solve this issuea decision must be made to not only use the PHP Native Interface to provide an interface between extensions and implementationsbut also to disallow any external access to the Zend API.
- +
-This is a simple designIn realityit would need to be prototyped to determine whether this makes sense for every use caseand that there would be little sacrificed to make it work. The work on it should probably progress in roughly the following order: +
- +
-  * Follow the Project Plan in [[php_native_interface]] +
-  * Convert all PHP extensions +
- +
- +
-Naturallybefore the last step it will be necessary to get consensus from other internals developers that this is a good idea.+
  
 +This RFC is a means of achieving concensus on removing the Zend API in PHP 6, predicated on first achieving the goals in [[php_native_interface]].
  
  
rfc/remove_zend_api.1238960021.txt.gz · Last modified: 2017/09/22 13:28 (external edit)