abstack is a declarative DSL compiler that unifies image build definition (template) and service runtime instantiation (service).
A single .abs file compiles into:
Dockerfile.<service>per service.docker-compose.generated.ymlwith service runtime projection.
v0.6.0
Instead of authoring Dockerfile and compose separately, abstack treats compose as a projection target over template-driven Docker semantics.
cmake --preset native
cmake --build --preset native
./build/native/abstack samples/unified.abs --out-dir generatedRun tests:
ctest --test-dir build/native --output-on-failure- Parameterized reusable templates.
- Multi-stage builds.
- Service runtime overlays (
env,expose,cmd,entrypoint,port,depends_on). - Multiple template instantiations per service (
usecan appear multiple times). - Command/entrypoint scalar and array forms.
- Optional bundled stdlib profiles (
core-v1/default) for reusable service templates. - Native Windows build/test support in CI.
- CLI callbacks with persistent log registration (
.abstack/logs/abstack-cli.log) and spinner feedback for wait-heavy shell commands. - Utility-grade CLI commands:
build,sync,fmt,docker,compose,stdlib, and optionaltui.
- Language spec
- Grammar reference
- Language guide
- Stdlib guide
- CLI guide
- CLI reference
- CLI cookbook
- Examples guide
- Tooling/CI guide
- Release notes v0.6.0
- Release notes v0.5.0
- Release notes v0.4.0
- Release notes v0.3.0
- Changelog
- Contributing
include/abstack: public compiler interfacessrc/frontend: lexer/parsersrc/semantic: semantic checkssrc/ir: lowering and template expansionsrc/stdlib: bundled stdlib profile definitionssrc/codegen: Dockerfile/Compose emitterssrc/format: canonical.absformattersrc/cli/main.cxx: CLI entrypointtests/pipeline_test.cxx: integration tests3rd-party/vcpkg: vendored vcpkg toolchain submodulesamples: runnable DSL samples
clangd is the recommended language server. Configure with:
.clangd- compile database from
cmake --preset native(build/native)