A compiler for the Alecci programming language
Project description
Alecci Programming Language
Alecci is a compiled programming language designed for teaching concurrent and parallel programming. It provides built-in primitives for threading, synchronization, and inter-thread communication, and compiles to native code via LLVM.
The language is used in operating systems and parallel programming courses to help students write, analyze, and debug concurrent programs without the overhead of a general-purpose systems language.
Installation
pip install alecci
If the alecci command is not found after installation, add the user bin directory to your PATH:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
You can also invoke the compiler directly without installing the command:
python3 -m alecci
System Requirements
- Python 3.8 or later
- LLVM 14 or later (provided via
llvmlite) - GCC or Clang for linking
Usage
alecci program.ale -o program
./program
Sanitizer options
ThreadSanitizer is enabled by default to detect data races at runtime:
alecci program.ale -o program # ThreadSanitizer enabled (default)
alecci program.ale --no-tsan -o program # Sanitizers disabled
Language Overview
Variables
mutable x := 42
const message := "Hello"
mutable arr := array(10, 0)
Procedures and functions
procedure main(argc, argv)
print("Hello, Alecci!")
end procedure
Threads
procedure worker(thread_number as int)
print `Worker {thread_number} running`
end procedure
procedure main(argc, argv)
shared const thread_count := 4
mutable threads := create_threads(thread_count, worker)
join_threads(threads)
print("All workers done")
end procedure
Synchronization primitives
shared mutable counter := 0
shared mutable mtx as mutex := mutex()
procedure increment(thread_number as int)
lock(mtx)
counter := counter + 1
unlock(mtx)
end procedure
Available primitives: mutex, semaphore, barrier, queue, thread.
Concurrency Validation
The package includes a test suite (concurrency_validation/) with annotated example programs covering common concurrency patterns and bugs, including data races, deadlocks, and thread leaks. These are used to evaluate ThreadSanitizer detection rates.
Source
Source code is available at github.com/citic/alecci.
Project details
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 alecci-1.4.2.tar.gz.
File metadata
- Download URL: alecci-1.4.2.tar.gz
- Upload date:
- Size: 111.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
598e8094de98c04ef3896ce0987956980bb55be18a2542daab27d3d57f78c9ee
|
|
| MD5 |
992136c7bcb0d41f2b6523a24be618b0
|
|
| BLAKE2b-256 |
3a25f07dec83d5665c5cedff5b0ccf5acd6f6a0afc45ef5cd25d1e67e71eb65a
|
File details
Details for the file alecci-1.4.2-py3-none-any.whl.
File metadata
- Download URL: alecci-1.4.2-py3-none-any.whl
- Upload date:
- Size: 96.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99719715fb1da92e3cc35fede25779ce32120b0f6c33dd4b7e831ac54942a064
|
|
| MD5 |
151229d8052d30426404c8764d9e9c87
|
|
| BLAKE2b-256 |
646345a88c7af7bf960cd292aeb91459fedf33c2c689834f7791d4968ddd4eeb
|