Fig Language - A Modern Scripting Language
Fig-Gitea Recommend view on Gitea Endpoint
Fig is a dynamically strongly typed programming language designed for clarity, safety, and modern development practices. With features inspired by Go, Rust, and JavaScript, Fig aims to provide a productive development experience while maintaining strong type safety.
Features
🚀 Core Language Features
- Dynamic typing with type inference - Strong typing with minimal annotations
- Modern control flow - Full
forloop support with proper scoping - First-class functions - Lambda expressions and closures
- Rich data structures - Structs, lists, maps, and tuples
- Memory safety - No null pointer exceptions, automatic memory management
🔧 Technical Highlights
- Three-level scoping for loops - Proper variable isolation in iterations
- Smart semicolon handling - Flexible statement termination with RAII guards
- Comprehensive error handling - Detailed error messages with source locations
- Clean C++ implementation - Modern C++23 with RAII and smart pointers
🔧 Install
Installation
Prerequisites
Xmake version 3.0.0 or higher must be installed on your system.
Build Instructions
- Clone the repository:
git clone https://git.fig-lang.cn/PuqiAR/Fig.git
# Recommend
or
git clone https://github.com/PuqiAR/Fig.git
- Navigate to the project directory:
cd Fig
- Build the project:
xmake build Fig
- Run the program:
xmake run Fig [file]
Replace [file] with the path to your input file.
Language Philosophy
Fig is designed around several core principles:
Clarity over cleverness - Code should be readable first
Safety by default - Prevent common errors at compile time
Modern ergonomics - Developer experience matters
Gradual learning - Simple to start, powerful when needed
Performance Summary
Version: 0.4.3-alpha (Tree-walker Interpreter) Test Hardware: i5-13490F, Windows 11
Execution Times for Fibonacci(30):
- Naive Recursion: 5.47s (~2.14× faster than 0.4.2-alpha)
- Memoization: 0.55ms (~1.69× faster than 0.4.2-alpha)
- Iteration: 0.10ms (~3.73× faster than 0.4.2-alpha)
- Tail Recursion: 0.16ms (~2.55× faster than 0.4.2-alpha)
Visual Comparison:
Naive Recursion : █████████████████████████ 5.47s
Memoization : ▉ 0.55ms
Iteration : ▍ 0.10ms
Tail Recursion : ▎ 0.16ms
Key Insight: Algorithm choice still dominates performance, while 0.4.3-alpha shows significant improvements in function call and loop efficiency.
Detailed Reports: English | 中文
Older version reports...
Version: 0.4.2-alpha (Tree-walker Interpreter)
Test Hardware: i5-13490F, Windows 11
Execution Times for Fibonacci(30):
- Naive Recursion: 11.72s
- Memoization: 0.93ms (12,600× faster)
- Iteration: 0.37ms (31,300× faster)
- Tail Recursion: 0.40ms (29,200× faster)
Visual Comparison:
Naive Recursion : ████████████████████████████████████████ 11.72s
Memoization : ▉ 0.93ms
Iteration : ▍ 0.37ms
Tail Recursion : ▎ 0.40ms
Key Insight: Algorithm choice dominates performance in this tree-walker implementation.
Detailed Reports: English | 中文
Language Documents
see ./docs/en_US/...
We're looking for translators to help translate our project and make it accessible to more language communities.