Convert ACL initialisation to allow file-path objects as well
[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 - Restore `__setstate__`/`__getstate__` support on Linux; this was
29   inadvertently removed due a typo(!) when adding support for it in
30   FreeBSD. Pickle should work again for ACL instances, although not sure
31   how stable this serialisation format actually is.
32
33 Minor improvements:
34
35 - When available, add the file path to I/O error messages, which should
36   lead to easier debugging.
37 - The test suite has changed to `pytest`, which allows increased
38   coverage via parameterisation.
39
40
41 Version 0.5.4
42 -------------
43
44 *released Thu, 14 Nov 2019*
45
46 Maintenance release:
47
48 - Switch build system to Python 3 by default (can be overridden if
49   needed).
50 - Internal improvements for better cpychecker support.
51 - Fix compatibility with PyPy.
52 - Test improvements (both local and on Travis), testing more variations
53   (debug, PyPy).
54 - Improve test coverage, and allow gathering test coverage results.
55 - Drop support (well, drop testing) for Python lower than 2.7.
56 - Minor documentation improvements (closes #9, #12).
57
58 Version 0.5.3
59 -------------
60
61 *released Thu, 30 Apr 2015*
62
63 FreeBSD fixes:
64
65 - Enable all FreeBSD versions after 7.x at level 2 (thanks to Garrett
66   Cooper).
67 - Make test suite pass under FreeBSD, which has a stricter behaviour
68   with regards to invalid ACLs (which we do exercise in the test suite),
69   thanks again to Garret for the bug reports.
70
71 Version 0.5.2
72 -------------
73
74 *released Sat, 24 May 2014*
75
76 No visible changes release: just fix tests when running under pypy.
77
78 Version 0.5.1
79 -------------
80
81 *released Sun, 13 May 2012*
82
83 A bug-fix only release. Critical bugs (memory leaks and possible
84 segmentation faults) have been fixed thanks to Dave Malcolm and his
85 ``cpychecker`` tool. Additionally, some compatibility issues with Python
86 3.x have been fixed (str() methods returning bytes).
87
88 The documentation has been improved and changed from epydoc to sphinx;
89 note however that the documentation is still auto-generated from the
90 docstrings.
91
92 Project reorganisation: the project home page has been moved from
93 SourceForge to GitHub.
94
95
96 Version 0.5
97 -----------
98
99 *released Sun, 27 Dec 2009*
100
101 Added support for Python 3.x and improved support for Unicode filenames.
102
103 Version 0.4
104 -----------
105
106 *released Sat, 28 Jun 2008*
107
108 License
109 ~~~~~~~
110
111 Starting with this version, pylibacl is licensed under LGPL 2.1,
112 Febryary 1999 or any later versions (see README.rst and COPYING).
113
114 Linux support
115 ~~~~~~~~~~~~~
116
117 A few more Linux-specific functions:
118
119 - add the ACL.equiv_mode() method, which will return the equivalent
120   octal mode if this is a basic ACL and raise an IOError exception
121   otherwise
122
123 - add the acl_extended(...) function, which will check if an fd or path
124   has an extended ACL
125
126 FreeBSD support
127 ~~~~~~~~~~~~~~~
128
129 FreeBSD 7.x will have almost all the acl manipulation functions that
130 Linux has, with the exception of __getstate__/__setstate__. As a
131 workaround, use the str() and ACL(text=...) methods to pass around
132 textual representations.
133
134 Interface
135 ~~~~~~~~~
136
137 At module level there are now a few constants exported for easy-checking
138 at runtime what features have been compiled in:
139
140 - HAS_ACL_FROM_MODE, denoting whether the ACL constructor supports the
141   mode=0xxx parameter
142
143 - HAS_ACL_CHECK, denoting whether ACL instances support the check()
144   method
145
146 - HAS_ACL_ENTRY, denoting whether ACL manipulation is possible and the
147   Entry and Permset classes are available
148
149 - HAS_EXTENEDED_CHECK, denoting whether the acl_extended function is
150   supported
151
152 - HAS_EQUIV_MODE, denoting whether ACL instances support the
153   equiv_mode() method
154
155 Internals
156 ~~~~~~~~~
157
158 Many functions have now unittests, which is a good thing.
159
160
161 Version 0.3
162 -----------
163
164 *released Sun, 21 Oct 2007*
165
166 Linux support
167 ~~~~~~~~~~~~~
168
169 Under Linux, implement more functions from libacl:
170
171 - add ACL(mode=...), implementing acl_from_mode
172 - add ACL().to_any_text, implementing acl_to_any_text
173 - add ACL comparison, using acl_cmp
174 - add ACL().check, which is a more descriptive function than validate
175
176 .. Local Variables:
177 .. mode: rst
178 .. fill-column: 72
179 .. End: