Release Pipeline
EarthSciAST releases five language bindings and two command-line tools under
one version number. The maintainer checklist, one-time registry setup and
recovery steps are in
RELEASING.md
;
this page describes how the automation fits together.
| Binding or tool | Ships as | Where |
|---|---|---|
| Julia | EarthSciAST | General registry |
| TypeScript | @earthsciml/ast | npm |
| Python | earthsci-ast | PyPI |
| Rust | earthsci-ast | crates.io |
| Go | github.com/EarthSciML/EarthSciAST/pkg/earthsci-ast-go | Go module proxy |
esm, esm-narrative | per-platform archives | GitHub release |
Julia first, then everything else
A release runs as three workflows, in order:
- Register (
release-register.yml). A push tomainthat changes the version inpkg/EarthSciAST.jl/Project.tomlruns the release gates — version sync across all nine version sites, a security scan, the conformance suite and the MTK compiler-agreement tier — and then asks JuliaRegistrator to register that commit, with release notes. Nothing is tagged or published. - Tag (
TagBot.yml). When the General registry accepts the registration, TagBot tags the registered commitv<version>and creates the GitHub release from the registration’s notes. - Publish (
release.yml). The tag push confirms that the tagged commit is the one General registered, then publishes to PyPI, crates.io, npm and the Go proxy, and attachesesmandesm-narrativefor Linux x64, Linux ARM64, macOS x64, macOS ARM64 and Windows x64 to the release. The Linux builds are linked against glibc 2.17, so they run on any glibc-based distribution from the last decade.
The Julia registry goes first because it is the one that can refuse a release
after review, while npm, PyPI and crates.io never let a version number be
reused. If General refuses, the fix is a new commit on main and the same
version is registered again from it; no other registry has published anything
yet, so every binding still ships from one commit.
Version numbers
The package version (currently 0.x) is separate from the esm format version
(1.0.0, in every document’s esm field). Changing the format version is a
spec change; see SCHEMA_CHANGE_PROCEDURE.md
.