Technical description
- Ajla is a purely functional programming language aiming at ease of use that has a look and feel like traditional
procedural languages.
- Free software released under the GPL3 license.
- Purely functional 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.
- Doesn't have mutable global variables, because they
break purity and they introduce side effects and race
conditions.
- Has control flow statements like if, while, for, goto
- they don't break purity, so they are allowed.
- 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.
- 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.
|
Requirements
Hardware
- 72 MB RAM
- 220 MB hard disk
Operating System
- Android under Termux
- Windows 11, 10, 8.1, 8, 7, Vista, XP, 2000, NT, 95 natively
- iOS under iSH (slow due to Apple's decision
- Linux
- Windows Subsystem for Linux 1 and 2
- macOS
- FreeBSD, NetBSD, OpenBSD
- Cygwin (a Unix-like environment for Windows)
- OS/2 2.0 or newer (recommended 4.5 or newer)
- Hurd, Minix 3, Haiku
- Solaris, ILLUMOS
- Should work but wasn't tested: ReactOS, Inferno, AIX, QNX, SCO UNIX, HP-UX. UNIXWare
|
|
Pronunciation
Ajla is pronounced /ˈʔäjlä/ (🔉 MP3 pronounce).
|
Etymology
Mikuláš Patočka has named Ajla after his favourite Akita Inu dog Ajla of his ex-flatmate.
|
History
Mikuláš Patočka won a 🏆gold medal at the International
Olympiad in Informatics, has a PhD. in computer science, is employed as a full-time Linux kernel developer and got the
idea of making his own programming language Ajla which would combine the advantages of functional and procedural
languages. On May 24, 2024 he released the first version.
|