Repository navigation
Releases: nextml-code/fast-s3
Releases · nextml-code/fast-s3
Release list
v4.0.0
fast-s3 4.0.0
Rewrite of the transfer engine for many small files. boto3 is gone; transfers run on a single asyncio event loop with an aiohttp-based S3 client and hand-rolled SigV4 signing, keeping hundreds of requests in flight from one process at ~0.1 ms CPU per object.
Measured on Wasabi eu-central-1 over 1 Gbit ethernet with 27 KB files: ~1,800 files/s download and ~2,200 files/s upload at concurrency 256, versus ~1,600 / ~1,400 for rclone.
Breaking changes
boto3,botocoreands3transferare no longer dependencies.n_workersis deprecated in favour ofconcurrency(default 256);worker_batch_sizeand transfer-manager kwargs were removed.buffer_sizenow bounds memory in ordered mode as well. Defaults to 4x concurrency, or 32x concurrency whenordered=True, because one slow object stalls ordered iteration.- Requires Python >= 3.9.
Added
- Retries with exponential backoff on connection errors and 429/5xx; 404/403 fail immediately and are reported per file, never raised from iteration.
- Hedged GET/HEAD requests (
hedge=) to cut the latency tail. Uploaderaccepts bytes, file paths or file-like objects and reads files lazily under the concurrency limit; usable as a context manager.AsyncS3Clientexported for direct asyncio use.- Tests: AWS signature vectors, retry behaviour against a fake server, optional integration tests (
FAST_S3_TEST_*). benchmarks/compare_rclone.pyandbenchmarks/compare_rclone_upload.py.
🤖 Generated with Claude Code
v3.0.1
v3.0.0
What's Changed
- improve!: use multiprocessing in fetcher by @FelixAbrahamsson in #1
New Contributors
- @FelixAbrahamsson made their first contribution in #1
Full Changelog: v2.0.1...v3.0.0
v2.0.1
v2.0.0
v1.0.0
Version 0.1.1
Full Changelog: v0.1.0...v0.1.1
Version 0.1.0
v0.1.0 build: pypi github workflow
Version 0.0.2
v0.0.2 improve: do not crash on failed downloads