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