v0.5.0-rc1
Pre-releaseThe 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'sscripts/alp_orchestrate/(20 modules, ~6.2k lines) is nowpython/tan/planner/, andtan buildrenders the build plan in-process instead of shellingPYTHONPATH=<sdk>/scripts python -m alp_orchestrate --emit build-plan. - Four PyInstaller assets replace the eight-way cargo matrix. The Linux binary is
-gnuand honestly named: it is frozen inpython:3.12-slim-bullseye(Debian 11, glibc 2.31). tan build --executeruns a plan that arrived via--plan-from.tan debug-configresolves a real J-Link device / pyOCD target id from the SDK, before a project has ever been built.- A pending
TBDplaceholder can no longer reach a flasher (#222) — on both the Python and the Rust side. tan monitorwould have been a dead command in every published binary; themonitorextra is now frozen in.install.shno 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-configfillsdevice/targetId/configFilesfrom the SoC's publishedvariants[].debugblock (alp-sdk#1026), and discloses withdebug-config.sdk-identity-overwritewhen doing so replaces a value you filled in by hand.
Changed
scaffold,completion,diff,pinmux,inspectandtraceare not ported yet — see #260 for the deferred set.
Fixed
- A pending
TBDplaceholder reached real flashers (#222).flash_method: TBDfailed safely against the backend registry, butoutput_artefact/firmware_path: TBDresolved to<build_root>/TBDand 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 infa_str/fa_str_checked. tan initcould pin a customer to the WRONG SDK, permanently (#263).tan validateanswered "not ported yet" (exit 1) in a fresh project where the shipped binary answersvalidate.board-yaml-missing(exit 2); an empty or non-mappingboard.yamlis now refused at exit 2 instead of reported clean.tan sdk install/tan sdk switchrefused at exit 5 (InternalFailure) where the oracle refuses at exit 1.tan <cmd> | headexited 1 on Linux and macOS where the oracle exits 0. The defect was POSIX, not Windows — an earlier note had it backwards.project.boardYamlnow agrees with the filesystem in both directions (#236, #170) — the field's contract has always read "if found", and it now reportsnullwhen nothing is there.tan build --pristinereports 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
-muslLinux 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--templatestarters, 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 buildagainst 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 x64tan-x86_64-apple-darwin/tan-aarch64-apple-darwin-- macOStan-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.txtcarries a GitHub build-provenance
attestation. Verify with:
gh attestation verify <downloaded-file> --repo alplabai/tan-cli
Full detail: CHANGELOG.md · full diff