summaryrefslogtreecommitdiffstats
path: root/python/sip/NEWS
blob: 919527adea4bd8dbfb77217a801dc216f42478f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
v4.6 10th April 2007
  - Added support for wchar_t.
  - The -g command line option releases the GIL whenever a call is made to the
    wrapped library.
  - Added the /HoldGIL/ annotation to explicitly retain the GIL when calling a
    particular function in the wrapped library.
  - Added sipFindClass() and sipFindNamedEnum() to the public API.
  - /TransferThis/ may be specified more than once.
  - Added support for __truediv__ and __itruediv__.
  - The SIP code generator and module may be built as universal binaries under
    MacOS/X using the -n command line option to configure.py.

v4.5.2 9th December 2006
  - A bug fix release.

v4.5.1 9th December 2006
  - Added the SIP_SSIZE_T type to help write PEP 353 compliant handwritten
    code.

v4.5 4th November 2006
  - Added support for Python v2.5.
  - Added sip_config_args to sipconfig.py.
  - sip.voidptr now implements __hex__().
  - Added sip.delete() to call a C++ instance's destructor, or return a C
    structure to the heap.
  - Added sip.isdeleted() to check if a C++ instance or C structure has been
    destroyed or returned to the heap.
  - Added sip.setdeleted() to mark that a C++ instance or C structure has been
    destroyed or returned to the heap.
  - Added support for pure virtual destructors.
  - Added the __dtor__() method to allow Python code to be called from a C++
    destructor.
  - Added the /NoDefaultCtors/ class annotation.
  - The generated API files are now more complete and use Python types rather
    than C/C++ types.
  - Added support for embedding manifests for MSVC 2005.

v4.4.5 10th June 2006
  - A bug fix release.

v4.4.4 8th June 2006
  - Added %ExportedHeaderCode and %UnitCode.
  - Added sipExportSymbol() and sipImportSymbol() to the public API.

v4.4.3 27th April 2006
  - A bug fix release.

v4.4.2 23rd April 2006
  - A bug fix release.

v4.4.1 3rd April 2006
  - A bug fix release.

v4.4 24th March 2006
  - The major number of the internal API has changed so it will be necessary
    to regenerate all modules.
  - This release introduces small incompatibilities that may affect handwritten
    code.  See the documentation for the details.
  - Module names specified with %Module and %CModule can now include periods to
    denote a Python package structure.
  - Namespaces can be split across multiple Python modules.
  - Class templates are now supported and instantiated using "typedef".
  - Mapped type templates are now supported and instantiated automatically.
  - Global operators are now supported.
  - Operator casts in classes are now supported.
  - C/C++ signed char type is now treated as a separate type to char.
  - C/C++ long and unsigned long types are now wrapped as Python long objects
    rather than Python integer objects.
  - C/C++ long long and unsigned long long types are now supported.
  - unsigned short and unsigned int are now implemented as long objects instead
    of integer objects.
  - Classes can now be declared using the /External/ annotation and be defined
    in another, unspecified, module.
  - /TransferThis/ can now be used in non-factory methods to change the
    ownership to a different C++ instance or to change it to Python.
  - /Constrained/ can now be used with booleans.
  - Added support for Python's buffer interface, %BIGetCharBufferCode,
    %BIGetReadBufferCode, %BIGetSegCountCode and %BIGetWriteBufferCode.
  - The "user" member has been added to the sipWrapper structure and can be
    used for any purpose by handwritten code.
  - Function argument names are now parsed, but otherwise ignored.
  - The "explicit" keyword is now parsed, but otherwise ignored.
  - Added the /DelayDtor/ class annotation which given more control over the
    order in which instances are deleted when an application terminates.
  - Added support for the SIP_PYTYPE pseudo-type that represents a Python
    type object.
  - Added support for ellipsis (ie. "...") in function arguments.  Any
    remaining arguments will be gathered as a Python tuple.
  - Add support for the /NoDerived/ annotation for Python class constructors
    that have no C/C++ equivalent.
  - The sipSelfWasArg boolean is now available to the %MethodCode of
    non-abstract, virtual methods to indicate whether the class implementation
    of the method rather than the virtual implementation should be called.
    %MethodCode for non-abstract, virtual, protected methods must now call the
    sipProtectVirt wrapper (rather than sipProtect).
  - sipCanConvertToInstance(), sipConvertToInstance(),
    sipForceConvertToInstance(), sipReleaseInstance(),
    sipConvertFromInstance(), sipConvertFromNewInstance(),
    sipCanConvertToMappedType(), sipConvertToMappedType(),
    sipForceConvertToMappedType(), sipReleaseMappedType(),
    sipConvertFromMappedType() and sipFindMappedType() have been added to the
    SIP API.
  - sipLong_AsUnsignedLong() has been added, primarily as a workaround for a
    bug in Python v2.3.x and earlier.
  - Added the 't', 'u', 'C' and 'D' format characters to sipParseResult().
  - Added the 't', 'u', 'B', 'C' and 'D' format characters to sipBuildResult().
  - Responsibility for interpreting and implementing the /Transfer/ and
    /TransferBack/ annotations has been pushed down to %ConvertToTypeCode and
    %ConvertFromTypeCode.  The generated type convertors sipForceConvertTo_*()
    and sipConvertFrom_*() have been deprecated.
  - Added the %SIPNoEmitters directive for PyQt4.
  - Added support for the __hash__ Python special method.
  - The __getitem__ Python special method no longer requires %MethodCode.
  - All of the calls to Qt have been moved out of the sip module and into PyQt.
    The generated sipconfig.py file no longer contains any Qt specific
    information.  These changes mean that SIP can support PyQt v3 and v4 at the
    same time.
  - Static methods can now be defined as Qt slots.
  - Removed SIP_BUILD from sip.h.
  - The -c, -l, -q and -x flags to configure.py have been removed.
  - Added the PythonModuleMakefile class to the build system for installing
    pure Python modules.
  - Added the create_wrapper() function to the build system for creating
    platform dependent executable wrappers for Python scripts.
  - Added Configuration.platform to the build system.

