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
20 changes: 20 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,26 @@ use_repo(meld, "meld_toolchain")

register_toolchains("@meld_toolchain//:meld_toolchain")

# spar toolchain: AADL architecture model -> WIT generation
spar = use_extension("//wasm:extensions.bzl", "spar")
spar.register(
name = "spar",
version = "0.9.3",
)
use_repo(spar, "spar_toolchain")

register_toolchains("@spar_toolchain//:spar_toolchain")

# witness toolchain: MC/DC branch coverage for WASM core modules
witness = use_extension("//wasm:extensions.bzl", "witness")
witness.register(
name = "witness",
version = "0.22.0",
)
use_repo(witness, "witness_toolchain")

register_toolchains("@witness_toolchain//:witness_toolchain")

# MoonBit hermetic toolchain for WebAssembly component builds (dev only)
# NOTE: Not eagerly loaded - MoonBit uses rolling /latest/ URLs that cause
# checksum drift and build failures, same as componentize-py.
Expand Down
70 changes: 59 additions & 11 deletions MODULE.bazel.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 35 additions & 0 deletions checksums/tools/spar.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"tool_name": "spar",
"github_repo": "pulseengine/spar",
"description": "AADL v2.3 architecture toolchain — generates WIT interfaces from AADL models",
"latest_version": "0.9.3",
"last_checked": "2026-05-20T00:00:00Z",
"supported_platforms": ["darwin_amd64", "darwin_arm64", "linux_amd64", "linux_arm64", "windows_amd64"],
"versions": {
"0.9.3": {
"release_date": "2026-05-11",
"platforms": {
"darwin_amd64": {
"sha256": "8fae9cd2e049ded4f5a3ab6320459549983655ae19dad7509d787bdccbb3fbfb",
"url_suffix": "x86_64-apple-darwin.tar.gz"
},
"darwin_arm64": {
"sha256": "cddd41e1397b336cbedf6aa8502fdbad3cda0cf06fe0f8068a5892846874bb87",
"url_suffix": "aarch64-apple-darwin.tar.gz"
},
"linux_amd64": {
"sha256": "b084297b4cc368e60c1374be4dd698e9d99e2178300ab6f267449bd8f4a5b6ea",
"url_suffix": "x86_64-unknown-linux-gnu.tar.gz"
},
"linux_arm64": {
"sha256": "bf012f4644df19c6742d461d7d0d83611476f4a557ef53d55c8b5e129e9eac79",
"url_suffix": "aarch64-unknown-linux-gnu.tar.gz"
},
"windows_amd64": {
"sha256": "3cc2ba69b5d8a616aedc9a36c24ffa4ac91e04506db95b7961c1d4b1fefc2b83",
"url_suffix": "x86_64-pc-windows-msvc.zip"
}
}
}
}
}
35 changes: 35 additions & 0 deletions checksums/tools/witness.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"tool_name": "witness",
"github_repo": "pulseengine/witness",
"description": "MC/DC-style branch coverage for WebAssembly core modules",
"latest_version": "0.22.0",
"last_checked": "2026-05-20T00:00:00Z",
"supported_platforms": ["darwin_amd64", "darwin_arm64", "linux_amd64", "linux_arm64", "windows_amd64"],
"versions": {
"0.22.0": {
"release_date": "2026-05-18",
"platforms": {
"darwin_amd64": {
"sha256": "fa93f9f375c62f5bcf1a53e168a77654b4f2c29f0711c80c002bcba593f5ce95",
"url_suffix": "x86_64-apple-darwin.tar.gz"
},
"darwin_arm64": {
"sha256": "4f2f5202c8b749a7b0b7a940ccf74eaddc75f14012ea2065a88c1a61ac10bddf",
"url_suffix": "aarch64-apple-darwin.tar.gz"
},
"linux_amd64": {
"sha256": "51d6bcbb05e82467d68b62d0e178f32ff06393f07ecb734c925efafebb79954f",
"url_suffix": "x86_64-unknown-linux-gnu.tar.gz"
},
"linux_arm64": {
"sha256": "b61786fdda273b972a9e1e2b5ec3c1b44935eab1a9e4e7d5ada97c0b5029d055",
"url_suffix": "aarch64-unknown-linux-gnu.tar.gz"
},
"windows_amd64": {
"sha256": "517d0d068c492f6a96685ead7e86478909096c40960bea9159812dc4c3741701",
"url_suffix": "x86_64-pc-windows-msvc.zip"
}
}
}
}
}
26 changes: 26 additions & 0 deletions examples/spar_example/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
"""Example: generate WIT interfaces from an AADL architecture model with spar.

spar instantiates the AADL system named by `root` and emits one `.wit` file
per AADL `process` instance. This is the front of the PulseEngine pipeline:

AADL model -> spar -> WIT -> wit_library -> wit_bindgen -> component
"""

load("@bazel_skylib//rules:build_test.bzl", "build_test")
load("@rules_wasm_component//wasm:defs.bzl", "aadl_wit_library")

package(default_visibility = ["//visibility:public"])

# building_control.aadl is the canonical AADL "building control" model
# (vendored from pulseengine/spar test data). Its system implementation
# BuildingControlDemo.Impl contains one process, TempControlProcess.
aadl_wit_library(
name = "building_control_wit",
srcs = ["building_control.aadl"],
root = "BuildingControl::BuildingControlDemo.Impl",
)

build_test(
name = "spar_example_test",
targets = [":building_control_wit"],
)
Loading
Loading