Skip to main content

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, and fs modules
  • 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

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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

archscript-0.2.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (647.8 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

archscript-0.2.6-py3-none-macosx_11_0_arm64.whl (587.6 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

archscript-0.2.6-py3-none-macosx_10_12_x86_64.whl (624.6 kB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file archscript-0.2.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for archscript-0.2.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 88a22ea2cf0582a4e87fa9e871eebe8e5d32a70c89eeb557eec22ba1cdf24d83
MD5 f3d5e32b1f61d32d0ccbe2a00c6f1307
BLAKE2b-256 4e2aa7add019a5343f2a9794ec892f866c75b0cdbc2b2e1d147554c554fc3dea

See more details on using hashes here.

File details

Details for the file archscript-0.2.6-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for archscript-0.2.6-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f6695a14cbe55afeede55350fb13b7de2b356809ce9b03352513e0f68a56ba9
MD5 d236b5da943333c60dc6673542531308
BLAKE2b-256 09d332a54f0e8f05c034e95e328a5b3ea19bed8dd2f45d433f96d209b48fffd8

See more details on using hashes here.

File details

Details for the file archscript-0.2.6-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for archscript-0.2.6-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aff596c937530ae0a1c04793b4ea96c29ba91c026017247c06b47914222d45b2
MD5 209d1261b12778d59f879ed7b28595c3
BLAKE2b-256 2439d84b3bfc8334ab95b95c54c2746c06dd922c5928091201e16d5436479bea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page