Notes
This page is a downstream-facing snapshot of what the reference Silk compiler and toolchain support end-to-end today. It is intentionally high-level: each language, standard-library, and compiler page carries the feature-specific details for its own supported forms.
Use this page to answer:
- What targets and artifact kinds can I rely on today?
- Which parts of Silk are implemented end-to-end versus specified ahead of implementation?
- Where should I look when the compiler rejects a program?
Quick sanity check#
If you want a fast read on what your local toolchain can do today, start here:
silk check hello.slk
silk build hello.slk -o build/hello
silk package lint
silk targets
silk build --list-gpu-targets
silk env
silk checktells you whether the parser, resolver, checker, and verifier all accept the current module set.silk buildtells you whether the selected backend can lower that checked program to the target artifact you want.silk package lintvalidates package-root metadata and distribution shape.silk targetsreports the target and artifact matrix for the current compiler host.silk build --list-gpu-targetsreports the processors and runtime providers available for mixed CPU/GPU executables.silk envshows the resolved environment that affects stdlib and package discovery.
End-to-end surfaces#
Silk’s current toolchain surface is strongest in these areas:
- Hosted native toolchains
linux/x86_64remains the most complete hosted path: checking, testing, building, docs/man generation, package tooling, diagnostics, Z3-backed Formal Silk verification, hosted dependencies, and prebuilt stdlib artifacts are exercised there first.- On Apple Silicon macOS hosts, the host-backed Mach-O path emits non-const
macos-aarch64, iOS device, and iOS simulator executables, objects, static libraries, and shared libraries. It also accepts native C/Objective-C inputs and Apple framework links. Hosted async/task behavior remains Linux-first in overall parity, and the host assembler/linker path is still a bring-up path rather than the final Silk-owned Mach-O backend. - Native outputs cover executables, object files, static archives, and shared libraries where the selected target/backend supports that artifact shape.
- Portable GPU programs
- Linux x86_64 executables can embed root-package GPU functions selected with
--gpu-target. The same portable GPU-v1 Silk source targets AMDgfx942,gfx1100, andgfx1151through HIP or NVIDIAsm80through the CUDA Driver API. std::gpusupplies discovery, buffers, transfers, streams, launch, and synchronization. Checkedgpu (...) { ... }launch blocks preserve launch and synchronization results separately.- Standalone AMDGPU object output remains available for the documented low-level source-intrinsic workflow.
- See GPU execution placement, GPU launch
blocks,
std::gpu, target-neutral GPU compilation, and Pure-Silk CPU/GPU program. - WebAssembly targets
wasm32-unknown-unknownproduces embedder-facing WebAssembly modules.wasm32-wasiproduces WASI-style entrypoints.- See WebAssembly back-end and Run WASI modules in Node.
- Platform applications and host tools
silk devicesdiscovers desktop, iOS simulator/device, and Android backends and delegates setup, install, launch, lifecycle, and log actions to installed platform SDK tools.silk codesigndiscovers and delegates signing or verification to Apple, Android, Linux-package, and AppImage tooling.- Manifest targets can assemble and sign iOS simulator app bundles on
supported Apple Silicon hosts. See Build LumenTrail,
silk-devices(1), andsilk-codesign(1). - Package and distribution tooling
silk.tomlpackage manifests, package-target builds, installation, uninstallation, and package lint/inspection are part of the public workflow.- See Package manifests, Package
distribution, and
silk-package(1). - Diagnostics and documentation tooling
silk replprovides an interactive compile-and-run loop on Linux x86_64; Apple Silicon macOS currently supports session startup and non-printing declaration/state lines.silk helpexposes command-specific help without relying on option passthrough.silk error,silk guide,silk doc,silk man, andsilk protoexplain diagnostics, browse curated examples, extract docs, render manpages, and work with protobuf schemas.silk targets,silk graph,silk size, andsilk cacheexpose stable inspection surfaces for target capabilities, loaded module graphs, artifact sizes, and managed cache state.- See Compiler diagnostics,
silk-repl(1),silk-help(1),silk-error(1),silk-guide(1), andsilk-proto(1).
Broader target bring-up#
The front-end, package loader, diagnostics, documentation tooling, and much of the ABI reference are broader than the
hosted linux/x86_64 baseline. In particular:
- Silk documents additional native targets for const-main and ABI-oriented bring-up in the CLI and ABI references.
- The exact target matrix changes faster than this high-level page, so use:
silk-targets(1)orsilk targets --jsonsilk build --list-gpu-targetsfor mixed-executable GPU providers- CLI reference
- C99 ABI and
libsilk.a silk(1)
Supported public surfaces#
These are user-facing and expected to stay in sync with the compiler:
silk check— parse, resolve imports, type-check, and optionally verify.silk test— compile and run language-level tests with TAP output.silk build— emit artifacts for the selected target and output kind.silk repl/silk help— interactive evaluation and command-specific usage.silk targets— inspect supported target triples and current-host artifact support.silk devices/silk codesign— discover platform tooling and delegate device lifecycle or artifact-signing operations.silk graph— inspect the loaded package/module/import graph.silk size— inspect artifact byte and section sizes.silk package inspect|lint— inspect distributable package metadata and validate package roots.silk error/silk guide— inspect diagnostics and curated guide entries.silk doc/silk man— extract and render documentation from Silkdoc comments.silk proto— generate or inspect protobuf-oriented Silk surfaces.silk cache/silk env/silk format— managed-cache maintenance, environment inspection, and source formatting.silk-lsp— editor-facing diagnostics, navigation, hover, completion, and related language tooling.
How to read the rest of the docs#
Across the site:
- Guides teach the common workflow and give runnable examples.
- Reference pages define the syntax, semantics, and current compiler behavior.
- The spec describes the full intended language surface, even when implementation is still catching up.
When you need the exact behavior of a feature, prefer the feature page over this summary.
If the compiler rejects your program#
Work in this order:
- Look up the reported code in Compiler diagnostics.
- Check the feature’s own notes in the language, stdlib, or compiler reference page.
- Confirm the active target and package/build mode in CLI reference.
- If the docs say the feature should work, file a minimal repro against the Silk compiler repository.
Source repository · Edit this page · View Markdown