rfc:better_type_names_for_int64

Differences

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

Link to this comparison view

Next revision
Previous revision
rfc:better_type_names_for_int64 [2014/08/22 10:48] – created nikicrfc:better_type_names_for_int64 [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 14: Line 14:
   * ''zend_int_t'' and ''zend_uint_t'' are the new 64bit-on-64bit-platforms types.   * ''zend_int_t'' and ''zend_uint_t'' are the new 64bit-on-64bit-platforms types.
   * ''IS_LONG'' is changed to ''IS_INT'', ''Z_LVAL'' to ''Z_IVAL'', etc.   * ''IS_LONG'' is changed to ''IS_INT'', ''Z_LVAL'' to ''Z_IVAL'', etc.
 +  * ''Z_STRLEN'' is changed to ''Z_STRSIZE''
   * ''zend_parse_parameters'' uses ''i'' and ''I'' instead of ''l'' and ''L''.   * ''zend_parse_parameters'' uses ''i'' and ''I'' instead of ''l'' and ''L''.
  
Line 20: Line 21:
   * There now exists a ''zend_int_t'' type (which is a 64bit-on-64bit type) and ''zend_int'' (which is a 32bit type). Apart from the ''_t'' suffix the name is the same, but the meaning is totally different.   * There now exists a ''zend_int_t'' type (which is a 64bit-on-64bit type) and ''zend_int'' (which is a 32bit type). Apart from the ''_t'' suffix the name is the same, but the meaning is totally different.
   * PHP and the Zend Engine do not use ''_t'' suffixes for types. This introduces a new type naming convention that is not used anywhere else. (Probably this is done to avoid clashing with the previous point.)   * PHP and the Zend Engine do not use ''_t'' suffixes for types. This introduces a new type naming convention that is not used anywhere else. (Probably this is done to avoid clashing with the previous point.)
-  * Using the term ''int'' for an 64bit type goes against the normal expectations of a C programmer (ILP64 systems are very rare). The meaning of the ''zend_int_t'' type is much closer to the ''long'' type.+  * Furthermore all types ending in ''_t'' are reserved by the POSIX standard. 
 +  * Using the term ''int'' for an 64bit type goes against the normal expectations of a C programmer (ILP64 systems are rare). The meaning of the ''zend_int_t'' type is much closer to the ''long'' type.
  
 Instead the following alternative naming is proposed: Instead the following alternative naming is proposed:
   * Retain ''zend_int'' and ''zend_uint'' as 32bit types (same as 64bit RFC)   * Retain ''zend_int'' and ''zend_uint'' as 32bit types (same as 64bit RFC)
   * Use ''zend_long'' and ''zend_ulong'' as the 64bit-on-64bit-platforms type. As such this type stays the same as previously, with the tweak that it will be 64bit on LLP64 platforms as well.   * Use ''zend_long'' and ''zend_ulong'' as the 64bit-on-64bit-platforms type. As such this type stays the same as previously, with the tweak that it will be 64bit on LLP64 platforms as well.
-  * Revert all renames of ''LONG'' to ''INT'' or ''L'' to ''I''.+  * Revert all type/macro/zpp renames, like ''IS_INT''''Z_IVAL''''Z_STRSIZE'', ''i'', ''I'', etc. The original names will be used instead.
      
 ===== Patch ===== ===== Patch =====
  
 As this is just search&replace renaming a patch will be provided once we have reached a descision on naming. As this is just search&replace renaming a patch will be provided once we have reached a descision on naming.
rfc/better_type_names_for_int64.1408704506.txt.gz · Last modified: 2017/09/22 13:28 (external edit)