Deterministic business application platform optimized for AI-assisted development
Project description
AILang
AI-first programming language — deterministic, specification-driven, and compiler-friendly.
AILang is an AI-first programming language designed to be deterministic, specification-first, and easy for both humans and AI systems to reason about. It features a complete compiler pipeline, a 16-module standard library, and has been validated through 772 tests, stress testing up to 10,000 LOC, and AI-generated program verification with 100% first-pass success.
Quick Start
# Install
git clone https://github.com/anomalyco/ailang.git
cd ailang
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -e .
# Run your first program
echo 'fn main() { print("Hello, AILang!"); return 0 }' > hello.ail
ail hello.ail
Documentation
| Guide | Description |
|---|---|
| Getting Started | Step-by-step introduction |
| Language Tour | Complete language feature tour |
| Standard Library Reference | All 16 modules documented |
| Compiler Architecture | Pipeline and design |
| Contributor Guide | How to contribute |
| Testing Guide | Test patterns and practices |
| Quick Start | 5-minute setup guide |
| VS Code Extension | AILang VS Code extension |
VS Code Extension
Install the AILang extension for syntax highlighting, snippets, bracket matching, and more:
code --install-extension extensions/vscode-ailang
Or package and install from the VS Code Marketplace: extensions/vscode-ailang/.
Features
- Simple, explicit syntax — functions, variables, conditionals, recursion
- Deterministic compilation — same source always produces same output
- 16-module Standard Library — string, math, collections, file I/O, JSON, CSV, time, random, environment, conversion
- AI-friendly — validated with 23 AI-generated programs at 100% first-pass success
- Fast compile times — 5000 LOC compiles in <2 seconds
- Low memory usage — 5000 LOC uses <11 MB peak memory
- Complete test coverage — 772 tests across all compiler stages
Example
import string;
import math;
import list;
fn process(items) {
let first = list.get(items, 0);
return string.uppercase(first)
}
fn main() {
let items = list.new();
list.append(items, "hello");
list.append(items, "world");
let r = process(items);
let s = math.add(1, 2);
print(r, s);
return 0
}
Standard Library
| Module | Operations |
|---|---|
| string | concat, equals, uppercase, lowercase, length, contains, starts_with, ends_with, trim, substring, find, find_from, split, join, from_int, from_bool |
| math | add, sub, mul, div, abs, min, max |
| list | new, append, len, get, contains, remove, clear, sum, find_by_key, filter_by_key, filter_by_contains, collect_key, group_by_key, sum_by_key, take, skip, search_by_name, exists_by_key, sort, sort_by_key, copy |
| array | new, push, len, get, contains, remove, clear |
| map | new, set, get, has, delete, keys, clear, values, get_or_default, safe_get |
| set | new, add, contains, len, remove, clear |
| file | exists, read, write, append, remove, listdir |
| path | join, basename, dirname, extension, normalize |
| json | parse, stringify |
| csv | parse, parse_header, stringify |
| time | now, timestamp, sleep, format |
| random | int, float, choice |
| environment | get, cwd, args |
| convert | to_string, to_int, to_bool, to_number |
| io | write, writeln, println |
| system | exit |
Project Status
| Metric | Value |
|---|---|
| Python version | 3.11+ |
| Compiler LOC | ~3,950 (39 Python files) |
| Stdlib modules | 16 |
| Tests | 772 passing |
| Example programs | 55+ |
| Application programs | 43+ |
| DX Tools | ail context, ail doctor, ail static_analyzer, ail benchmark, ail testgen |
| Quality gates | black, ruff, mypy all clean |
| Validation | Deterministic, AI-verified, stress-tested |
Formatter
AILang includes a deterministic source code formatter. One style only — no configuration.
# Format a file in-place
ail fmt hello.ail
# Check if a file is formatted (exit 0 = yes, 1 = no)
ail fmt --check hello.ail
# Read from stdin, write formatted to stdout
cat hello.ail | ail fmt --stdin
Formatting rules:
- 4-space indentation
- Opening brace on same line (
fn foo() {,if (cond) {) } else {on one line- Spaces around all binary operators (
a + b,x == y,a && b) - Space after
,in parameter/argument lists - Single blank line between function declarations
- Trailing whitespace removed
- Newline at EOF
- Comments preserved — inline and standalone comments are retained
Formatting is idempotent: formatting an already-formatted file produces no changes.
Development
# Install development tools
pip install pytest black ruff mypy
# Run all quality gates
python -m pytest
black --check .
ruff check .
mypy
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ailang_lang-1.0.2.tar.gz.
File metadata
- Download URL: ailang_lang-1.0.2.tar.gz
- Upload date:
- Size: 256.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ee0a461e33448ca8c05d301245bed98266db45c6baa30952727fe60f222411b
|
|
| MD5 |
b2facd8b66207053b927f9cdae13dfb7
|
|
| BLAKE2b-256 |
325657cc0e97d645f76c009025a2d1c7d7c0ef3402a50504f70789b697c67464
|
File details
Details for the file ailang_lang-1.0.2-py3-none-any.whl.
File metadata
- Download URL: ailang_lang-1.0.2-py3-none-any.whl
- Upload date:
- Size: 199.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ebeeee1df6e14a215b979d575715a1de99719cfaca6a1102565524451572dd4
|
|
| MD5 |
ccbb93ff336ada69897bf8345868c44d
|
|
| BLAKE2b-256 |
79d8d0362ccca5870d4ea55817480c8584cff7fd12c33bd273000c5d44eafb7c
|