gsoc:2008

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
Last revisionBoth sides next revision
gsoc:2008 [2008/03/23 22:02] davidcgsoc:2008 [2008/07/20 18:18] – mid-term survey johannes
Line 23: Line 23:
  
  
-===== PECL, website improvements and Windows Build Support =====+ 
 +===== PECL, Website Improvements, Windows Build support improvements =====
 //Possible mentor: Pierre A. Joye, Elizabeth Marie Smith, Helgi Þormar Þorbjörnsson// //Possible mentor: Pierre A. Joye, Elizabeth Marie Smith, Helgi Þormar Þorbjörnsson//
  
-The current Windows build system only uses CVS snapshots. To improve the QA and overall quality of the PECL extensions, it would be nice to have release based binaries. Also, we could support on demand or automatic builds using a given set of CVS tags or branches (the snapshot already exists). The DLLs can then be distributed via the release packages, and then installed via the pecl channel.+This project is really two separate but related ideas.
  
-The web part consits in reorganizing the current PECL website in order to be first of all usable, solid, easy to maintain (using the pearweb structure and releasing strategies). +The first portion involves working on reorganizing the current PECL website in order to be first of all usable, solid, easy to maintain (using the pearweb structure and releasing strategies).  This requires nothing more than strong PHP skills, optionally some PEAR knowledge, and a desire to help make lives easier for PECL developers, and for people using PECL packages.  In addition to the reorganization improvements, there are additional features that would be nice to have on the site.
  
 +The second related issue is binary releases for PECL extensions.  Although currently PHP only provides Windows binaries, and only CVS snapshots, expanding this would help improve the distribution of PECL extensions. Also, supporting on demand or automatic builds using a given set of CVS tags or branches (the snapshot already exists). The DLLs (and perhaps even binaries for other architectures) can then be distributed via the release packages, and then installed via the pecl channel.
  
 See the [[http://pecl.php.net|PECL]] See the [[http://pecl.php.net|PECL]]
- 
- 
-===== Replace Bison parser with Lemon ===== 
-//Possible mentor: [[scottmac@php.net|Scott MacVicar]], [[helly@php.net|Marcus Boerger]]// 
- 
-Replace the current Bison parser with Lemon which is both thread safe and reentrant. The syntax also tends to reduce errors when defining the grammar. 
  
  
Line 51: Line 47:
 Make a tool to convert Zend bytecode into [[http://llvm.org|LLVM]] bitcode. In a first phase this could replace the Zend dispatcher/executor and in a 2nd phase it could perform some simple operations inline (while still relying on the Zend engine for non-trivial opcodes). Make a tool to convert Zend bytecode into [[http://llvm.org|LLVM]] bitcode. In a first phase this could replace the Zend dispatcher/executor and in a 2nd phase it could perform some simple operations inline (while still relying on the Zend engine for non-trivial opcodes).
 Benchmarking plus optimization opportunities exploration are a plus. Benchmarking plus optimization opportunities exploration are a plus.
 +
  
 ===== Algorithm Optimizations ===== ===== Algorithm Optimizations =====
Line 57: Line 54:
 PHP has some algorithms that aren't asymptotically optimal. E.g. some string handling functions are O(nk), although they could be implemented in O(n). Analysis of the current situation and implementation of better algorithms (along with many tests) are the job. PHP has some algorithms that aren't asymptotically optimal. E.g. some string handling functions are O(nk), although they could be implemented in O(n). Analysis of the current situation and implementation of better algorithms (along with many tests) are the job.
  
 +[NOTE: we have had MANY applications for this idea, it would be smart to submit another idea as well]
  
 ===== Implement Unicode into PHP 6 ===== ===== Implement Unicode into PHP 6 =====
Line 73: Line 71:
  
  
-===== Replace autoconf with CMake =====+ 
 + 
 +===== Replace auto* with CMake =====
 //Possible mentor: (it would rock to have other phpize/auto* master to do the convertion) and Pierre A. Joye can help for the CMake part. Elizabeth Smith can help on the Windows/MSVC stuff. Kitware will also participate// //Possible mentor: (it would rock to have other phpize/auto* master to do the convertion) and Pierre A. Joye can help for the CMake part. Elizabeth Smith can help on the Windows/MSVC stuff. Kitware will also participate//
  
Line 83: Line 83:
  
 See the [[http://www.cmake.org/Wiki/CMake|CMake Wiki]] for more information about CMake. See the [[http://www.cmake.org/Wiki/CMake|CMake Wiki]] for more information about CMake.
 +
 +[[http://news.php.net/php.internals/36209|Announce of the project on the PHP internals list]]
  
 ===== Build Infrastructure and macro bindings for writing extension in D  ===== ===== Build Infrastructure and macro bindings for writing extension in D  =====
Line 103: Line 105:
  
  
-===== Put Ilia's Optimizer in APC =====+ 
 +===== Make Ilia's Optimizer Production Ready =====
 //Possible mentor: Derick, Ilia.// //Possible mentor: Derick, Ilia.//
  
-APC features some optimizer interface, but there is actually very little optimizations done. Ilia has been working on an optimizer which needs to be tested, and cleaned up, and analyzed before it can be part of APC.+APC features some optimizer interface, but there is actually very little optimizations done. Ilia has been working on an optimizer which needs to be tested, and cleaned up, and analyzed before it can be part of APC. There is quite a bit of work to do here, including porting to PHP 5.3 (and HEAD). There are also other possible optimizations to be done. After working on this, you'll have a very good understanding of PHP's internals.
  
 ===== Rewrite the run-tests.php script ===== ===== Rewrite the run-tests.php script =====
-//Possible mentor: Sebastian.//+//Possible mentor: Sebastian, Travis.// 
 + 
 +**Note from Travis Swicegood:**  Why rewrite run-tests.php when it's already been done with the PHPT project.  See http://phpt.info for the project's Trac.  It still has room for improvement.  Parallel test processing is on the list for two major releases out (see http://phpt.info/ticket/12 for stubbed out info on how to do that in PHP), but if someone wants to implement it before then I'd be happy to help.  Multiple output support is already built-in, but new Reporters could definitely be added as could micro-benchmark support. 
  
 The run-tests.php script that is used to run PHP's suite of PHPT tests has grown over the years and needs to be refactored. Two areas of improvement include leveraging multi-core systems to run tests in parallel and support for micro-benchmarks in addition to tests. The run-tests.php script that is used to run PHP's suite of PHPT tests has grown over the years and needs to be refactored. Two areas of improvement include leveraging multi-core systems to run tests in parallel and support for micro-benchmarks in addition to tests.
Line 121: Line 127:
  
 ===== PhD: The PHP based Docbook renderer ===== ===== PhD: The PHP based Docbook renderer =====
-//Possible mentor: Hannes Magnusson.//+//Possible mentor: [[bjori@php.net|Hannes Magnusson]].//
  
 [[doc:phd|PhD]] is the application that is used to render both the online manual on [[http://www.php.net/manual|www.php.net]] and the [[http://php.net/download-docs|downloadable manual pages]]. [[doc:phd|PhD]] is the application that is used to render both the online manual on [[http://www.php.net/manual|www.php.net]] and the [[http://php.net/download-docs|downloadable manual pages]].
Line 135: Line 141:
  
 Just like in the Google Summer of Code 2007, proposals for PHPUnit (which participates under the umbrella of the PHP Project) projects can be submitted. As before, proposals of this kind are considered with a lower priority. Ideas can be found [[http://www.phpunit.de/wiki/Ideas|here]]. Just like in the Google Summer of Code 2007, proposals for PHPUnit (which participates under the umbrella of the PHP Project) projects can be submitted. As before, proposals of this kind are considered with a lower priority. Ideas can be found [[http://www.phpunit.de/wiki/Ideas|here]].
- 
- 
- 
- 
  
  
Line 171: Line 173:
  
  
-===== Anonymous functions and closures =====+ 
 +===== Anonymous functions and closures and other missing object oriented features =====
 //Possible mentor: [[helly@php.net|Marcus Boerger]]// //Possible mentor: [[helly@php.net|Marcus Boerger]]//
  
Line 179: Line 182:
   * [[http://php.markmail.org/search/?q=Christian+Seiler+PHP+Anonymous+functions#query:Christian%20Seiler%20PHP%20Anonymous%20functions+page:1+mid:6obs3u5466br2o6j+state:results|Patch by Christian Seiler]]   * [[http://php.markmail.org/search/?q=Christian+Seiler+PHP+Anonymous+functions#query:Christian%20Seiler%20PHP%20Anonymous%20functions+page:1+mid:6obs3u5466br2o6j+state:results|Patch by Christian Seiler]]
  
 +Before anyone takes on this idea, I suggest you contact the [[internals@lists.php.net|internals]] mail list or directly correspond with the two authors to get more information about the current state.
 +
 +Other features missing from PHP's object orientation include delegates, return type hinting and property type hinting - as well as discrete property accessors, as opposed to <nowiki>__get/__set</nowiki> family of magic handlers. 
 +
 +
 +===== SimpleTest : web browser and web testing in PHP =====
 +//Possible mentor: [[marcus@lastcraft.com|Marcus Baker]], [[tswicegood@gmail.com|Travis Swicegood]], [[perrick@noparking.net|Perrick Penet]].//
 +
 +SimpleTest participates under the umbrella of the PHP Project : its ideas - mainly related to its PHP web browser - can be submitted. "JavaScript powered PHP browser", "Switchable HTML parsers", "Web Form Fuzzer" and others can be found directly on the [[http://simpletest.org/en/ideas.html|SimpleTest ideas web page]].
 +
 +
 +
 +
 +
 +
 +
 +===== XDebug Profiling Web Frontend =====
 +//Possible mentor: [[davidc@php.net|David Coallier]], [[derick@php.net|Derick Rethans]]//
 +
 +Written by Derick Rethans, XDebug is the most powerful tool to help every developers and debuggers in the debugging and profiling of their algorithms, applications, classes, methods, anything related to PHP.
 +
 +XDebug can generate profiler output files that are easy to load with KCacheGrind and WinCacheGrind. However, many people do not have that installed, and all the OSX people have no tool to run the profiled file (Unless they install KDE on X and then install KCacheGrind). 
 +
 +A very elegant and simple way to resolve this "cross platform" issue is to create a Web Interface that would behave just like KCacheGrind but would not require any system installation (else than the PHP/JS/HTML/etc code itself)
 +
 +This project of course involves the creation of graphs, mathematical calculations, ajax, and of course PHP algorithms in order to display the data in a very accurate way.
 +
 +You can get start by [[http://xdebug.org|getting XDebug]] and trying it out. (See the [[http://xdebug.org/docs/profiler|profiler]] section)
 +
 +====== Evalution summary ======
 +
 +There's a summary of the GSoC mid-term evaluation survey results on http://schlueters.de/~johannes/GSoC-Survey/summary.ods
gsoc/2008.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1