- C 88.4%
- JavaScript 6.4%
- Shell 2.9%
- Emacs Lisp 1.4%
- Makefile 0.8%
|
David Wilson
b42b051669
Some checks failed
CI / Bootstrap (push) Waiting to run
CI / Dev Build And Tests (push) Waiting to run
CI / Release Debug Smoke (push) Waiting to run
CI / Cross Build (linux-amd64) (push) Waiting to run
CI / Cross Build (linux-arm64) (push) Waiting to run
CI / Cross Build (macos-amd64) (push) Waiting to run
CI / Cross Build (macos-arm64) (push) Waiting to run
sigil-openbsd Build failed
sigil-linux Build failed
ci/woodpecker/tag/woodpecker Pipeline failed
ci/woodpecker/push/woodpecker Pipeline was canceled
sigil build sigil-cli bundles the BOOT seed sigil's sigil-build rather than the release-tag workspace source, so shipped binaries silently ran a stale build system. That broke web builds from the release binary: the seed predated the asyncify DWARF-strip fix ( |
||
|---|---|---|
| .changes | native: capture suspended fibers' exception handlers per-fiber | |
| .claude/skills | docs: Add init template version update step to prepare-release skill | |
| .forgejo/workflows | Add initial Forgejo Actions CI | |
| benchmarks | Add CPS CSE benchmark | |
| bootstrap | Extract sigil-lang from sigil monorepo as a two-package workspace | |
| docs | docs: correct theme function signature in static-sites guide | |
| editor/emacs | sigil-nrepl: add attach command + auto-target buffer module on eval | |
| examples | sigil-wasm-audio: AudioWorklet upgrade + music-driven example | |
| notes | vm: gate preemptive yields on a barrier so nested eval/compile extents stay atomic | |
| packages | sigil-wasm-audio: fix SFX one-shot playback (undefined readSamples) | |
| scripts | release-build.sh: recompile sigil-build before sigil-cli | |
| spike | native: generation-checked _bcache to fix live-redefinition UAF | |
| test | sigil-wasm-audio: AudioWorklet upgrade + music-driven example | |
| .gitignore | Add cell-unification regression tests and live-redefinition probes | |
| .mcp.json | Fix app install dependency resolution for standalone packages | |
| .testignore | Fix raise-continuable in tail position and remove testignore entries | |
| .woodpecker.yml | sigil-build: fail loudly when wasm-opt --asyncify emits an invalid or empty module | |
| CHANGELOG.md | Rename web runtime to wasm runtime | |
| CLAUDE.md | Add CPS optimization pipeline scaffolding | |
| dev-redirects.sgl | Prototype sigil-test reintegration | |
| LICENSE | Change license to BSD-3-Clause | |
| Makefile | sigil-build: consult the header-aware store cache before the mtime shortcut | |
| manifest.scm | Wire Binaryen Asyncify into the native-WASM build | |
| package.sgl | Bump to 0.17.11 | |
| README.md | sigil-lib: gc — shutdown frees young_objects before vm->objects (fix release-mode teardown segfault) | |
| RELEASES.md | Bump to 0.17.11 | |
| sigil.lock | sigil-cli: fix mcp serve startup death + bound eval/test/run-file | |
Sigil
Practical Symbolic Power
Sigil is a programming language designed for building standalone applications and games. Write your program, compile it to a single binary, and share it with anyone, no dependencies required.
Why Sigil?
- Standalone Distribution: Build applications that users can run without installing anything
- Developer Experience: REPL-driven development with integrated editor experience (Emacs)
- Cross-Platform: Targets Linux, macOS, Windows, FreeBSD, OpenBSD, NetBSD, and Web
- Small and Fast: Minimal binary size with quick startup
- Familiar Foundation: R7RS Small compatible, works with existing Scheme libraries and learning resources
Try It Now
Try Sigil in your browser , no installation required.
Get Started
Visit usesigil.org/docs/getting-started for installation instructions and your first program.
Documentation
- Getting Started : Install Sigil and run your first program
- Tutorial : Build a complete text adventure game from scratch
- Guides : Deep dives into modules, macros, concurrency, and more
- Reference : CLI commands, syntax, and standard library API
Quick Example
;; A simple greeting program
(define (greet name)
(println "Hello, ~a!" name))
(greet "World")
Features
- Static compilation to standalone executables and web applications
- Pattern matching with the
matchmacro - Flexible records with defaults, inheritance, and keyword-style construction
- First-class and delimited continuations via
call/ccandreset/shift - Channels for concurrent programming
- Sockets for network programming
- JSON and SXML for data interchange
Repository Layout
This repo (codeberg:sigil/sigil) hosts the user-facing sigil CLI, the binary you install and run. The language implementation, build system, and standard libraries live in dedicated repos so each can iterate on its own cadence.
| Repo | Role |
|---|---|
sigil/sigil |
This repo. The sigil command-line tool, REPL, LSP, MCP server, and project scaffolding. |
sigil/sigil-lang |
Language implementation: the C runtime (sigil-lib), the standard library (sigil-stdlib), and the compiler. |
sigil/sigil-build |
Build system: package manifests, dependency resolution, and the build pipeline. |
sigil/sigil-* |
Ecosystem libraries: sigil-http, sigil-json, sigil-tls, sigil-crypto, sigil-mcp, and more. Browse them via the library topic on Codeberg. |
Apps written in Sigil pull dependencies from these repos via (from-git ...) declarations in their package.sgl. The CLI handles the rest.
License
Sigil and the libraries in this repo are released under the BSD 3-Clause License.
AI DISCLAIMER: This project was developed almost entirely with Claude Code (Opus 4.5). In case this matters to you, consider yourself notified.