Skip to content

v0.5.0-rc1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Aug 01:00
· 433 commits to dev since this release
6321f74

The first release in which tan is a Python program: the planner moved into it, so tan now plans and executes, and the four assets are PyInstaller freezes of python/ rather than cargo builds of crates/.

No stable user upgrades onto this release. The tag publishes with prerelease: true / make_latest: false, and both installers resolve latest through GitHub — which excludes prereleases — so install.sh and install.ps1 still fetch the last stable release. SUPPORTED_CLI_VERSION in alp-sdk-vscode moves to 0.5.0-rc1 only on that extension's pre-release channel (extension v0.5.0, an odd minor); stable extension users stay on an even minor pinned at the Rust tan until GA (#268). Everyone else installs by hand.

Highlights

  • The planner relocated into tan. alp-sdk's scripts/alp_orchestrate/ (20 modules, ~6.2k lines) is now python/tan/planner/, and tan build renders the build plan in-process instead of shelling PYTHONPATH=<sdk>/scripts python -m alp_orchestrate --emit build-plan.
  • Four PyInstaller assets replace the eight-way cargo matrix. The Linux binary is -gnu and honestly named: it is frozen in python:3.12-slim-bullseye (Debian 11, glibc 2.31).
  • tan build --execute runs a plan that arrived via --plan-from.
  • tan debug-config resolves a real J-Link device / pyOCD target id from the SDK, before a project has ever been built.
  • A pending TBD placeholder can no longer reach a flasher (#222) — on both the Python and the Rust side.
  • tan monitor would have been a dead command in every published binary; the monitor extra is now frozen in.
  • install.sh no longer hands a musl host a binary that cannot exec.

Added

  • tan build --execute — run a plan produced by --plan-from, instead of re-planning it.
  • tan debug-config fills device / targetId / configFiles from the SoC's published variants[].debug block (alp-sdk#1026), and discloses with debug-config.sdk-identity-overwrite when doing so replaces a value you filled in by hand.

Changed

  • scaffold, completion, diff, pinmux, inspect and trace are not ported yet — see #260 for the deferred set.

Fixed

  • A pending TBD placeholder reached real flashers (#222). flash_method: TBD failed safely against the backend registry, but output_artefact/firmware_path: TBD resolved to <build_root>/TBD and reached a real J-Link write. One definition (flash_plan.is_pending) now answers it for the whole path; the Rust half fixed the same defect in fa_str / fa_str_checked.
  • tan init could pin a customer to the WRONG SDK, permanently (#263).
  • tan validate answered "not ported yet" (exit 1) in a fresh project where the shipped binary answers validate.board-yaml-missing (exit 2); an empty or non-mapping board.yaml is now refused at exit 2 instead of reported clean.
  • tan sdk install / tan sdk switch refused at exit 5 (InternalFailure) where the oracle refuses at exit 1.
  • tan <cmd> | head exited 1 on Linux and macOS where the oracle exits 0. The defect was POSIX, not Windows — an earlier note had it backwards.
  • project.boardYaml now agrees with the filesystem in both directions (#236, #170) — the field's contract has always read "if found", and it now reports null when nothing is there.
  • tan build --pristine reports the slices it did not wipe (#183).
  • Linux and macOS see the manual-install hints the SDK provides for them (#230).
  • The npm shim asked for a -musl Linux asset this release does not publish, so every npm install on Linux x64 requested a 404.

What this RC has and has not been exercised on

  • Built and driven end to end on Windows before the tag: init --from-example peripheral-io/blink -> validate --offline -> generate --all (9/9 targets), all six bundled --template starters, and the packaged-binary conformance suite (7/7).
  • The macOS and Linux binaries are built by CI and self-verified there, but have not been driven through a real project by hand.
  • tan build against real silicon is not covered by any of that. Exercising it is what this RC is for.

Release assets

Four binaries, each a single-file freeze of the Python tan:

  • tan-x86_64-pc-windows-msvc.exe -- Windows x64
  • tan-x86_64-apple-darwin / tan-aarch64-apple-darwin -- macOS
  • tan-x86_64-unknown-linux-gnu -- Linux x64, frozen on Debian 11.
    It requires GLIBC_2.30 or newer -- measured from the
    binary's own bundled payload at build time, not assumed from the
    build image. Debian 11+ / Ubuntu 20.04+ / RHEL 9+ are comfortably
    above it.

There is no arm64 Windows and no arm64 Linux asset in this release,
and no -musl asset. A frozen binary has to be built on the
architecture it runs on, and this release builds on four runners; if
you need an arm64 Linux or arm64 Windows tan, install from source
(pip install ./python) and say so on the issue tracker.

  • Every binary + checksums.txt carries a GitHub build-provenance
    attestation. Verify with:
    gh attestation verify <downloaded-file> --repo alplabai/tan-cli

Full detail: CHANGELOG.md · full diff