9 * Fix the pypi declared python versions
10 * Add some more documentation - a security policy, and a contributing
12 * Restore yet again the CI environment :/
18 Minor bugfix release, but due to lack of CI environments supporting old
19 Python versions, only Python 3.7+ is supported. Otherwise:
21 * Snape3058@ found some refcount issues (see issue #35), these have been
23 * Tested and enabled Python 3.10 support, dropped < 3.7.
24 * Various improvements to the CI environments.
25 * Move fully to `setuptools` (where available), in preparation for 3.12
26 dropping `distutils` support.
34 * Expand testing by adding better mixed-access checks (e.g. set via
35 symlink and read on file) and by not leaking resources during tests.
36 * Enable testing with Python 3.9 and confirm compatibility with it.
37 * Fix documentation building with Sphinx 3.0+.
41 *released Tue, 26 Nov 2019*
43 Typo fix release in the bug tracker link :/
47 *released Tue, 26 Nov 2019*
49 Major change: drop compatibility with Python 2, which allows significant
54 * Switch internal implementation of argument parsing to a built-in one
55 (`PyUnicode_FSConverter`), which brings automatic support for
56 path-like objects in Python 3.6+ (#20), and also a more uniform
57 handling of Unicode path arguments with respect to other Python code.
58 * Fix missing error check in list operations in `get_all` (#17).
59 * Switch test library to pytest; not that a reasonable recent version is
60 needed. Additionally, expand test coverage, although not directly
61 visible in actual coverage reports…
65 *released Tue, 24 Jul 2018*
67 Minor bugfix, performance and compatibility release.
69 * Minor compatibility fix: on Linux, drop the use of the `attr` library,
70 and instead switch to the glibc header `sys/xattr.h`, which is
71 provided for a really long time (since glibc 2.3). The formerly used
72 header `attr/xattr.h` has been removed from the `attr` library in
73 version 2.4.48. Fix provided by Lars Wendler, many thanks!
74 * Release the GIL when performing I/O. Patch proposed by xwhuang, many
75 thanks. I tested this a long while back it seemed to impact
76 performance on local filesystems, but upon further inspection, the
77 downsides are minor (between 0 and 5%, in many cases negligible). For
78 remote or slow filesystems, this should allow much increased
80 * Fix symlink set operation on MacOS X; bugfix provided by adamlin, much
81 appreciated! This also uncovered testing problems related to symlinks,
82 which are now fixed (the bug would be caught by the updated tests).
86 *released Mon, 23 Jan 2017*
88 Bugfix and feature release (hence the version bump).
90 The main change is to the implementation of how attributes are listed
91 and read. This was done due to existing race issues when attributes are
92 modified while being read (github issue #12), but basically all various
93 internal paths that dealt with retrieving an attribute value or listing
94 attributes were unified in a single helper function that does handle
95 such concurrent modifications. As a side effect, the size of the buffers
96 used for such reads have changed, which (depending on attribute value)
97 might change the trade-off between number of syscalls done and memory
100 As feature release, OSX support was contributed by Adam Knight
101 <adam@movq.us>, thanks a lot! I don't have access to OSX so the testing
102 for it is done via Travis builds; please report any issues.
106 *released Sat, 09 Apr 2016*
108 Small bugfix release:
110 * Fixes some sign-compare warnings
111 * Fixes potential name truncation in merge_ns()
112 * Fixes building on systems which don't have ENODATA
114 Tested with Python 2.7.11, Python 3.5.1 and PyPy 5.0.1.
118 *released Fri, 01 May 2015*
122 * fixes some more memory leaks when handling out-of-memory in get_all()
124 * improve error reporting when an attribute disappears after we asked
125 for its length but before we managed to read it
126 * fix int/size_t issues found by RedHat/Fedora,
127 https://bugzilla.redhat.com/show_bug.cgi?id=1127310; the fix is
128 different than their fix, but it should accomplish the same thing
129 * convert all code to only do explicit casts after checking boundaries,
130 making the code `-Wconversion`-clean (although that warning is not
135 *released Thu, 30 Apr 2015*
137 Fix memory leaks on some of the error-handling paths of the `get()`
142 *released Fri, 23 May 2014*
144 Small optimisations release:
146 * ari edelkind contributed a speed-up optimisation for handling of files
147 without xattrs (which is, in general, the expected case)
148 * Jonas Borgström contributed a behaviour change to the handling of file
149 names: under Python 3 and up, unicode paths are encoded/decoded using
150 the 'surogatee' handler, instead of the 'strict' handler; while this
151 can hide encoding errors, it mirrors what Python libraries do
152 (e.g. see os.fsencode/fsdecode)
153 * Sean Patrick Santos contributed improvements to the test suite so that
154 it can be used even on files systems which have built-in attributes
155 (e.g. when using SELinux, or NFSv4); to enable this, define the
156 attributes in the TEST_IGNORE_XATTRS environment variable
160 *released Thu, 03 Jan 2013*
162 Bug-fix release. Thanks to Michał Górny, it looked like the library had
163 problem running under pypy, but actually there was a bug in the
164 PyArg_ParseTuple use of et# (signed vs. unsigned, and lack of compiler
165 warnings). This was fixed, and now the test suite passed with many
166 CPython versions and PyPy (version 1.9).
170 *released Wed, 16 May 2012*
172 Bug-fix release. Thanks to Dave Malcolm and his cpychecker tool, a
173 number of significant bugs (refcount leaks and potential NULL-pointer
174 dereferences) have been fixed.
176 Furthermore, compatibility with Python 3 has been improved; this however
177 required changing the meaning of the ``namespace`` argument to the
178 functions: if passed, None is no longer a valid value; pass an empty
179 string if (due to the structure of your program) you have to pass this
180 argument but want to specify no namespace.
182 Also, the project home page has changed from SourceForge to GitHub, and
183 the documentation has been converted from epydoc-based to sphinx.
188 *released Sun, 27 Dec 2009*
190 Implemented support for Python 3. This required a significant change to
191 the C module, hence the new version number.
195 *released Mon, 30 Jun 2008*
199 The old functions ({get,set,list,remove}xattr) are deprecated and replaced with
200 a new API that is namespace-aware and hopefully will allow other OSes (e.g.
201 FreeBSD) to be supported more naturally.
203 Both the old and the new API are supported in the 0.4 versions, however users
204 are encouraged to migrate to the new API.
208 A new bulk get function called get_all() has been added that should be somewhat
209 faster in case of querying files which have many attributes.
213 Since LGPLv3 is not compatible with GPLv2 (which unfortunately I didn't realize
214 before), the license was changed to LGPLv2.1 or later.
218 Unittest coverage was improved.
222 *released Sun, 09 Mar 2008*
224 * changed licence from GPL to LGPL (3 or later)
225 * changed listxattr return type from tuple to a list
226 * developer-related: added unittests
230 *released Sun, 01 Jul 2007*
232 * fixed listing symlink xattrs
236 *released Sat, 11 Feb 2006*
238 * fixed a bug when reading symlink EAs (you weren't able to
240 * fixed a possible memory leak when the actual read of the EA
241 failed but the call to get the length of the EA didn't