Re: [DISCUSSION] C++ Enhancements in Zend API
On Sun, Aug 11, 2024 at 4:54 PM Lanre <[email protected]> wrote:
>
> Hello,
>
> I’m considering adding some C++ enhancements to the Zend API. These changes would be
> encapsulated within #ifdef __cplusplus
guards, so they wouldn’t interfere with the
> existing C implementation. The primary goal is to provide a nicer interface for extensions while
> maintaining compatibility with C.
>
> Key points:
> - **Struct-based Approach:** Everything will still use structs—no classes or
> non-public/non-static members.
> - **Isolation:** Any enhancements that can be isolated from the C implementation will be, and
> they will reside in a common zend_api_cxx
header file.
> - **Proposed Enhancements:**
> - Constructors and destructors, along with comparison operator overloads for
> zval
.
> - Constructor overloads for common zval
initializations.
> - Member methods for common zval
operations.
>
> I’m happy to implement and maintain these changes. Since this doesn’t affect userland, do
> you think an RFC is necessary?
>
> Also, if anyone has suggestions or ideas for this C++ API, I’d love to hear them.
>
> Cheers,
> Lanre
I am not opposed, but there are some logistics questions:
1. Since it's for extensions and not core, how will we be sure it is
maintained? What will test it?
2. Since it's in core, and C++ is a rapidly evolving language, what
will the required C++ version be? What would our policy be on updating
it?
3. How will we be sure about edges around language mismatches in C
and C++? For instance, they have different rules regarding unions,
which we make liberal use of.
4. C++ has many features and some are controversial. Will any be
disallowed such as exceptions?
There is one part of C++ specifically that I think could be pretty
nice if we can figure out all the details: compile-time evaluation of
the string hash function. This could make dealing with
well-known/compile-time strings easier.
Thread (40 messages)