rfc:string-size_t:progress

Differences

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

Link to this comparison view

rfc:string-size_t:progress [2013/11/13 19:01]
ab [New datatypes]
rfc:string-size_t:progress [2014/01/29 01:06] (current)
ab
Line 1: Line 1:
-====== Quick start ====== +[[https://​wiki.php.net/​rfc/​size_t_and_int64 | The RFC page]] 
- +\\ \\  
-The feature branch is [[http://​git.php.net/?​p=php-src.git;​a=shortlog;​h=refs/​heads/​str_size_and_int64]] +[[http://​git.php.net/?​p=php-src.git;​a=shortlog;​h=refs/​heads/​str_size_and_int64 ​| The feature branch ​]] 
- +\\ 
-Currently int64 support is disabled by default, size_t support is enabled by default +
- +
-  * to build with size_t and int64 support use --enable-zint64 , size_t is enabled by default +
-  * to build without size_t and int64 support, use --enable-zstrlen , int64 is disabled by default +
- +
-==== Relevant headers ==== +
- +
-  * Zend/​zend_types.h +
-  * Zend/​zend_int.h +
-  * Zend/​zend_stream.h +
-  * main/​php_stream.h +
- +
-==== New datatypes/​functions ==== +
- +
-  * zend_str_size has to be used for all the string sizes +
-  * zend_int_t, zend_uint_t are to be used instead of long and ulong +
-  * zend_off_t should be used instead of off_t +
-  * zend_stat_t,​ php_int_t should be used instead of "​struct stat"​ +
-  * zend_fstat(),​ zend_stat_fn() macros are suitable to handle the *_stat_t types +
- +
-**BE AWARE OF WHAT size_t IS, READ SOME DOC BEFORE STARTING TO AVOID TRIVIAL MISTAKES** +
-==== New macros ==== +
- +
-  * Z_STRSIZE is the replacement for Z_STRLEN +
-  * ZEND_INT_MAX is the replacement for LONG_MAX, as well ZEND_UINT_MAX,​ ZEND_SIZE_MAX for the corresponding old macros +
- +
-==== Accepting values from userland with zend_parse_parameters() ==== +
- +
-  * "​S"​ to accept string argument, the length has to be declared as zend_str_size,​ to replace the string length related variables with size_t, the appropriate macros from Zend/​zend_types.h should be used (zend_str_size_int,​ zend_str_size_long,​ etc.) +
-  * "​P"​ is the replacement for "​p"​ +
-  * "​i"​ to accept integer argument, the internal var has to be declared as php_int_t (inside PHP) or zend_int_t (inside Zend) +
-  * "​I"​ to accept integer argument with range check, the internal var has to be declared as php_int_t (inside PHP) or zend_int_t (inside Zen +
- +
  
 +`
 ====== Progress ====== ====== Progress ======
  
 Initial work is done by ircmaxell, with that it compiles on linux and windows. Initial work is done by ircmaxell, with that it compiles on linux and windows.
  
-^ Area                ^ Assigned ​      ^ Status size_t ​        ^ Status int64      ^ +^ Area                ^ Assigned ​      ^ Status size_t ​        ^ Status int64      ​^ 64 bit/​size_t/​other issues
-| Zend                | weltling ​      | done                  | in progress ​     ​+| Zend                | weltling ​      | done                  | done             ​| ​
-| TSRM                | weltling ​      | done                  | in progress ​     ​+| TSRM                | weltling ​      | done                  | done             ​| ​
-| main                | weltling ​      | done                  | in progress ​     ​+| main                | weltling ​      | done                  | done             ​| ​
-| sapi/​aolserver ​     |                | not started ​          | not started ​     | +| sapi/​aolserver ​     |                | not started ​          | not started ​     ​
-| sapi/​apache ​        ​| ​               | not started ​          | not started ​     | +| sapi/​apache ​        ​| ​               | not started ​          | not started ​     ​
-| sapi/​apache2filter ​ |                | not started ​          | not started ​     | +| sapi/​apache2filter ​ |                | not started ​          | not started ​     ​
-| sapi/​apache2handler |                | not started ​          not started ​     ​+| sapi/​apache2handler |                | done                  | done             | | 
-| sapi/​apache_hooks ​  ​| ​               | not started ​          | not started ​     | +| sapi/​apache_hooks ​  ​| ​               | not started ​          | not started ​     ​
-| sapi/​caudium ​       |                | not started ​          | not started ​     | +| sapi/​caudium ​       |                | not started ​          | not started ​     ​
-| sapi/​cgi ​           |                not started ​          not started ​     ​+| sapi/​cgi ​           | weltling ​      done                  | done             | | 
-| sapi/​cli ​           |                | done                  | in progress ​     ​+| sapi/​cli ​           |                | done                  | done             ​| ​
-| sapi/​continuity ​    ​| ​               | not started ​          | not started ​     | +| sapi/​continuity ​    ​| ​               | not started ​          | not started ​     ​
-| sapi/​embed ​         |                | not started ​          not started ​     | +| sapi/​embed ​         |                | done                  ​done      
-| sapi/​fpm ​           |                | not started ​          | not started ​     | +| sapi/​fpm ​           |                | not started ​          | not started ​     ​
-| sapi/​isapi ​         |                | not started ​          | not started ​     | +| sapi/​isapi ​         |                | not started ​          | not started ​     ​
-| sapi/​litespeed ​     |                | not started ​          | not started ​     | +| sapi/​litespeed ​     |                | not started ​          | not started ​     ​
-| sapi/​milter ​        ​| ​               | not started ​          | not started ​     | +| sapi/​milter ​        ​| ​               | not started ​          | not started ​     ​
-| sapi/​nsapi ​         |                | not started ​          | not started ​     | +| sapi/​nsapi ​         |                | not started ​          | not started ​     ​
-| sapi/​phttpd ​        ​| ​               | not started ​          | not started ​     | +| sapi/​phttpd ​        ​| ​               | not started ​          | not started ​     ​
-| sapi/​pi3web ​        ​| ​               | not started ​          | not started ​     | +| sapi/​pi3web ​        ​| ​               | not started ​          | not started ​     ​
-| sapi/​roxen ​         |                | not started ​          | not started ​     | +| sapi/​roxen ​         |                | not started ​          | not started ​     ​
-| sapi/​tests ​         |                | not started ​          | not started ​     | +| sapi/​tests ​         |                | not started ​          | not started ​     ​
-| sapi/​thttpd ​        ​| ​               | not started ​          | not started ​     | +| sapi/​thttpd ​        ​| ​               | not started ​          | not started ​     ​
-| sapi/​tux ​           |                | not started ​          | not started ​     | +| sapi/​tux ​           |                | not started ​          | not started ​     ​
-| sapi/​webjames ​      ​| ​               | not started ​          | not started ​     | +| sapi/​webjames ​      ​| ​               | not started ​          | not started ​     ​
-                    ​|                | not started ​          not started ​     | +sapi/​phpdbg ​        |                | done                 done      | | 
-| ext/                |                |                       ​| ​                 | +|                     ​| ​               |            |       ​| ​
-|   ​bz2 ​              ​| ​               not started ​          not started ​     ​+| ext/                |                |                       ​| ​                 ​| | 
-|   ​calendar ​         |                not started ​          not started ​     ​+|   ​bcmath ​           | weltling ​      | done                  | done               ​| ​
-|   ​com_dotnet ​       |                not started ​          not started ​     ​+|   ​bz2 ​              ​| ​weltling ​      done                  ​done             | integer overflows with bz2 filter ​
-|   ​ctype ​            ​| ​               | not started ​          not started ​     | +|   ​calendar ​         | weltling ​      done                  | done               | | 
-|   ​curl ​             |                not started ​          not started ​     ​+|   ​com_dotnet ​       | weltling ​      done                  | done             | | 
-|   ​date ​             |                | done                  | almost ​done      +|   ​ctype ​            ​| ​               | done                  ​done      
-|   ​dba ​              ​| ​               not started ​          not started ​     | +|   ​curl ​             | weltling ​      done                  | done             | | 
-|   ​dom ​              ​| ​               not started ​          not started ​     ​+|   ​date ​             |                | done                  | done             | 
-|   ​enchant ​          ​| ​               not started ​          not started ​     ​+|   ​dba ​              ​| ​weltling ​      done                  ​done      
-|   ​ereg ​             |                | not started ​          not started ​     ​+|   ​dom ​              ​| ​weltling ​      done                  ​done             | possible libxml overflows ​
-|   ​exif ​             |                | done                  | not started ​     ​+|   ​enchant ​          ​| ​weltling ​      done                  | done             | | 
-|   ​fileinfo ​         |                not started ​          not started ​     ​+|   ​ereg ​             |                | done                  | done             | | 
-|   ​filter ​           |                not started ​          not started ​     ​+|   ​exif ​             | weltling ​      | done                  | done             | size_t vs. int overflows ​
-|   ​ftp ​              ​| ​               not started ​          not started ​     ​+|   ​fileinfo ​         | weltling ​      done                  ​done             ​|  ​
-|   ​gd ​               |                not started ​          not started ​     ​+|   ​filter ​           | weltling ​      done                  | done             | | 
-|   ​gettext ​          ​| ​               not started ​          not started ​     ​+|   ​ftp ​              ​| ​weltling ​      done                  | done             | | 
-|   ​gmp ​              ​| ​               not started ​          not started ​     ​+|   ​gd ​               | weltling ​      done                  ​done             | integer overflows with libgd 
-|   ​hash ​             |                | not started ​          not started ​     ​+|   ​gettext ​          ​| ​weltling ​      done                  ​done             | integer overflows with libintl ​
-|   ​iconv ​            | weltling ​      | done                  | not started ​     ​+|   ​gmp ​              ​| ​weltling ​      done                  ​done             | uncritical int overflows with mpir 
-|   ​imap ​             |                | not started ​          not started ​     ​+|   ​hash ​             |                | done                  ​done             | many algos use 32 bit arithmetic only 
-|   ​interbase ​        ​| ​               | not started ​          not started ​     ​+|   ​iconv ​            | weltling ​      | done                  | done             ​| ​
-|   ​intl ​             |                | done, req review ​     ​not started ​     ​+|   ​imap ​             |                | done                  ​done             | basic fix yet, need more tests 
-|   ​json ​             |                not started ​          not started ​     | +|   ​interbase ​        ​| ​               | done                  ​done             | untested! ​
-|   ​ldap ​             |                not started ​          not started ​     ​+|   ​intl ​             | weltling ​      | done                  done             | ICU int32 vs PHP int64 
-|   ​libxml ​           | weltling ​      ​| ​in progress ​          not started ​     ​+|   ​json ​             | weltling ​      done                  ​done      
-|   ​mbstring ​         |                | done                  | not started ​     ​+|   ​ldap ​             | weltling ​      done                  ​done             | some int overlows with openldap, need more testing ​
-|   ​mcrypt ​           |                not started ​          not started ​     ​+|   ​libxml ​           | weltling ​      ​| ​done                  ​done             | integer overflows with libxml ​
-|   ​mssql ​            ​| ​               | not started ​          | not started ​     | +|   ​mbstring ​         |                | done                  | done             | integer overflows with libmbfl and co. 
-|   ​mysql ​            ​| ​               not started ​          not started ​     ​+|   ​mcrypt ​           | weltling ​      done                  ​done             | integer overflows with libmcrypt ​
-|   ​mysqli ​           |                not started ​          not started ​     ​+|   ​mssql ​            ​| ​               | done           | done      | untested! ​
-|   ​mysqlnd ​          ​| ​               not started ​          not started ​     ​+|   ​mysql ​            ​| ​weltling ​      done                  ​done             | see mysqlnd ​
-|   ​oci8 ​             |                not started ​          not started ​     ​+|   ​mysqli ​           | weltling ​      done                  ​done             | see mysqlnd ​
-|   ​odbc ​             |                not started ​          | not started ​     ​+|   ​mysqlnd ​          ​| ​weltling ​      done                  ​done             | need more testing ​
-|   ​opcache ​          ​| ​               | not started ​          not started ​     ​+|   ​oci8 ​             | weltling ​      done                  ​done               | need review ​
-|   ​openssl ​          ​| ​               not started ​          not started ​     ​+|   ​odbc ​             | weltling ​      done                  | done             | not tested on win64, 64 bit access driver not available ​
-|   ​pcntl ​            ​| ​               | not started ​          not started ​     ​+|   ​opcache ​          ​| ​               | done                  ​done             | need review ​
-|   ​pcre ​             |                | done                  | in progress ​     ​+|   ​openssl ​          ​| ​bukka          ​done                  ​done             | [[https://​github.com/​php/​php-src/​pull/​536]] merged ​
-|   ​pdo ​              ​| ​               not started ​          not started ​     ​+|   ​pcntl ​            ​| ​               | done                  | done             | | 
-|   ​pdo_dblib ​        ​| ​               | not started ​          not started ​     | +|   ​pcre ​             |                | done                  | done             ​| ​
-|   ​pdo_mysql ​        ​| ​               not started ​          not started ​     ​+|   ​pdo ​              ​| ​weltling ​      done                  ​done             | reviews reqiered ​
-|   ​pdo_oci ​          ​| ​               not started ​          not started ​     ​+|   ​pdo_dblib ​        ​| ​               | done                  ​done             | untested! | 
-|   ​pdo_odbc ​         |                not started ​          not started ​     ​+|   ​pdo_firebird ​     | weltling ​      | done                 | done              | untested! ​
-|   ​pdo_pgsql ​        ​| ​               not started ​          not started ​     ​+|   ​pdo_mysql ​        ​| ​weltling ​      done                  ​done             | see ext/​pdo ​
-|   ​pdo_sqlite ​       |                not started ​          not started ​     ​+|   ​pdo_oci ​          ​| ​weltling ​      done                  ​done             | need review ​
-|   ​pgsql ​            ​| ​               not started ​          not started ​     ​+|   ​pdo_odbc ​         | weltling ​      done                 done              | need better x64 tests 
-|   ​phar ​             |                not started ​          not started ​     ​+|   ​pdo_pgsql ​        ​| ​weltling ​      done                  ​done             | see ext/​pdo ​
-|   ​posix ​            ​| ​               | done                 ​not started ​     ​+|   ​pdo_sqlite ​       | weltling ​      done                  ​done             | see ext/​pdo ​
-|   ​pspell ​           |                | not started ​          not started ​     | +|   ​pgsql ​            ​| ​weltling ​      done                  | done             | | 
-|   ​readline ​         |                | not started ​          not started ​     ​+|   ​phar ​             | weltling ​      done                  ​done             | plenty of int32 types in use 
-|   ​recode ​           |                | not started ​          | not started ​     | +|   ​posix ​            ​| ​               | done                  | done     | | 
-|   ​reflection ​       |                | not started ​          not started ​     ​+|   ​pspell ​           |                | done                  ​done      
-|   ​session ​          ​| ​               | not started ​          not started ​     ​+|   ​readline ​         |                | done                  | done     | | 
-|   ​shmop ​            ​| ​               not started ​          not started ​     ​+|   ​recode ​           |                | done           | done      
-|   simpexml ​         ​| weltling ​      ​| ​in progress ​          not started ​     ​+|   ​reflection ​       |                | done                  | done             | | 
-|   ​skeleton ​         |                | not started ​          not started ​     ​+|   ​session ​          ​| ​               | done                  | done             | | 
-|   ​snmp ​             |                not started ​          not started ​     ​+|   ​shmop ​            ​| ​weltling ​      done                 | done     | | 
-|   ​soap ​             |                not started ​          not started ​     ​+|   simplexml ​        | weltling ​      ​| ​done                  | done             | | 
-|   ​sockets ​          ​| ​               not started ​          not started ​     ​+|   ​skeleton ​         |                | done                  | done             | | 
-|   ​spl ​              ​| ​               not started ​          almost ​done      +|   ​snmp ​             | weltling ​      done                  ​done             | need more testing ​
-|   ​sqlite3 ​          ​| ​               not started ​          not started ​     ​+|   ​soap ​             | weltling ​      done                  ​done             | possible libxml overflows ​
-|   ​standard ​         |                | done                  | in progress ​     ​+|   ​sockets ​          ​| ​weltling ​       ​done                 | done             | | 
-|   ssyabse_ct ​       ​|                | not started ​          not started ​     ​+|   ​spl ​              ​| ​weltling ​      done                  ​| done             | 
-|   ​sysvmsg ​          ​| ​               | not started ​          | not started ​     | +|   ​sqlite3 ​          ​| ​weltling ​      done                 | done              ​| | 
-|   ​sysvsem ​          ​| ​               | not started ​          | not started ​     | +|   ​standard ​         |                | done                  | done             ​| ​
-|   ​sysvshm ​          ​| ​               | not started ​          | not started ​     | +|   sybase_ct ​        |                | done                 | done          ​| | 
-|   ​tidy ​             |                not started ​          not started ​     ​+|   ​sysvmsg ​          ​| ​               | done           | done      
-|   ​tokenizer ​        ​| ​               not started ​          not started ​     | +|   ​sysvsem ​          ​| ​               | done           | done      
-|   ​wddx ​             |                not started ​          not started ​     ​+|   ​sysvshm ​          ​| ​               | done           | done      
-|   ​xml ​              ​| ​               not started ​          not started ​     ​+|   ​tidy ​             | weltling ​      done                  | done             | | 
-|   ​xmlreader ​        ​| ​               not started ​          not started ​     ​+|   ​tokenizer ​        ​| ​weltling ​      done                  ​done      
-|   ​xmlrpc ​           |                not started ​          | not started ​     ​+|   ​wddx ​             | weltling ​      done                  | done             | | 
-|   ​xmlwriter ​        ​| ​               not started ​          not started ​     ​+|   ​xml ​              ​| ​weltling ​      done                  | done             | | 
-|   ​xsl ​              ​| ​               not started ​          not started ​     ​+|   ​xmlreader ​        ​| ​weltling ​      done                  | done             | | 
-|   ​zip ​              ​| ​               not started ​          not started ​     ​+|   ​xmlrpc ​           | weltling ​      done                  | done           | | 
-|   ​zlib ​             |                | done                  | not started ​     ​|+|   ​xmlwriter ​        ​| ​weltling ​      done                  | done             | | 
 +|   ​xsl ​              ​| ​weltling ​      done                  | done             | | 
 +|   ​zip ​              ​| ​weltling ​      done                  | done             | | 
 +|   ​zlib ​             | weltling ​      | done                  | done | integer overflows with zlib|
  
 ^ Zend open questions ^ status^ ^ Zend open questions ^ status^
-| Array indexing ​             | in progress ​    |+| Array indexing ​             | done     |
  
  
 ^ ext/​standard open questions ^ status^ ^ ext/​standard open questions ^ status^
-| Mersenne Twister ​              | not started ​     |+| Mersenne Twister ​              | done | 
 + 
 +^ Other ^ status ^ 
 +| Edge cases on int64/​double | done | 
 +| Implement printf %d modifier for zend_int_t, see [[http://​news.php.net/​php.cvs/​74043]] | done | 
 +| Implement mechanism to ensure PECL extensions fail to compile if not updated for new API | not started | 
 +| Do smart platform recognition and ermove the size_t/​int64 configure options | done | 
 +| Develop a tutorial (and possibly tools) for PECL extensions | in progress | 
rfc/string-size_t/progress.txt · Last modified: 2014/01/29 01:06 by ab