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