File: release.html

package info (click to toggle)
python-extclass 1.2-1
  • links: PTS
  • area: main
  • in suites: slink
  • size: 432 kB
  • ctags: 547
  • sloc: ansic: 4,549; python: 134; makefile: 46; sh: 18
file content (190 lines) | stat: -rw-r--r-- 5,695 bytes parent folder | download | duplicates (3)
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
<html><head><title>Release Notes</title>
	    </head><body>
	    <h1>Release Notes</h1>
<h2>1.2</h2>
<p>    This release provides some important bug fixes, some new features,
    and a new copyright.</p>

<p>    New functionality:</p>
<ul><li><p>One or more mapping objects can be passed to the MultiMapping
        constructor.</p>


<li><p>MultiMapping objects implement the has_key and get methods as
        defined for Python 1.5 dictionaries.</p>

</ul>

<p>    Bugs fixed:</p>
<ul><li><p>When support was added for passing acquisition wrappers to
        methods of data-less C mix-in classes, C-based __call_method__
        hooks were broken.  The most notable example of this was the
        breaking of the Synchronized class.</p>


<li><p>Calling C-base-class special methods from overriding methods,
        as in::</p>
<p>          class LowerMultiMapping(MultiMapping):</p>
<p>            def __getitem__(self, key):
              return MultiMapping.__getitem__(self, lower(key))</p>


<p>        caused infinite loops.</p>



<li><p>A typo in the Acquisition probably caused __delitem__
        calls on wrapped mapping objects to fail.</p>

</ul>


<h2>1.1</h2>
<p>     New functionality:</p>
<ul><li><p>Changed the way that methods in pure mix-in classes are
        constructed.  Now methods are wrapped in such a way that
        tricky wrapper objects (like Acquisition wrappers) can
        bind them to wrapped objects.</p>


<li><p>An "is subclass" test is provided via the macros
        <code>ExtensionClassSubclass_Check</code>, and
        <code>ExtensionClassSubclassInstance_Check</code>, which are
        documented in <code>ExtensionClass.h</code>.</p>


<li><p>Methods and Acquisition wrappers use free list to improve
        allocation and deallocation performance.</p>


<li><p>Bound methods have attributes who's values are stored in
        their instances.</p>


<li><p>Added <code>__module__</code> attribute to ExtensionClasses to be
        consistent with Python 1.5 classes and to work correctly
        with 1.5 pickling.</p>


<li><p>Added the <code>__basic__</code> new class method to allow
        ExtensionClass instances to be unpickled without calling
        their constructors.</p>


<li><p>Acquired acquiring objects can nor acquire from the object
        they were accessed in, in addition to the object they were
        acquired from.</p>


<li><p>Added new <code>Acquisition</code> variable, <code>Acquired</code>, to support
        "Controlled Acquisition'.</p>


<li><p>Added a new <code>aq_acquire</code> method for objects that subclass
        <code>Acquisition.Implicit</code> or <code>Acquisition.Explicit</code>. This
        supports explicit acquisition and provides an option
        filter function to support "Filtered Acquisiition".</p>
<p>        The <code>acquire</code> method available in earlier releases is still
        available, but is deprecated.</p>


</ul>

<p>     Bugs fixed:</p>
<ul><li><p>There were some incorrect C-level error return values.</p>


<li><p>A bug in handling method chains caused "C inheritence"
        to fail.  This only affected extension types that
        inherited from extension types using method chains, <em>not</em>
        extension subclasses defined in Python inheriting from
        extension base classes defined in C.</p>


<li><p>Expressions like <code>not foo</code> or statements like::</p>
<p>         if foo:
           ...</p>

<p>        often failed for non-collection types because of an
        incorrect attempt to take the <code>len</code> of an object.</p>



<li><p>Comparisons of objects with different classes didn't work
        correctly.</p>


<li><p>Instances provided access to their class <code>__bases__</code>
        attribute.</p>

</ul>


<h2>1.0.2</h2>
<p>     Bugs fixed:</p>
<ul><li><p>Fixed bug in handling subclasses of Sequence objects.</p>


<li><p>Fixed comparison bug in Missing objects.</p>

</ul>


<h2>1.0.1</h2>
<p>    Added functionality to and fixed bug in Missing module</p>

<ul><li><p>Fixed horible reference-counting bug</p>


<li><p>Changed so that <code>Missing.Value.spam(a1,a2,whatever)</code>
      returns <code>Missing.Value</code> for any method name (except
      <code>__reduce__</code>) and any arguments.</p>


<li><p>Changed so that missing values are picklable.  Note that
      the special global, Missing.Value, is pickled in a
      slightly more efficient manner than other missing values.</p>

</ul>

<h2>1.0</h2>
<p>     First non-beta release</p>

<p>     This release is the result of a major rewrite and "hardening"
     effort to increase performance and reliability.  This version
     is being used in several Digital Creations products, so if
     parts are broken, we probably don't use them. :-)</p>

<p>     This release also contains several new features and example
     modules, including:</p>
<ul><li><p>Acquisition,</p>


<li><p>Custom method calls,</p>


<li><p>Class initialization protocol,</p>


<li><p>A class method that makes it possible to explicitly call
         Python base-class methods.</p>


<li><p>A sample application of custom method calls that provides
         Java-like synchronized classes that prevent more than one
         thread from accessing an object's methods at one time.</p>

</ul>

<p>     Note that there is one known incompatibility with previous
     releases.  In previouse releases, the method used to support
     context wrapping was named <code>__bind_to_object__</code>.  The name of
     this method was changed to <code>__of__</code> in this release and I do
     not expect this name to change in the future.
</p>




	    </body></html>