v4.3.2 14th November 2005
  - The sipdistutils.py script has contributed by Giovanni Bajo that enables
    SIP extension modules to be built with distutils.

v4.3.1 10th September 2005
  - A bug fix release.

v4.3 30th August 2005
  - The major number of the internal API has changed so it will be necessary
    to regenerate all modules.
  - C structures can now have constructors and a destructor defined so that
    they can be made to behave more Pythonically.
  - %TypeHeaderCode can now be used in namespaces.
  - Added sip.SIP_VERSION_STR.
  - Added support for Python's cyclic garbage collector, %GCTraverseCode and
    %GCClearCode.
  - Deprecated sipTransfer() and sip.transfer().
  - Added sipTransferTo, sipTransferBack(), sip.transferto() and
    sip.transferback().
  - Added support for sipCppRet in %ConvertSubClassCode.
  - Added support for %GetCode and %SetCode for instance variables and
    structure members.
  - Added support for %Exception and %RaiseCode.
  - Added support for __pos__ and __abs__.
  - sip.voidptr instances can now be created from Python.
  - The ascobject() method has been added to sip.voidptr.
  - Added the -c flag to configure.py to explicitly specify the location of
    the qconfig.h file.

v4.2.1 6th March 2005
  - Restored the pre-4.2 behaviour of Python exceptions raised in virtual
    re-implementations.
  - %Timeline can now be used more than once in a module.

v4.2 19th February 2005
  - The /PyName/ annotation can now be applied to classes, namespaces,
    enums, enum members and variables.
  - Added the %PreInitialisationCode directive and is subject to version
    control.  %PostInitialisationCode is now subject to version control.
  - Named enums now have distinct types and so can be differentiated from
    integers in function signatures.
  - The handling of Qt signals has changed so that "foreign" signals (ie.
    those raised by ActiveX controls) can be handled.
  - The voidptr, wrapper and wrappertype types are now exposed in the sip
    module.
  - Virtual and abstract operators are now supported.
  - The __call__ slot no longer requires %MethodCode.
  - Any Python exceptions raised in virtual re-implementations are now
    detected when they occur.
  - sip.cast() can now cast downwards as well as upwards.
  - Added sip.SIP_VERSION.
  - The -k flag to configure.py can now be used to build modules as builtins
    to custom interpreters.
  - The build system now strips modules and only exports the module
    initialisation function by default (when supported by the platform).

v4.1.1 24th September 2004
  - A bug fix release.

v4.1 20th September 2004
  - Added the cast() method to the sip module.
  - Added limited support for protected classes.
  - Added the /Abstract/ class annotation.
  - Added support for typedefs that define pointers to functions.
  - The SIP_PYCALLABLE type now supports the /AllowNone/ annotation.
  - Added support for MSVC.NET to the build system.

v4.0.1 6th July 2004
  - A bug fix release.

v4.0 23rd June 2004
  - The release of SIP v4.