Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,21 @@ public APIs may still change while the backend design stabilizes.

## [Unreleased]

## [0.2.0b1] - 2026-06-12

### Added

- Added the public `DuplexStream` API contract for backend-level full-duplex
capture and playback.
- Added native macOS `DuplexStream` support backed by Core Audio input and
output queues owned by one native stream object.
- Added native Linux `DuplexStream` support backed by one miniaudio duplex
device callback.

### Changed

- Promoted package metadata from pre-alpha to beta.
- Kept wheel builds intentionally per-CPython-version rather than stable ABI.

## [0.2.0a3] - 2026-06-12

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
`tachyaudio` is a low-level audio package intended to replace tachypy’s direct
dependency on `sounddevice`/PortAudio over time.

Status: pre-alpha. The native backend currently supports macOS through Core
Audio and Linux through vendored `miniaudio`. Windows support is not implemented
yet.
Status: beta. The native backend currently supports macOS through Core Audio and
Linux through vendored `miniaudio`. Windows support is planned but intentionally
deferred until Windows test hardware is available.

## Goals

Expand Down
9 changes: 8 additions & 1 deletion docs/python-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
- Treat Python 3.10 as the lower-bound type-checking target.
- Add version-specific code only behind narrow compatibility helpers.

## Wheel targets
## Wheel targets and ABI decision

Initial wheel scope:

Expand All @@ -25,5 +25,12 @@ The native extension currently uses the regular CPython C API. That means wheel
builds are per-CPython-version. Moving to Python’s stable ABI can be evaluated
later, but only after the native API settles.

For the public beta, `tachyaudio` intentionally ships per-version CPython
wheels (`cp310` through `cp314`) rather than `abi3` wheels. This keeps the
native backend implementation unconstrained while macOS and Linux playback,
capture, duplex streams, and diagnostics are still evolving. The additional
wheel matrix is acceptable because cibuildwheel already builds the supported
Python minors explicitly.

CI should run unit tests on every supported Python minor version before a wheel
is published.
51 changes: 51 additions & 0 deletions docs/release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Release checklist

This project publishes platform wheels for supported CPython versions instead
of `abi3` wheels.

## Beta release flow

1. Merge the release-prep pull request.
2. Tag the merged commit:

```bash
git checkout main
git pull --ff-only
git tag -a v0.2.0b1 -m "v0.2.0b1"
git push origin v0.2.0b1
```

3. Wait for the GitHub Actions `wheels` workflow to finish for the tag.
4. Download the `linux-wheels` and `macos-wheels` artifacts.
5. Build the source distribution from the tagged commit:

```bash
python -m build --sdist
```

6. Validate package metadata:

```bash
python -m twine check dist/*
```

7. Upload to TestPyPI first:

```bash
python -m twine upload --repository testpypi dist/*
```

8. Install from TestPyPI in a clean environment and smoke-test import plus a
short playback/capture check where hardware is available.
9. Upload to PyPI:

```bash
python -m twine upload dist/*
```

10. Create the GitHub release for the tag and attach wheel artifacts.

## Windows support

Windows wheels are intentionally not published until WASAPI support has been
implemented and validated on Windows hardware.
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "tachyaudio"
version = "0.2.0a3"
version = "0.2.0b1"
description = "Low-level audio primitives for tachypy and Python experiments."
readme = "README.md"
license = "MIT"
Expand All @@ -14,7 +14,7 @@ authors = [
{ name = "tachyaudio contributors" }
]
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Programming Language :: Python :: 3",
Expand Down
2 changes: 1 addition & 1 deletion src/tachyaudio/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.2.0a3"
__version__ = "0.2.0b1"
Loading