]> git.k1024.org Git - pylibacl.git/blob - NEWS
Remove the PyType_Type assignments to _Type objects
[pylibacl.git] / NEWS
1 News
2 ====
3
4 Version 0.6.0
5 -------------
6
7 *unreleased*
8
9 Major release removing Python 2 support. This allow both code cleanup
10 and new features, such as:
11
12 - Support for pathlib objects in `apply_to` and `has_extended`
13   functions when running with Python 3.6 and newer.
14 - Use of built-in C API functions for bytes/unicode/pathlib conversion
15   when dealing with file names, removing custom code (with the
16   associated benefits).
17
18 Important API changes/bug fixes:
19
20 - Initialisation protocol has been changed, to disallow uninitialised
21   objects; this means that `__new__` will always create valid objects,
22   to prevent the need for checking initialisation status in all code
23   paths; this also (implicitly) fixes memory leaks on re-initialisation
24   (calling `__init__(…)` on an existing object) and segfaults (!) on
25   non-initialised object attribute access. Note ACL re-initialisation is
26   tricky and (still) leads to undefined behaviour of existing Entry
27   objects pointing to it.
28 - Fix another bug in ACL re-initialisation where failures would result
29   in invalid objects; now failed re-initialisation does not touch the
30   original object.
31 - Restore `__setstate__`/`__getstate__` support on Linux; this was
32   inadvertently removed due a typo(!) when adding support for it in
33   FreeBSD. Pickle should work again for ACL instances, although not sure
34   how stable this serialisation format actually is.
35 - Additionally, slightly change `__setstate__()` input to not allow
36   Unicode, since the serialisation format is an opaque binary format.
37 - Fix (and change) entry qualifier (which is a user/group ID) behaviour:
38   assume/require that uid_t/gid_t are unsigned types (they are with
39   glibc, MacOS and FreeBSD at least; the standard doesn't document the
40   signedness), and convert parsing and returning the qualifier to behave
41   accordingly. The breakage was most apparent on 32-bit architectures,
42   in which context the problem was originally reported (see issue #13).
43
44 Minor improvements:
45
46 - Added a `data` keyword argument to `ACL()`, which allows restoring an
47   ACL directly from a serialised form (as given by `__getstate__()`),
48   which should simplify some uses cases (`a = ACL(); a.__set
49   state__(…)`).
50 - When available, add the file path to I/O error messages, which should
51   lead to easier debugging.
52 - The test suite has changed to `pytest`, which allows increased
53   coverage via parameterisation.
54
55
56 Version 0.5.4
57 -------------
58
59 *released Thu, 14 Nov 2019*
60
61 Maintenance release:
62
63 - Switch build system to Python 3 by default (can be overridden if
64   needed).
65 - Internal improvements for better cpychecker support.
66 - Fix compatibility with PyPy.
67 - Test improvements (both local and on Travis), testing more variations
68   (debug, PyPy).
69 - Improve test coverage, and allow gathering test coverage results.
70 - Drop support (well, drop testing) for Python lower than 2.7.
71 - Minor documentation improvements (closes #9, #12).
72
73 Version 0.5.3
74 -------------
75
76 *released Thu, 30 Apr 2015*
77
78 FreeBSD fixes:
79
80 - Enable all FreeBSD versions after 7.x at level 2 (thanks to Garrett
81   Cooper).
82 - Make test suite pass under FreeBSD, which has a stricter behaviour
83   with regards to invalid ACLs (which we do exercise in the test suite),
84   thanks again to Garret for the bug reports.
85
86 Version 0.5.2
87 -------------
88
89 *released Sat, 24 May 2014*
90
91 No visible changes release: just fix tests when running under pypy.
92
93 Version 0.5.1
94 -------------
95
96 *released Sun, 13 May 2012*
97
98 A bug-fix only release. Critical bugs (memory leaks and possible
99 segmentation faults) have been fixed thanks to Dave Malcolm and his
100 ``cpychecker`` tool. Additionally, some compatibility issues with Python
101 3.x have been fixed (str() methods returning bytes).
102
103 The documentation has been improved and changed from epydoc to sphinx;
104 note however that the documentation is still auto-generated from the
105 docstrings.
106
107 Project reorganisation: the project home page has been moved from
108 SourceForge to GitHub.
109
110
111 Version 0.5
112 -----------
113
114 *released Sun, 27 Dec 2009*
115
116 Added support for Python 3.x and improved support for Unicode filenames.
117
118 Version 0.4
119 -----------
120
121 *released Sat, 28 Jun 2008*
122
123 License
124 ~~~~~~~
125
126 Starting with this version, pylibacl is licensed under LGPL 2.1,
127 Febryary 1999 or any later versions (see README.rst and COPYING).
128
129 Linux support
130 ~~~~~~~~~~~~~
131
132 A few more Linux-specific functions:
133
134 - add the ACL.equiv_mode() method, which will return the equivalent
135   octal mode if this is a basic ACL and raise an IOError exception
136   otherwise
137
138 - add the acl_extended(...) function, which will check if an fd or path
139   has an extended ACL
140
141 FreeBSD support
142 ~~~~~~~~~~~~~~~
143
144 FreeBSD 7.x will have almost all the acl manipulation functions that
145 Linux has, with the exception of __getstate__/__setstate__. As a
146 workaround, use the str() and ACL(text=...) methods to pass around
147 textual representations.
148
149 Interface
150 ~~~~~~~~~
151
152 At module level there are now a few constants exported for easy-checking
153 at runtime what features have been compiled in:
154
155 - HAS_ACL_FROM_MODE, denoting whether the ACL constructor supports the
156   mode=0xxx parameter
157
158 - HAS_ACL_CHECK, denoting whether ACL instances support the check()
159   method
160
161 - HAS_ACL_ENTRY, denoting whether ACL manipulation is possible and the
162   Entry and Permset classes are available
163
164 - HAS_EXTENEDED_CHECK, denoting whether the acl_extended function is
165   supported
166
167 - HAS_EQUIV_MODE, denoting whether ACL instances support the
168   equiv_mode() method
169
170 Internals
171 ~~~~~~~~~
172
173 Many functions have now unittests, which is a good thing.
174
175
176 Version 0.3
177 -----------
178
179 *released Sun, 21 Oct 2007*
180
181 Linux support
182 ~~~~~~~~~~~~~
183
184 Under Linux, implement more functions from libacl:
185
186 - add ACL(mode=...), implementing acl_from_mode
187 - add ACL().to_any_text, implementing acl_to_any_text
188 - add ACL comparison, using acl_cmp
189 - add ACL().check, which is a more descriptive function than validate
190
191 .. Local Variables:
192 .. mode: rst
193 .. fill-column: 72
194 .. End: