ArchScript programming language — Python-like syntax, Haskell-inspired features, Arch Linux integration
Project description
ArchScript
A programming language designed on top of Arch Linux: Python-like syntax, Haskell-inspired functional features, and first-class integration with the Arch ecosystem.
Features
- Python-like syntax with clean, readable code
- Haskell-inspired pattern matching, algebraic data types, traits
- First-class Arch Linux integration — built-in
pacman,systemd,aur, andfsmodules - First-class functions and closures with lambda expressions
- Pipe operator (
|>) for function composition - Built-in types: integers, floats, strings, booleans, lists, dicts, tuples
- Type definitions (
type,data,trait,instance) - List comprehensions and higher-order functions (
map,filter) - Recursive functions with proper closure support
- Interactive REPL with persistent state, multiline support, and introspection commands
- CLI for running scripts, parsing, and evaluating expressions
Building
cargo build
Usage
# Run a source file
archscript run examples/hello.as
# Run the Arch Linux stdlib demo
archscript run examples/archlinux.as
# Evaluate an expression
archscript eval "2 + 3 * 4"
# Start an interactive REPL session
archscript repl
# Parse and print AST (debugging)
archscript parse examples/hello.as
Language Overview
Variables
var x = 42
var name = "ArchScript"
var pi = 3.14159
Functions
def add(a, b) = a + b
def factorial(n) = if n <= 1: 1
else: n * factorial(n - 1)
Lambda Expressions
var double = lambda x: x * 2
Control Flow
if x > 0: println("positive")
elif x == 0: println("zero")
else: println("negative")
for i in range(10): println(str(i))
while x > 0: x = x - 1
Pattern Matching
match value {
0 => println("zero"),
1 => println("one"),
x if x > 0 => println("positive"),
_ => println("other")
}
Data Types
data Color = Red | Green | Blue | Custom(r, g, b)
type Point = Tuple(Float, Float)
Pipe Operator
result = data |> transform |> filter_fn |> summarize
Imports
import math
import { sqrt, pi } from math
import math as m
Interactive REPL
Start an interactive session with archscript repl:
$ archscript repl
ArchScript 0.1.0 REPL
Type :help for help, :quit to exit.
>>> var x = 42
>>> x * 2
84
>>> def greet(name) = "Hello, " + name + "!"
>>> greet("Arch")
Hello, Arch!
>>> :env
greet = <function greet>
x = 42
>>> :quit
REPL commands: :help, :quit, :env (show variables), :reset (clear state), :ast <expr> (show AST).
Arch Linux Standard Library
ArchScript ships with built-in modules for Arch Linux system management. See docs/stdlib.md for the full reference.
// Package management
var result = pacman.install("vim")
println(result.command) // "sudo pacman -S --noconfirm vim"
println(result.success) // True or False
// Service management
systemd.enable("sshd")
systemd.start("sshd")
var status = systemd.status("nginx")
// AUR packages
aur.install("visual-studio-code-bin")
aur.search("spotify")
// File system
fs.write("/tmp/hello.txt", "Hello from ArchScript!")
var content = fs.read("/tmp/hello.txt")
var exists = fs.exists("/etc/pacman.conf")
var files = fs.ls("/etc")
fs.mkdir("/tmp/mydir")
fs.remove("/tmp/hello.txt")
Modules available:
| Module | Description | Functions |
|---|---|---|
pacman |
Package management | install, remove, update, search, list, info |
systemd |
Service management | start, stop, restart, enable, disable, status |
aur |
AUR helper (yay) | install, search, update, info |
fs |
File system I/O | read, write, exists, ls, mkdir, remove |
Project Structure
src/
archscript.pest -- Pest grammar (PEG)
ast.rs -- AST node definitions
parser.rs -- Pest parse tree to AST conversion
interpreter.rs -- Tree-walking interpreter
repl.rs -- Interactive REPL
main.rs -- CLI entry point
lib.rs -- Library module exports
stdlib/
mod.rs -- Stdlib module registry and dispatch
pacman.rs -- Pacman package management
systemd.rs -- Systemd service management
aur.rs -- AUR helper wrapper
fs.rs -- File system operations
tests/
integration.rs -- Integration tests (48 tests)
examples/
hello.as -- Hello world example
functions.as -- Functions example
archlinux.as -- Arch Linux stdlib demo
docs/
stdlib.md -- Standard library reference
architecture.md -- Architecture overview
development.md -- Development guide
language-reference.md -- Language reference
grammar-reference.md -- Pest grammar reference
Running Tests
cargo test # all 121 tests
cargo test --lib # unit tests only
cargo test --test integration # integration tests only
cargo test stdlib # stdlib tests only
cargo test repl # REPL tests only
Documentation
- Standard Library Reference —
pacman,systemd,aur,fsmodules - Language Reference — Full language syntax and semantics
- Architecture — Compiler pipeline and module structure
- Development Guide — How to contribute and add features
- Grammar Reference — Pest PEG grammar rules
License
MPL-2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
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 archscript-0.2.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: archscript-0.2.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 625.6 kB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dae5c2134302aa95da0f10c0d56570ea6d4ba578374fa61da9786c3262b1b555
|
|
| MD5 |
3d69d1e65cc50775613eacccf16e96d3
|
|
| BLAKE2b-256 |
6731fcd48718b87047595b18da6800b02e7789e206be87daaf2eefcf4cfac210
|
File details
Details for the file archscript-0.2.3-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: archscript-0.2.3-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 569.9 kB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a59d3f01c7b996cc95a451d513f55620e5654414bc034a9249066799138bb4aa
|
|
| MD5 |
a70cc6a345714bcba4a8ba1319b8b783
|
|
| BLAKE2b-256 |
4f42ad26119123661a7e8ea957a4b31c74c3674540a611eceaa9afab9b4d3d7c
|
File details
Details for the file archscript-0.2.3-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: archscript-0.2.3-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 605.8 kB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d08db753bb3337797ea8cf0c957f97cc89506ca1f914ee397903bb28d27ff79f
|
|
| MD5 |
109ef5c735d6b896d926206c2e6dc9f4
|
|
| BLAKE2b-256 |
44bc072d1ef931158c4e6679c04d3db71f8eb31b86bd08289f0326b6f23afd25
|