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.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (625.6 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

archscript-0.2.3-py3-none-macosx_11_0_arm64.whl (569.9 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

archscript-0.2.3-py3-none-macosx_10_12_x86_64.whl (605.8 kB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for archscript-0.2.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dae5c2134302aa95da0f10c0d56570ea6d4ba578374fa61da9786c3262b1b555
MD5 3d69d1e65cc50775613eacccf16e96d3
BLAKE2b-256 6731fcd48718b87047595b18da6800b02e7789e206be87daaf2eefcf4cfac210

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for archscript-0.2.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a59d3f01c7b996cc95a451d513f55620e5654414bc034a9249066799138bb4aa
MD5 a70cc6a345714bcba4a8ba1319b8b783
BLAKE2b-256 4f42ad26119123661a7e8ea957a4b31c74c3674540a611eceaa9afab9b4d3d7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for archscript-0.2.3-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d08db753bb3337797ea8cf0c957f97cc89506ca1f914ee397903bb28d27ff79f
MD5 109ef5c735d6b896d926206c2e6dc9f4
BLAKE2b-256 44bc072d1ef931158c4e6679c04d3db71f8eb31b86bd08289f0326b6f23afd25

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