Repository navigation
Releases: tetrodotoxin-dev/Toolchain
Release list
Toolchain 0.7.1
Toolchain 0.7.1 simplifies SDK packaging and imports and improves Python and Starlark readability.
- Keep each platform's SDK metadata together and share the import declaration logic.
- Collect linker inputs in one pass and remove redundant shared-library compilation targets.
- Organize SDK validation and comment classification into named stages with clearer declaration, statement and control-flow paragraphs.
- Preserve component header interfaces and keep generated dependency headers discoverable across build configurations.
Validated on Windows with all 15 integration programs, including SDK consumers, reproducibility and Web execution. The source release was produced by :sdk from the clean tagged commit.
Toolchain 0.7.0
Toolchain 0.7.0 adds root component builds and shared project setup for Linux, Windows and Web.
- Declare source components and their dependencies in one root BUILD file with component() and project().
- Install shared Bazel and VS Code settings through the idempotent :setup command.
- Release independent library archives through one format, host-test, packaging and source-snapshot pass with archive() and sdk().
- Preserve UTF-8 paths and diagnostics in the shared Python command runners.
Validated on Windows with all 15 integration programs, including SDK consumers, reproducibility and Web execution. The source release was produced by :sdk from the clean tagged commit.
Toolchain 0.6.0
Toolchain 0.6.0 improves Windows support and simplifies formatting, validation and SDK releases.
- Fix Windows tool resolution, Web execution and UTF-8 SDK packaging.
- Run host tests and benchmarks as standalone executables.
- Speed up formatting through parallel batches and shared structural analysis.
- Consolidate toolchain configuration and reuse cached compiler and SDK inputs.
- Run formatting, optimized host tests and packaging before creating the source snapshot from a clean Git commit.
- Reuse the configured Bazel server throughout SDK releases.
Upgrade notes
- Replace
bazel build :sdkwithbazel run :sdk. Remove separatesnapshot()declarations. - Use
:tests_weband:benchmarks_webinstead of running native targets with--config=web. - Configure shared output-directory startup options in
.bazelrc.
Windows runtime validation still requires a Windows host.
Toolchain 0.5.0
Toolchain 0.5.0 makes SDK header publication explicit and runs Web validation through the standard project workflow.
Main update:
Projects run tests and benchmarks with --config=web while ordinary Web binaries retain the hosted SDK platform. Headers remain public by default; implementation headers define TOOLCHAIN_PRIVATE_HEADER as 1 locally. Packaging omits marked files and rejects public headers that depend on them.
Features:
- Run
:testsand:benchmarksunder the standard Web configuration through the pinned Emscripten and Node toolchain. - Select a project's static runtime for standalone Web validation while preserving its ordinary source linkage.
- Configure Emscripten thread support independently for validation programs.
- Mark implementation-only headers at their declaration without adding Bazel wrapper targets or path conventions.
- Exclude marked headers from SDK archives and component metadata, and require published header dependencies to remain public.
- Apply source path and namespace checks to unmarked headers under every source directory.
- Keep placement construction compatible with foreign standard-library headers while retaining the standalone header surface.
The 0.5.0 hotpatch supports publishing several SDK modules from one repository. Auxiliary packages preserve the primary module's static validation runtime.
Toolchain 0.4.2
Toolchain 0.4.2 supports SDKs that combine packaged runtimes with libraries supplied by the host system.
Main update:
SDKs can distribute runtime-only Windows DLLs and host-provided link interfaces. Imported component dependencies reuse identical packaged runtimes, allowing static and shared consumers to compose SDKs without duplicate library definitions.
Features:
- Package Windows runtime DLLs that have no import library.
- Preserve system-provided link interfaces and linker options while leaving the corresponding runtime with the host.
- Reconcile identical runtime libraries across SDK components and reject conflicting contents or interface definitions.
- Preserve public compilation requirements and static/shared dependency linkage through SDK import.
- Support executable and shared-library consumers of composed SDK dependencies.
- Keep existing Perimortem and TTX SDK archives usable without repackaging.
Native Windows execution remains unvalidated.
Toolchain 0.4.1
Toolchain 0.4.1 preserves dependency linkage across SDK packaging and import, and retains TTX's scoped C-provider allocation policy.
Main update:
SDKs carry the static archives and shared runtimes required by their declared dependencies. Static and shared outputs can each select either dependency linkage through ordinary Bazel dependency targets. Separate repository names can import both variants of one published library in the same workspace.
TTX's retention provider remains C-authored so its tests exercise negotiation, substitution and release without relying on C++ provider helpers or native type identity.
Features:
- Bundle transitive static archives with their linker options and whole-archive initialization requirements.
- Preserve shared runtime dependencies and Windows import libraries alongside the consuming SDK.
- Separate an SDK repository's name from its published library identity with the optional
libraryfield. - Reuse matching declared dependency binaries and reject conflicting contents or static link requirements.
- Reject unavailable requested linkage variants instead of substituting another variant.
- Permit
mallocandfreeonly for modulettxatvalidation/providers/retention/provider.c. - Keep that allocation exception confined to those two operations and that complete source path in Toolchain's reviewed source policy.
Toolchain 0.4.0
Toolchain 0.4.0 adds executable Web validation without changing the hosted Wasm SDK boundary.
Main update:
Projects can run their existing :tests and :benchmarks targets with --config=web_tests. Toolchain links those programs with a pinned Emscripten runtime and executes them through a pinned Node host, while --config=web continues to produce import-only hosted modules.
Features:
- Add a standalone wasm32 validation platform for Linux x86-64 hosts.
- Pin the complete Emscripten SDK and Node runtime used by Web validation.
- Preserve the public validation target names across native and Web execution.
- Let tests and benchmarks declare distinct runtime artifacts without leaking them into the other runner.
- Keep native filesystem fixtures out of Web programs without weakening in-memory coverage.
- Package the Web launcher and runtime repositories in source snapshots.
- Validate Web execution from an independent SDK consumer.
- Require each primary header type to carry a directly attached contract, including acronym and numeric type names.
- Keep standalone C++ namespace facades in
.hppfiles while allowing C++ conveniences attached directly to C ABI records.
Toolchain 0.3.5
Toolchain 0.3.5 makes source-aware comment review stricter while reducing repeated full-tree formatter work.
Main update:
Formatter analysis now connects a primary type comment to its complete declaration. It rejects representation-first introductions, incomplete canonical-form contracts, unchecked construction of canonical values and unexplained public size bounds. Shared lexical and token data remove repeated scans from repository-wide formatting.
Features:
- Inspect complete class and struct declarations during comment classification.
- Keep critical source-context omissions from being cancelled by unrelated prose signals.
- Distinguish canonical validity, identity and emission contracts.
- Require public size bounds to state their basis and over-limit behavior.
- Preserve standard technical spelling such as UTF-8, SHA-256 and x86-64.
- Add paired Path and public-bound corpus cases.
- Reuse parsed source and token streams across formatter policies.
- Replace quadratic trailing-return scope searches with linear indexing.
Toolchain 0.3.4
Toolchain 0.3.4 makes reusable validation behavior, implementation type identity and primary type contracts enforceable across Tetrodotoxin repositories.
Main update:
Validation projects share canonical move only and lifetime tracking fixtures. Formatter policy rejects repeated namespace scope type identities, vague context ownership and primary type documentation built from inventories of absent capabilities.
Features:
- Add Toolchain::Validation::MoveOnly for operations that must transfer rather than copy a value.
- Add Toolchain::Validation::TrackedValue for construction and destruction accounting across temporaries and stored values.
- Reject one namespace scope class, struct, union or enum name defined by multiple implementation files.
- Keep test and benchmark registration in explicit static objects without anonymous namespaces.
- Reject ambiguous claims that a type owns a context, identity or lifetime.
- Reject primary type comments that define scope by listing unsupported capabilities.
- Add paired Thread regression cases for the rejected and revised comment forms.
- Package the shared validation headers through the SDK boundary.
Toolchain 0.3.3
Toolchain 0.3.3 strengthens the compile-time and source-quality contracts shared by Tetrodotoxin repositories.
Main update:
Compiler-only facilities now live in explicit Toolchain::Compile headers, while formatter policy makes comment contracts and unsafe data conversions reviewable at their owning boundary.
Features:
- Add
Toolchain::Compile::Allocationfor arrays that can exist only during constant evaluation. - Add
Toolchain::Compile::SourceLocationas the compiler call-site primitive that consumers wrap with their own string and safety contracts. - Keep compile and lifetime helpers out of the umbrella header so consumers declare their actual dependencies.
- Require native named casts and bit casts to pass through Perimortem's reviewed
Databoundary. - Reject vague admit-family aliases and check relocation comments against their source, destination, and lifetime responsibilities.
- Require open container capabilities to document every policy hook with its callable shape and local invariant.
- Enforce the canonical
valueterminology for Vector and Bytes comments. - Preserve policy signature formatting without treating indented declarations as prose.
- Package and independently verify the new compile headers through the SDK integration boundary.