ideas:php6:engine

Differences

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

Link to this comparison view

Next revision
Previous revision
ideas:php6:engine [2014/03/05 13:48] – created jpauliideas:php6:engine [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 1: Line 1:
-==== PHP6 ZendEngine thoughts ====+==== PHP 7 ZendEngine thoughts ====
  
 Note: Note:
Line 10: Line 10:
   * number of contributors   * number of contributors
   * timetable (2 years development)   * timetable (2 years development)
- 
- 
-Here is a picture I once designed, representing ZendEngine 2.3: 
- 
-{{http://julien-pauli.developpez.com/tutoriels/php/internals/presentation/images/zendengine.png}} 
  
   * Cleanup API and dead code   * Cleanup API and dead code
Line 20: Line 15:
     * Clear conventions between macros and functions     * Clear conventions between macros and functions
     * Clear those     * Clear those
 +
 +  * Update dependencies.
 +    * Notably support Bison 3.0+.
  
   * Define a true C/C++ API   * Define a true C/C++ API
Line 27: Line 25:
   * Keep the extension-based build. Smaller pieces, better code maintaining   * Keep the extension-based build. Smaller pieces, better code maintaining
     * Merge SPL to the engine (at least, deep engine related stuff in SPL, such as the exception classes, the iterators and the functions like class_parents())     * Merge SPL to the engine (at least, deep engine related stuff in SPL, such as the exception classes, the iterators and the functions like class_parents())
 +    * Rework Phar. Phar has too many engine hooks and voodoos, this must be rethought
  
   * Ehance extensions power   * Ehance extensions power
     * Keep distinction between zend extensions and php extensions ? https://wiki.php.net/internals/extensions     * Keep distinction between zend extensions and php extensions ? https://wiki.php.net/internals/extensions
-    * Use of other engine hooks ? other VM hooks ?+    * Use of other engine hooks ? other VM hooks ? (object store hooks, hashtable hooks ..? ) 
 +    * Remove old PHP4 support in ext code 
 +    * Refactor error handler for extensions to be able to stack them like zend_execute
  
   * VM   * VM
     * Executor rewrite     * Executor rewrite
-      * JIT executor+      * JIT executor (http://llvm.org/devmtg/2008-08/Lopes_PHP-JIT-InTwoDays.pdf)
       * Threaded VM       * Threaded VM
          * IO threads ?          * IO threads ?
Line 45: Line 46:
     * OPCache integration     * OPCache integration
     * OPcode binary data based compiler (phalanger, phpcompiler.org, bcompiler, roadsend)     * OPcode binary data based compiler (phalanger, phpcompiler.org, bcompiler, roadsend)
 +    * Create a flag to prevent separation of arguments in function calls ?
  
   * Arrays/Objects struct data sharing   * Arrays/Objects struct data sharing
Line 57: Line 59:
     * Improve DTrace usage     * Improve DTrace usage
     * Give Linux process-probes a try (SystempTap, perf, OProfile)     * Give Linux process-probes a try (SystempTap, perf, OProfile)
 +    * Add more debug level (we already have bunch of macros, such as "AGRESSIVE_DEBUG")
 +
 +  * See also
 +    * [[ideas/php6|Global PHP6 ideas]]
 +    * http://hg.python.org/cpython/file/
 +    * http://morepypy.blogspot.fr/2009/03/applying-tracing-jit-to-interpreter.html
ideas/php6/engine.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1