Added:
- atomic_write() context manager, write_text() and write_bytes() helpers
- safewrite CLI, a sponge workalike that refuses to truncate a file on empty input
- permissions handling: an existing file keeps its mode, a new one follows umask, explicit perms are applied before the first byte, setuid/setgid are restored after the swap
- durable=True fsyncs both the file and its directory; symlinks are followed by default
- overwrite=False implemented via os.link(), so it does not race with another writer
- py.typed marker, full type annotations, checked with mypy --strict
- CI on Python 3.8-3.14, Linux, macOS and Windows