1
0
Fork
You've already forked mesche-next
0
A new implementation of Mesche.
  • C 97.6%
  • Makefile 1.6%
  • Shell 0.8%
Find a file
David Wilson 430ae5f3fb Update branding: lowercase 'sigil' with yellow color, new tagline
- Use lowercase 'sigil' with yellow ANSI color in CLI and REPL output
- New tagline: "Practical Symbolic Power"
- Update README to position R7RS compatibility as a feature, not identity
- Change package file references from package.msc to package.sgl
- Update file extension references from .msc to .sgl in user messages
- Rename MSC_BOOT to SGL_BOOT in packages/sigil-http/compile.sh
2025年12月05日 16:57:20 +02:00
bootstrap Update branding: lowercase 'sigil' with yellow color, new tagline 2025年12月05日 16:57:20 +02:00
build Rename project from Mesche to Sigil 2025年12月05日 16:46:46 +02:00
components Update branding: lowercase 'sigil' with yellow color, new tagline 2025年12月05日 16:57:20 +02:00
docs Rename project from Mesche to Sigil 2025年12月05日 16:46:46 +02:00
examples Rename project from Mesche to Sigil 2025年12月05日 16:46:46 +02:00
notes Rename project from Mesche to Sigil 2025年12月05日 16:46:46 +02:00
packages Update branding: lowercase 'sigil' with yellow color, new tagline 2025年12月05日 16:57:20 +02:00
scripts Use lowercase 'sigil' in user-facing output with yellow color 2025年12月05日 16:49:07 +02:00
stdlib Update branding: lowercase 'sigil' with yellow color, new tagline 2025年12月05日 16:57:20 +02:00
test Rename project from Mesche to Sigil 2025年12月05日 16:46:46 +02:00
vendor Add (mesche archive) module for ZIP file support 2025年12月02日 10:49:47 +02:00
.gitignore Implement 3-stage bootstrap compilation 2025年12月03日 16:45:12 +02:00
CLAUDE.md Rename project from Mesche to Sigil 2025年12月05日 16:46:46 +02:00
DEVLOG.md Rename project from Mesche to Sigil 2025年12月05日 16:46:46 +02:00
LICENSE Add MIT license 2025年12月03日 17:58:48 +02:00
manifest.scm
package.sgl Update branding: lowercase 'sigil' with yellow color, new tagline 2025年12月05日 16:57:20 +02:00
PLAN.md Rename project from Mesche to Sigil 2025年12月05日 16:46:46 +02:00
README.md Update branding: lowercase 'sigil' with yellow color, new tagline 2025年12月05日 16:57:20 +02:00

Sigil

Practical Symbolic Power

Sigil is a programming language designed for building standalone applications and games. It prioritizes developer experience, debuggability, and cross-platform deployment.

Goals

  • Standalone Distribution: Build applications that users can run without installing anything
  • Developer Experience: REPL-driven development with informative, recoverable errors
  • Cross-Platform: Targets Linux, macOS, Windows, and WebAssembly
  • Small and Fast: Minimal binary size with quick startup

Current Status

Sigil is a self-hosting implementation with a comprehensive standard library and tooling infrastructure. The compiler compiles itself (fixed-point verified) and the language includes advanced features like continuations, channels, and exception handling.

Core Language

  • NaN-boxed values with Whippet GC (semi-space collector)
  • Reader with full S-expression parsing, syntax objects, and source locations
  • Bytecode interpreter with CPS-based compilation
  • Hygienic macros via syntax-rules
  • Module system with define-library and import
  • Self-hosted compiler ((sigil compiler) modules)
  • First-class continuations via call/cc
  • Delimited continuations with reset/shift
  • Exception handling with guard, raise, and condition types
  • Channels for concurrent programming
  • R7RS Small compatible - works with existing Scheme libraries and learning resources

Standard Library

Module Description
(sigil io) File and stream I/O, ports, binary I/O
(sigil path) Pure path string manipulation
(sigil fs) Filesystem operations, directory traversal, temp files
(sigil process) Process spawning, environment, subprocess I/O
(sigil time) Timestamps, date decomposition, timing utilities
(sigil string) SRFI-28/48 format, string manipulation
(sigil socket) TCP/UDP networking, non-blocking I/O, DNS
(sigil json) JSON parsing and serialization
(sigil sxml) SXML to HTML/XML generation
(sigil args) CLI argument parsing with subcommands
(sigil test) Test framework with assertions
(sigil exceptions) Exception types and handling
(sigil channels) Channel-based concurrency
(sigil coroutines) Generators and coroutines

Tooling

  • sgl-boot: Bootstrap compiler for building the Sigil compiler
  • sigil CLI: Main binary with REPL and script execution
  • Documentation generator: Markdown parser and static site generator
  • Project system: project.sgl format for builds

Building

Sigil requires only a C99 compiler and Make. For development, use the Guix shell to ensure correct dependencies:

guix shell -m manifest.scm # Enter development environment
make CC=gcc # Build (CC=gcc required in Guix shell)
make CC=gcc test # Run tests

Cross-Compilation

make CC=emcc TARGET=wasm # WebAssembly via Emscripten
make CC=x86_64-w64-mingw32-gcc # Windows cross-compile

Project Structure

sigil/
├── components/
│ ├── libsigil/ # Core runtime library (VM, reader, GC, primitives)
│ ├── sgl-boot/ # Bootstrap compiler (C bytecode compiler)
│ └── cli/ # Main sigil binary
├── stdlib/ # Sigil standard library and compiler modules
│ ├── prelude.sgl # Core macros (let, cond, and, or, quasiquote, etc.)
│ └── sigil/
│ ├── compiler/ # Self-hosted compiler modules
│ ├── io.sgl, path.sgl, fs.sgl, ... # Standard library
│ └── ...
├── packages/ # Standalone packages (sigil-docs, sigil-app, etc.)
├── vendor/whippet/ # Vendored Whippet garbage collector
├── test/ # Test suite (unit/, compiler/, fixtures/, integration/)
├── examples/ # Example programs (guess.sgl, adventure/, chat-server.sgl)
├── build/ # Build output and configuration
└── scripts/ # Development helper scripts

Examples

  • guess.sgl: Number guessing game demonstrating basic I/O
  • adventure/: Multi-module text adventure using macros
  • chat-server.sgl: TCP chat server demonstrating sockets and concurrency

Documentation

See PLAN.md for development roadmap and sigil-specification.md for the complete language design specification.

License

Sigil is licensed under the MIT License.