Re: [PHP-DEV] [RFC] Better type names for int64 RFC

[email protected] (Andrea Faulds)
Newsgroups php.internals
Message-ID <[email protected]>
On 23 Aug 2014, at 03:05, Rasmus Lerdorf <[email protected]> wrote:

> The end result here is likely that in order to write a portable
> extension, extension authors will simply do:
> 
> #ifndef IS_LONG
> # define IS_LONG IS_INT
> # define Z_STRLEN Z_STRSIZE
> # define RETURN_LONG RETURN_INT
> # define RETVAL_LONG RETVAL_INT
> # define Z_LVAL Z_IVAL
> ...
> #endif
> 
> and not change a single macro anywhere in the actual code.

That’s a very good point. It’s easy to forget that many people write cross-version compatible extensions.

> That's certainly what I would do. And if the current naming survives we
> should provide a macro_compat.h file with the complete set.

Perhaps we could backport the new types, too, and make them just aliases on older PHP versions?

For example, zend_int would be a long in 5.5 and 5.6, but a 64-bit-on-64-bit type on 7.

> Overall I don't think trying to make the macro names match the
> underlying types exactly is worth the hassle here. Our audience for this
> is extension authors. In most cases the author doesn't necessarily care
> about the subtle differences between calling it IS_LONG and IS_INT and I
> don't think it actually makes it any more clear to a C developer. "int"
> is not a well-defined cross-platform type anymore than a "long" is. So
> we are swapping one set of vague names for another set of vague names.
> I'd much rather see a nice clear README.TYPES or perhaps it is simply
> part of the existing README.PARAMETER_PARSING_API which defines exactly
> what these various macros mean.

+1 to that.

--
Andrea Faulds
http://ajf.me/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.