Update CI schedule to include periodic runs
[pyxattr.git] / NEWS
1 News
2 ====
3
4 Version 0.7.2
5 -------------
6
7 *Sun, 29 Nov 2020*
8
9 Minor release:
10
11 * Expand testing by adding better mixed-access checks (e.g. set via
12   symlink and read on file) and by not leaking resources during tests.
13 * Enable testing with Python 3.9 and confirm compatibility with it.
14 * Fix documentation building with Sphinx 3.0+.
15
16 Version 0.7.1
17 -------------
18
19 *released Tue, 26 Nov 2019*
20
21 Typo fix release in the bug tracker link :/
22
23 Version 0.7.0
24 -------------
25
26 *released Tue, 26 Nov 2019*
27
28 Major change: drop compatibility with Python 2, which allows significant
29 code cleanups.
30
31 Other changes:
32
33 * Switch internal implementation of argument parsing to a built-in one
34   (`PyUnicode_FSConverter`), which brings automatic support for
35   path-like objects in Python 3.6+ (#20), and also a more uniform
36   handling of Unicode path arguments with respect to other Python code.
37 * Fix missing error check in list operations in `get_all` (#17).
38 * Switch test library to pytest; not that a reasonable recent version is
39   needed. Additionally, expand test coverage, although not directly
40   visible in actual coverage reports…
41
42 Version 0.6.1
43 -------------
44
45 *released Tue, 24 Jul 2018*
46
47 Minor bugfix, performance and compatibility release.
48
49 * Minor compatibility fix: on Linux, drop the use of the `attr` library,
50   and instead switch to the glibc header `sys/xattr.h`, which is
51   provided for a really long time (since glibc 2.3). The formerly used
52   header `attr/xattr.h` has been removed from the `attr` library in
53   version 2.4.48. Fix provided by Lars Wendler, many thanks!
54 * Release the GIL when performing I/O. Patch proposed by xwhuang, many
55   thanks. I tested this a long while back it seemed to impact
56   performance on local filesystems, but upon further inspection, the
57   downsides are minor (between 0 and 5%, in many cases negligible). For
58   remote or slow filesystems, this should allow much increased
59   parallelism.
60 * Fix symlink set operation on MacOS X; bugfix provided by adamlin, much
61   appreciated! This also uncovered testing problems related to symlinks,
62   which are now fixed (the bug would be caught by the updated tests).
63
64 Version 0.6.0
65 -------------
66
67 *released Mon, 23 Jan 2017*
68
69 Bugfix and feature release (hence the version bump).
70
71 The main change is to the implementation of how attributes are listed
72 and read. This was done due to existing race issues when attributes are
73 modified while being read (github issue #12), but basically all various
74 internal paths that dealt with retrieving an attribute value or listing
75 attributes were unified in a single helper function that does handle
76 such concurrent modifications. As a side effect, the size of the buffers
77 used for such reads have changed, which (depending on attribute value)
78 might change the trade-off between number of syscalls done and memory
79 usage.
80
81 As feature release, OSX support was contributed by Adam Knight
82 <adam@movq.us>, thanks a lot! I don't have access to OSX so the testing
83 for it is done via Travis builds; please report any issues.
84
85 Version 0.5.6
86 -------------
87
88 *released Sat, 09 Apr 2016*
89
90 Small bugfix release:
91
92 * Fixes some sign-compare warnings
93 * Fixes potential name truncation in merge_ns()
94 * Fixes building on systems which don't have ENODATA
95
96 Tested with Python 2.7.11, Python 3.5.1 and PyPy 5.0.1.
97
98 Version 0.5.5
99 -------------
100
101 *released Fri, 01 May 2015*
102
103 Bugfix release:
104
105 * fixes some more memory leaks when handling out-of-memory in get_all()
106   function
107 * improve error reporting when an attribute disappears after we asked
108   for its length but before we managed to read it
109 * fix int/size_t issues found by RedHat/Fedora,
110   https://bugzilla.redhat.com/show_bug.cgi?id=1127310; the fix is
111   different than their fix, but it should accomplish the same thing
112 * convert all code to only do explicit casts after checking boundaries,
113   making the code `-Wconversion`-clean (although that warning is not
114   enabled by default)
115
116 Version 0.5.4
117 -------------
118
119 *released Thu, 30 Apr 2015*
120
121 Fix memory leaks on some of the error-handling paths of the `get()`
122 function.
123
124 Version 0.5.3
125 -------------
126
127 *released Fri, 23 May 2014*
128
129 Small optimisations release:
130
131 * ari edelkind contributed a speed-up optimisation for handling of files
132   without xattrs (which is, in general, the expected case)
133 * Jonas Borgström contributed a behaviour change to the handling of file
134   names: under Python 3 and up, unicode paths are encoded/decoded using
135   the 'surogatee' handler, instead of the 'strict' handler; while this
136   can hide encoding errors, it mirrors what Python libraries do
137   (e.g. see os.fsencode/fsdecode)
138 * Sean Patrick Santos contributed improvements to the test suite so that
139   it can be used even on files systems which have built-in attributes
140   (e.g. when using SELinux, or NFSv4); to enable this, define the
141   attributes in the TEST_IGNORE_XATTRS environment variable
142
143 Version 0.5.2
144 -------------
145
146 *released Thu, 03 Jan 2013*
147
148 Bug-fix release. Thanks to Michał Górny, it looked like the library had
149 problem running under pypy, but actually there was a bug in the
150 PyArg_ParseTuple use of et# (signed vs. unsigned, and lack of compiler
151 warnings). This was fixed, and now the test suite passed with many
152 CPython versions and PyPy (version 1.9).
153
154 Version 0.5.1
155 -------------
156
157 *released Wed, 16 May 2012*
158
159 Bug-fix release. Thanks to Dave Malcolm and his cpychecker tool, a
160 number of significant bugs (refcount leaks and potential NULL-pointer
161 dereferences) have been fixed.
162
163 Furthermore, compatibility with Python 3 has been improved; this however
164 required changing the meaning of the ``namespace`` argument to the
165 functions: if passed, None is no longer a valid value; pass an empty
166 string if (due to the structure of your program) you have to pass this
167 argument but want to specify no namespace.
168
169 Also, the project home page has changed from SourceForge to GitHub, and
170 the documentation has been converted from epydoc-based to sphinx.
171
172
173 Version 0.5
174 -----------
175
176 *released Sun, 27 Dec 2009*
177
178 Implemented support for Python 3. This required a significant change to
179 the C module, hence the new version number.
180
181 Version 0.4
182 -----------
183
184 *released Mon, 30 Jun 2008*
185
186 API
187 ~~~
188
189 The old functions ({get,set,list,remove}xattr) are deprecated and replaced with
190 a new API that is namespace-aware and hopefully will allow other OSes (e.g.
191 FreeBSD) to be supported more naturally.
192
193 Both the old and the new API are supported in the 0.4 versions, however users
194 are encouraged to migrate to the new API.
195
196 New features
197 ~~~~~~~~~~~~
198
199 A new bulk get function called get_all() has been added that should be somewhat
200 faster in case of querying files which have many attributes.
201
202 License
203 ~~~~~~~
204
205 Since LGPLv3 is not compatible with GPLv2 (which unfortunately I didn't realize
206 before), the license was changed to LGPLv2.1 or later.
207
208 Internals
209 ~~~~~~~~~
210
211 Unittest coverage was improved.
212
213 Version 0.3
214 -----------
215
216 *released Sun, 09 Mar 2008*
217
218 * changed licence from GPL to LGPL (3 or later)
219 * changed listxattr return type from tuple to a list
220 * developer-related: added unittests
221
222 Version 0.2.2
223 -------------
224
225 *released Sun, 01 Jul 2007*
226
227 * fixed listing symlink xattrs
228
229 Version 0.2.1
230 -------------
231
232 *released Sat, 11 Feb 2006*
233
234 * fixed a bug when reading symlink EAs (you weren't able to
235   do it, actually)
236 * fixed a possible memory leak when the actual read of the EA
237   failed but the call to get the length of the EA didn't
238
239 .. Local Variables:
240 .. mode: rst
241 .. fill-column: 72
242 .. End: