Skip to content

Releases: iustin/pylibacl

Release 0.7.0

23 Apr 20:23
v0.7.0
Compare
Choose a tag to compare

Important: Python 3.7 is the minimum supported version, due to difficulty of testing old releases, and the fact that everything older has been deprecated a long time ago (e.g. 3.6 at the end of 2021).

Otherwise, a minor release:

  • Improve error handling in some corner cases (not expected to have any real-life impact, but who knows).
  • Improved testing coverage and test infrastructure.
  • Modernise parts of the C code based on recent Python version guidelines.
  • Add a simple security policy and contribution guidelines.

Release 0.6.0 - Python 3 only!

29 Nov 01:47
v0.6.0
Compare
Choose a tag to compare

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.
  • Fix another bug in ACL re-initialisation where failures would result in invalid objects; now failed re-initialisation does not touch the
    original object.
  • 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.
  • Additionally, slightly change __setstate__() input to not allow Unicode, since the serialisation format is an opaque binary format.
  • Fix (and change) entry qualifier (which is a user/group ID) behaviour: assume/require that uid_t/gid_t are unsigned types (they are with
    glibc, MacOS and FreeBSD at least; the standard doesn't document the signedness), and convert parsing and returning the qualifier to behave accordingly. The breakage was most apparent on 32-bit architectures, in which context the problem was originally reported (see issue #13).

Minor improvements:

  • Added a data keyword argument to ACL(), which allows restoring an ACL directly from a serialised form (as given by __getstate__()),
    which should simplify some uses cases (a = ACL(); a.__setstate__(…)).
  • 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.

Release 0.5.4

14 Nov 11:23
pylibacl-v0.5.4
Compare
Choose a tag to compare

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).

FreeBSD fixes release

30 Apr 20:44
pylibacl-v0.5.3
Compare
Choose a tag to compare

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

23 May 22:45
pylibacl-v0.5.2
Compare
Choose a tag to compare

No visible changes release: just fix tests when running under pypy.