Skip to content

Releases: dirkpetersen/python-pwalk

v0.1.6 - Complete Wheel Matrix with Updated cibuildwheel

19 Oct 18:05

Choose a tag to compare

🎯 What's New in v0.1.6

Fixed Missing Wheels

  • Upgraded cibuildwheel from v2.16.2 to v2.22 for full Python 3.13/3.14 support
  • Now building ALL Python versions including regular CP313/CP314 and PyPy 3.11

Complete Wheel Matrix

This release should include:

  • βœ… CPython 3.10, 3.11, 3.12, 3.13, 3.14 (regular)
  • βœ… CPython 3.13t, 3.14t (No-GIL free-threading)
  • βœ… PyPy 3.10, 3.11

Installation

# Regular CPython (any version)
pip install pwalk

# Free-threading CPython (No GIL!)
python3.13t -m pip install pwalk
PYTHON_GIL=0 python3.13t your_script.py

# PyPy (JIT-compiled)
pypy3 -m pip install pwalk

What Changed from v0.1.5

  • Upgraded cibuildwheel: v2.16.2 β†’ v2.22
  • This adds Python 3.13/3.14 support to cibuildwheel
  • PyPy 3.11 wheel should now build correctly

Full Changelog: v0.1.5...v0.1.6

v0.1.5 - Fixed Free-Threading Wheel Platform Tags

19 Oct 17:57

Choose a tag to compare

What's New in v0.1.5

Fixed

  • πŸ”§ Free-threading wheel platform tags - Now uses proper manylinux tags instead of linux_x86_64
  • βœ… auditwheel integration - Automatically repairs wheels for PyPI compatibility

What Was Wrong in v0.1.4

PyPI rejected free-threading wheels with error:

Binary wheel has an unsupported platform tag 'linux_x86_64'

The Fix

Added auditwheel repair step to convert wheel tags:

  • linux_x86_64 β†’ manylinux_2_17_x86_64
  • This is the standard approach for Linux wheel distribution

Wheel Matrix (Now Complete!)

Python Version Wheel Available
CPython 3.10-3.14 βœ…
CPython 3.13t, 3.14t (No GIL) βœ…
PyPy 3.10, 3.11 βœ…

Installation

# Free-threading CPython (No GIL\!)
python3.13t -m pip install pwalk==0.1.5
PYTHON_GIL=0 python3.13t your_script.py

Full Changelog: v0.1.4...v0.1.5

v0.1.4 - Complete Wheel Matrix (CPython + No GIL + PyPy)

19 Oct 17:50

Choose a tag to compare

πŸš€ What's New in v0.1.4

Complete Wheel Coverage

This release includes ALL wheel types properly built and published to PyPI!

βœ… CPython Regular: 3.10, 3.11, 3.12, 3.13, 3.14
βœ… CPython No-GIL: 3.13t, 3.14t (free-threading builds)
βœ… PyPy: 3.10, 3.11 (JIT-compiled)

What Was Fixed

  • Updated publish-pypi.yml to match build-wheels.yml
  • Added free-threading wheel build job using actions/setup-python@v5
  • Added PyPy wheel build step
  • All artifacts now properly merged and published to PyPI

Installation

# Regular CPython (most users)
pip install pwalk==0.1.4

# Free-threading CPython (No GIL\!)
python3.13t -m pip install pwalk==0.1.4
PYTHON_GIL=0 python3.13t your_script.py

# PyPy (JIT-compiled Python)
pypy3 -m pip install pwalk==0.1.4

Multi-Threading Performance

Python Version walk() report()
CPython 3.10-3.14 ❌ βœ…
CPython 3.13t/3.14t βœ… βœ…
PyPy 3.10-3.11 ❌ βœ…

Legend: βœ… = Multi-threaded (5-10x faster) | ❌ = Single-threaded

Verification

After installing, verify your Python environment:

# For free-threading Python
PYTHON_GIL=0 python3.13t -c "import sys; print(f'GIL disabled: {not sys._is_gil_enabled()}')"

