Ajla (pronounced "Ayla") is a purely functional
programming language that is easy to use and that has
look-and-feel like traditional procedural languages. Ajla is
free software released under the GPL3 license.
- Ajla is purely functional, that means that every
function's return value depends only on its arguments.
- Ajla has mutable local variables - they don't break
purity, so they are allowed.
- Ajla doesn't have mutable global variables, because they
break purity and they introduce side effects and race
conditions.
- Ajla has control flow statements like if, while, for, goto
- they don't break purity, so they are allowed.
- Ajla is memory-safe - i.e. you can't create segmentation
fault in Ajla. Ajla doesn't have garbage collection, it uses
reference counts to manage memory.
- Ajla has efficient mutable arrays - if an array's
reference count is one, the array is modified in place. If
not, a copy of the array is created and modified.
- Because Ajla is purely functional, it can automatically
distribute workload across multiple cores.
- For sequencing I/O, Ajla uses world-token passing and not
monads.
- Ajla functions can be marked with preconditions and
postconditions and they can be verified using the Z3
library. Ajla can also prove (using Z3) that there are no
accesses out of array boundaries.
See
Ajla
tutorial. See
Advent of code 2023
and
Advent of code 2024
solutions in Ajla.
Download Ajla 0.3.0 source
code and binaries for OS/2 and Win64. Go
to downloads
directory.
Clone Ajla git from git://repo.or.cz/ajla.git.
After cloning it, you need to run the script ./autogen.sh to
generate autoconf-generated files. See Ajla
gitweb. See github
mirror.
See the installation manual:
See Ajla
Commander - a Midnight Commander clone written in Ajla.
Send comments to [email protected].
We have a mailing list at https://www.freelists.org/list/ajla.