[PyQt] SIP v5 Roadmap

Phil Thompson phil at riverbankcomputing.com
Sun Dec 12 10:29:56 GMT 2010

On Sat, 27 Nov 2010 16:09:57 +0100, "Hans-Peter Jansen" <hpj at urpla.net>
> On Monday 22 November 2010, 17:06:01 Phil Thompson wrote:
>> I've added a roadmap for SIP v5 at...
>> http://www.riverbankcomputing.com/software/sip/roadmap
> From the latest experience with PyQwt (with the still unexplained issues

> related to switching off a feature: see thread "[PyQt] sip snapshot 
> problem with PyQwt"), one problem was a single dangling %End directive.
> While better error messages are greatly appreciated, I expect locating 
> such problems will still going to be tough in a big library, because of 
> the inherent ambiguity. Wouldn't unambiguous %End directives allow for 
> much easier formal consistency verification 
> (e.g. %EndIf, %EndTypeHeaderCode, %EndMethodCode, etc..).

Yes, but I think it looks horrible. I've never had the problem myself and
nobody has raised it as an issue before. However if I now get floods of
emails saying "if there is one thing I hate about SIP it's..." then I'll

> @all:
> How could class templates be supported in an easier way? As far as I 
> understand it, one has to specify all different types one by one. How 
> about a %TemplateTypes directive?

You only need to specify explicit code when the template arguments are
non-class types (eg. int, char *). This is because the Python C API calls
you have to use are different for each of those types. It might be possible
to implement a template based sub-library that allows you to write just one
piece of code that implements (for example) QList<int>, QList<double>.
However that can be added later without affecting the migration of SIP v4
to v5.

> Some thoughts for (Meta-)SIP v6:

I haven't said this but I intend to provide a reimplemented MetaSIP
sometime after SIP v5 is done.

>  - transformation tool for gccxml output to sip

This is what the current (internal to Riverbank) MetaSIP does. A new
version will allow other front ends in addition to gccxml.

>  - automated timeline/version management, based on gccxml output of
>    different project versions

The current MetaSIP does this.

>  - template based mix-in controller for injecting various directives,
>    annotations, code segments targetting automated sip generation

That's a lot of handwaving :) There will certainly be the ability to
define and apply heuristics. The current MetaSIP does this for the names of
function arguments for example.


More information about the PyQt mailing list