# For all Python versions
python -c "import pwalk; print(f'pwalk version: {pwalk.__version__}')"

Technical Details

  • Free-threading wheels built with actions/setup-python@v5
  • Wheel tags: cp313t, cp314t for no-GIL builds
  • All builds tested with PYTHON_GIL=0 pytest
  • 23/23 tests passing on all platforms

Full Changelog: v0.1.3...v0.1.4

v0.1.3 - Free-Threading Wheels Available\!

19 Oct 17:43

Choose a tag to compare

πŸŽ‰ What's New in v0.1.3

Free-Threading Python Wheels!

  • βœ… Python 3.13t and 3.14t wheels - Pre-compiled no-GIL builds now available!
  • βœ… Native GitHub Actions support - Using actions/setup-python@v5 with 't' suffix
  • βœ… Verified GIL-free operation - sys._is_gil_enabled() = False
  • βœ… All tests passing with PYTHON_GIL=0

Complete Wheel Matrix

Python Version Available Install Command
CPython 3.10 βœ… pip install pwalk
CPython 3.11 βœ… pip install pwalk
CPython 3.12 βœ… pip install pwalk
CPython 3.13 βœ… pip install pwalk
CPython 3.13t (No GIL) βœ… python3.13t -m pip install pwalk
CPython 3.14 βœ… pip install pwalk
CPython 3.14t (No GIL) βœ… python3.14t -m pip install pwalk
PyPy 3.10 βœ… pypy3 -m pip install pwalk
PyPy 3.11 βœ… pypy3 -m pip install pwalk

Installation

# Regular CPython
pip install pwalk

# Free-threading CPython (No GIL\!)
python3.13t -m pip install pwalk
PYTHON_GIL=0 python3.13t your_script.py

# PyPy (JIT-compiled)
pypy3 -m pip install pwalk

Free-Threading Usage

# Set environment variable to keep GIL disabled
export PYTHON_GIL=0

# Or inline
PYTHON_GIL=0 python3.13t -c "
from pwalk import report
output, errors = report('/data', compress='zstd')
print(f'Report: {output}')
"

Multi-Threading Support

Python Version walk() report()
CPython 3.10-3.14 ❌ βœ…
CPython 3.13t/3.14t βœ… βœ…
PyPy 3.10-3.11 ❌ βœ…

βœ… = Multi-threaded (5-10x faster)

Technical Details

  • Built with actions/setup-python@v5 native free-threading support
  • Wheel tags: cp313t, cp314t for no-GIL builds
  • Tested locally on Python 3.14.0t and PyPy 7.3.20
  • All 23 tests passing on all platforms

References

Full Changelog: v0.1.2...v0.1.3

v0.1.2 - PyPy Support & Free-Threading Enhancements

19 Oct 17:16

Choose a tag to compare

What's New in v0.1.2

New Python Implementation Support

  • πŸŽ‰ PyPy 3.10 and 3.11 wheels - JIT-compiled Python alternative
  • πŸš€ Free-threading Python 3.13t and 3.14t wheels - No-GIL builds
  • πŸ“Š Multi-threading support matrix - Clear table showing which versions support parallel operations

Free-Threading Improvements

  • βœ… PYTHON_GIL=0 documentation - How to run with GIL truly disabled
  • βœ… GitHub Actions integration - Tests run with PYTHON_GIL=0 for free-threading builds
  • βœ… Comprehensive free-threading guide - 4 ways to get free-threading Python

Documentation Enhancements

  • πŸ“‹ Multi-threading support table - Visual matrix showing walk() vs report() parallelism
  • πŸ”§ PyPy threading clarification - Explains GIL release in C extensions
  • πŸ“ Badge fixes - All README badges now display correctly
  • βš–οΈ GPL v2 license - Clarified and updated LICENSE file

Wheel Builds Available For:

  • CPython: 3.10, 3.11, 3.12, 3.13, 3.14
  • CPython (No GIL): 3.13t, 3.14t
  • PyPy: 3.10, 3.11

Installation

