News ==== Version 0.6.0 ------------- *unreleased* Major release removing Python 2 support. This allow both code cleanup and new features, such as: - Support for pathlib objects in `apply_to` and `has_extended` functions when running with Python 3.6 and newer. - Use of built-in C API functions for bytes/unicode/pathlib conversion when dealing with file names, removing custom code (with the associated benefits). Important API changes/bug fixes: - Initialisation protocol has been changed, to disallow uninitialised objects; this means that `__new__` will always create valid objects, to prevent the need for checking initialisation status in all code paths; this also (implicitly) fixes memory leaks on re-initialisation (calling `__init__(…)` on an existing object) and segfaults (!) on non-initialised object attribute access. Note ACL re-initialisation is tricky and (still) leads to undefined behaviour of existing Entry objects pointing to it. - Restore `__setstate__`/`__getstate__` support on Linux; this was inadvertently removed due a typo(!) when adding support for it in FreeBSD. Pickle should work again for ACL instances, although not sure how stable this serialisation format actually is. Minor improvements: - When available, add the file path to I/O error messages, which should lead to easier debugging. - The test suite has changed to `pytest`, which allows increased coverage via parameterisation. Version 0.5.4 ------------- *released Thu, 14 Nov 2019* Maintenance release: - Switch build system to Python 3 by default (can be overridden if needed). - Internal improvements for better cpychecker support. - Fix compatibility with PyPy. - Test improvements (both local and on Travis), testing more variations (debug, PyPy). - Improve test coverage, and allow gathering test coverage results. - Drop support (well, drop testing) for Python lower than 2.7. - Minor documentation improvements (closes #9, #12). Version 0.5.3 ------------- *released Thu, 30 Apr 2015* FreeBSD fixes: - Enable all FreeBSD versions after 7.x at level 2 (thanks to Garrett Cooper). - Make test suite pass under FreeBSD, which has a stricter behaviour with regards to invalid ACLs (which we do exercise in the test suite), thanks again to Garret for the bug reports. Version 0.5.2 ------------- *released Sat, 24 May 2014* No visible changes release: just fix tests when running under pypy. Version 0.5.1 ------------- *released Sun, 13 May 2012* A bug-fix only release. Critical bugs (memory leaks and possible segmentation faults) have been fixed thanks to Dave Malcolm and his ``cpychecker`` tool. Additionally, some compatibility issues with Python 3.x have been fixed (str() methods returning bytes). The documentation has been improved and changed from epydoc to sphinx; note however that the documentation is still auto-generated from the docstrings. Project reorganisation: the project home page has been moved from SourceForge to GitHub. Version 0.5 ----------- *released Sun, 27 Dec 2009* Added support for Python 3.x and improved support for Unicode filenames. Version 0.4 ----------- *released Sat, 28 Jun 2008* License ~~~~~~~ Starting with this version, pylibacl is licensed under LGPL 2.1, Febryary 1999 or any later versions (see README.rst and COPYING). Linux support ~~~~~~~~~~~~~ A few more Linux-specific functions: - add the ACL.equiv_mode() method, which will return the equivalent octal mode if this is a basic ACL and raise an IOError exception otherwise - add the acl_extended(...) function, which will check if an fd or path has an extended ACL FreeBSD support ~~~~~~~~~~~~~~~ FreeBSD 7.x will have almost all the acl manipulation functions that Linux has, with the exception of __getstate__/__setstate__. As a workaround, use the str() and ACL(text=...) methods to pass around textual representations. Interface ~~~~~~~~~ At module level there are now a few constants exported for easy-checking at runtime what features have been compiled in: - HAS_ACL_FROM_MODE, denoting whether the ACL constructor supports the mode=0xxx parameter - HAS_ACL_CHECK, denoting whether ACL instances support the check() method - HAS_ACL_ENTRY, denoting whether ACL manipulation is possible and the Entry and Permset classes are available - HAS_EXTENEDED_CHECK, denoting whether the acl_extended function is supported - HAS_EQUIV_MODE, denoting whether ACL instances support the equiv_mode() method Internals ~~~~~~~~~ Many functions have now unittests, which is a good thing. Version 0.3 ----------- *released Sun, 21 Oct 2007* Linux support ~~~~~~~~~~~~~ Under Linux, implement more functions from libacl: - add ACL(mode=...), implementing acl_from_mode - add ACL().to_any_text, implementing acl_to_any_text - add ACL comparison, using acl_cmp - add ACL().check, which is a more descriptive function than validate .. Local Variables: .. mode: rst .. fill-column: 72 .. End: