gsoc:2009:api

This is an old revision of the document!


Abstract Extension API and Dependency Interface

Details

  • Student: Varuna Jayasiri
  • Mentor: shire
  • Timezone: GMT +5:30 (Varuna)
  • Mailing list: pecl-dev@lists.php.net

Abstract

The objective of this project is to develop functionality for PHP that will allow extensions to register a set of functions as a versioned API, since PHP does not currently handle interdependencies among PHP extensions well, which leads to various problems. This would also solve the current problem of extension load order.

Timeline

20th April to 23rd May – Community bonding period

  • Getting more familiarized with PHP core and Zend
  • Submitting the proposed API and design for suggestions
  • Getting ideas from the developer community on how this should be developed
  • Finalizing the design

23rd May to 1st July – Implementing most important features

  • The API registration and retrieval component will be developed
  • The interface for setting up the callback function will not be implemented at this stage, instead a simpler interface (e.g. php_get_api) would be provided
  • Code written will be unit tested
  • This would be a standard to be distributed for testing

1st July to 10th July – Testing the implemented section

  • The implemented features will be tested with help from the community
  • Any bugs encountered will be fixed
  • Any suggestions for improvements will be considered and implemented

10th July to 1st August – Completing the implementation of all features

  • All the functionality described above will be completed
  • Code written will be unit tested
  • Behavior of the component in various scenarios with interdependencies among extensions, will be tested thoroughly

1st August to 4th August – Buffer

  • Small buffer period so that any additional things that come up in the way could be implemented or if time taken for implementation exceeds time estimated
  • The completed extension API and dependency interface will be made available for the developer community
  • Any improvements suggested will be considered and implemented

4th August to 17th August – Testing

  • Any bug fixes will be implemented
  • All documentations will be completed
  • It will be ready for distribution at the end of testing

Progress

12th May
  • Setup the development environment
  • Working on the GIT repository - git://github.com/vpj/PHP-Extension-API.git
  • Made a few changes to the proposed design
    1. All the code will be a part of zend and hence all function will be prefixed with zend_ and not php_
    2. Prefixed all the functions with zend_ext_api instead of function names like php_register_api
15th May
  • Discussing how different versions of API's should be maintained
  • Coded the basic functionality
    1. Memory leaks and exception handling were not considered (TODO's were added to make sure these will be addressed later)
23rd May
  • Two hashtables are used - one to store the API's and the other to store the available versions
  • A simple list is used to store the set of versions available
  • Versions are represented in major.minor[.build[.revision]] or major.minor[.maintenance[.build]] formats; i.e. “x.x.x.x”
    1. These are converted to a 32 bit integer for indexing
    2. Bit masks could be used to identify ranges of versions easily
gsoc/2009/api.1243180628.txt.gz · Last modified: 2017/09/22 13:28 (external edit)