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