FAQ
What is Shape?
Section titled “What is Shape?”A statically typed, high-performance programming language focused on data manipulation, simulation, and safe metaprogramming.
Is Shape domain-specific?
Section titled “Is Shape domain-specific?”No. The core language is general-purpose. Domain behavior should live in modules/extensions.
Does Shape use null?
Section titled “Does Shape use null?”No. Use Option<T> and Result<T>.
Does Shape support strict typing without excessive annotations?
Section titled “Does Shape support strict typing without excessive annotations?”Yes. Inference is strong, and you can add explicit annotations at API boundaries.
How do extensions work?
Section titled “How do extensions work?”Through [[extensions]] and capability contracts loaded from .so modules.
See Extensions.
How do lockfiles work?
Section titled “How do lockfiles work?”- Project:
shape.lock - Standalone script:
<script>.lock
Both lock dependencies and compile-time artifacts.
Where should I start with metaprogramming?
Section titled “Where should I start with metaprogramming?”Start with @annotation and comptime { ... }.
Traits are documented separately and are part of the type system.