# Regular CPython
pip install pwalk

# Free-threading CPython
python3.13t -m pip install pwalk
PYTHON_GIL=0 python3.13t your_script.py

# PyPy
pypy3 -m pip install pwalk

Testing

  • βœ… All 23 tests passing on CPython, PyPy, and free-threading builds
  • βœ… Tested locally on Python 3.14.0t (No GIL) and PyPy 7.3.20
  • βœ… Multi-threaded report() confirmed working on all implementations

Performance

  • report(): Multi-threaded on all Python versions (5-10x faster)
  • walk(): Single-threaded except on Python 3.13t/3.14t with PYTHON_GIL=0

Full Changelog: v0.1.1...v0.1.2

v0.1.1 - Performance Benchmarks & Future Strategy

18 Oct 23:05

Choose a tag to compare

What's New in v0.1.1

Added

  • πŸƒ Performance Benchmark Script: New ======================================================================
    pwalk.walk() vs os.walk() Performance Benchmark
    ======================================================================

Small Tree (depth=2, dirs=3, files=10):

Creating test tree in /tmp/tmp7xjzmrhm...
Test tree created: 40 files

Benchmarking os.walk()...
Benchmarking pwalk.walk()...

Results:
os.walk(): 0.0001s (590,054 files/sec)
pwalk.walk(): 0.0012s (34,509 files/sec)

Speedup: 0.06x
⚠️ os.walk() is 17.10x faster (small tree overhead)

Medium Tree (depth=3, dirs=5, files=20):

Creating test tree in /tmp/tmp7bdm_gu4...
Test tree created: 620 files

Benchmarking os.walk()...
Benchmarking pwalk.walk()...

Results:
os.walk(): 0.0009s (691,982 files/sec)
pwalk.walk(): 0.0010s (640,615 files/sec)

Speedup: 0.93x
⚠️ os.walk() is 1.08x faster (small tree overhead)

Large Tree (depth=4, dirs=4, files=30):

Creating test tree in /tmp/tmpirlslgdp...
Test tree created: 2,550 files

Benchmarking os.walk()...
Benchmarking pwalk.walk()...

Results:
os.walk(): 0.0023s (1,116,671 files/sec)
pwalk.walk(): 0.0022s (1,136,567 files/sec)

Speedup: 1.02x
βœ… pwalk is 1.02x faster!

======================================================================
Benchmark Complete

Note: For large trees (millions of files), pwalk.walk() shows
significant speedup. Small trees may show overhead due to threading.

For real performance gains, run pwalk.report() on large directories:
python -m pwalk.report /large/directory to compare pwalk.walk() vs os.walk() performance

  • πŸ“š Advanced Optimization Strategy: Comprehensive documentation of future performance optimizations for network filesystems (NFS, Lustre, Weka, BeeGFS, GPFS)

Documentation

  • GIL_FREE_STRATEGY.md: Detailed roadmap for advanced optimizations including:
    • CPU affinity and NUMA optimization
    • Kernel-level optimizations (getdents64, statx, O_DIRECT)
    • io_uring for async I/O (Linux 5.1+)
    • eBPF kernel-level filtering
    • Lock-free data structures and work-stealing
    • Network filesystem-specific tuning

Technical Details

  • All 23 tests passing
  • No breaking changes - 100% compatible with v0.1.0
  • Ready for production use

Installation

pip install pwalk==0.1.1

Quick Test

# Run the benchmark
python -m benchmarks.benchmark_vs_oswalk

# Try pwalk on your filesystem
python -c "from pwalk import walk; print(sum(len(f) for _,_,f in walk('.')))```

**Full Changelog**: https://github.com/dirkpetersen/python-pwalk/compare/v0.1.0...v0.1.1

v0.1.0 - First Production Release

18 Oct 22:08

Choose a tag to compare

python-pwalk v0.1.0

High-performance filesystem analysis with 23x zstd compression.

pip install pwalk

Features: 5-10x faster, zero dependencies, Python 3.10-3.14.

Based on John Dey's filesystem-reporting-tools.