The Active Object System (AOS), also known as A2, is a programming language and runtime system designed for concurrent and distributed computing. It was developed at ETH Zurich and has been used in various research projects and educational settings. Historically, it was holded in the SVN repository at https://svn-dept.inf.ethz.ch/svn/lecturers/a2/trunk, but since December 9, 2022, it has been migrated to a GitLab repository.
Unregistered users can download the A2 system from the repository located at https://svn-dept.inf.ethz.ch/svn/lecturers/a2/trunk using svn (read only access as user "infsvn.anonymous" using password "anonymous")
To checkout the trunk, use
svn checkout --username infsvn.anonymous --password anonymous https://svn-dept.inf.ethz.ch/svn/lecturers/a2/trunk aos
To run A2 on your Windows or Linux system, please clone this repository and refer to the Task-based Build System of the README.
Note that, to keep the repository size manageable, we use GitLab's Large File Storage (LFS) to store large files outside your local Git repository.
If you cannot or prefer not to install Git LFS, you need to manually download the corresponding ZIP files from the GitLab project page. Without LFS, Git will only download placeholder files. You can identify this by their size: if the ZIP files in the root directory of the project are only a few bytes in size, LFS is not installed.
Most of the ZIP files requiring LFS are located in the data
directory.
Please let me know if you need developer access to the repository, encounter any missing files, or would like assistance with the setup.
Do not use a directory name that contains a dash (-). It is recommended to name the folder A2oberon
To properly clone the repository and download the required large files:
sudo apt install git-lfs
git lfs install
git clone https://gitlab.inf.ethz.ch/felixf/oberon.git A2oberon
cd A2oberon
git lfs pull
The previously existing build-server is being replaced by the CI/CD pipeline in this gitlab. Currently, the pipeline builds the binaries for each commit. More tests will follow.
This project uses Taskfile.dev as its cross-platform task runner. It provides a modern alternative to Makefiles with cleaner syntax and modularity.
Linux/macOS:
sudo sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin
Windows (using Scoop):
scoop install go-task
Or download precompiled binary from: https://github.com/go-task/task/releases
Most commonly used command:
task
This will run the default task, which builds all supported platforms.
You can list all available tasks:
task --list
To execute a specific task:
task <task-name>
Example:
task oberon
Task | Description |
---|---|
oberon |
Build and replace host compiler (for {{.HOST}} platform) |
modules |
Generate list of .Mod files as environment variable |
compile-all-modules |
Compile all modules using compile-module task |
build-platform |
Build the full compiler binary for a given platform |
platforms |
Build compiler for all supported platforms |
clean |
Remove all build artifacts |
clean-temporary-files |
Clean intermediate build files |
set-platform-env |
Prepare environment variables for current build target |
To run test modules:
task test
To clean up all build artifacts:
task clean
To remove only temporary files:
task clean-temporary-files