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.
Program is distributed as ZIP package: download to temporary directory and unpack to destination folder. See below for download link(s).
Following ones are the download links for manual installation:
Ajla Programming Language v. 0.2.0 (28/11/2024, Mikulas Patocka) | Readme/What's new |
===RELEASE 0.2.0 ===
Fix an internal error if we call dstatfs on a directory open with O_PATH.
Implement automatic inlining of functions with just one basic block.
Implement integer operations with immediate value opperand - so that we don't
have to allocate frame slots for immediates.
Move tests for thunks to machine code entry, so that thunks don't have to be
checked inside loops.
Remember that a pointer is not thunk and do not test it for thunk repetitively.
Implement register allocation in the code generator.
Fix a bug on alpha that the code generator accidentally used saved register f2 |
www.ajla-lang.cz/downloads/binaries/ajla-0.2.0-os2.zip | local copy | |
Ajla Programming Language v. 0.1.5 (2/10/2024, Mikulas Patocka) | Readme/What's new |
=== RELEASE 0.1.5 ===
Fix a bug that swapend.ajla was not present in the distributed archive. It
produced spurious make install error (that could be ignored).
Haiku support - the pthread implementation fails on Haiku (perhaps, there is
some signal race condition in the Haiku pthread implementation), so I added a
new file th_haiku.c.
Code generator improvements - variables' tags are checked when entering machine
code so that they don't have to be checked inside loops.
Fix code generator bugs on power1 and power2. |
www.ajla-lang.cz/downloads/binaries/ajla-0.1.5-os2.zip | local copy | |
Ajla Programming Language v. 0.1.4 (25/8/2024, Mikulas Patocka) | Readme/What's new |
=== RELEASE 0.1.4 ===
Use the _Float16 type if available
Use -fno-math-errno if the compiler supports it
Use the instructions for floating point rounding when available
Fix a bug in math_round
Define _TIME_BITS=64
Make it possible to compile Ajla with TCC
Swap the endianity of builtin.pcd when the user runs "make install", so that the
file can be mmapped on big-endian machines
Fix a memory leak introduced in the release 0.1.3
Introduce a "--save" argument that disables saving and loading cache |
www.ajla-lang.cz/downloads/binaries/ajla-0.1.4-os2.zip | local copy | |
Ajla Programming Language v. 0.1.3 (17/8/2024, Mikulas Patocka) | Readme/What's new |
=== RELEASE 0.1.3 ===
Implement API for signal handling.
Support Ctrl-Z for suspending text-mode applications.
Invalidate cached compilations when builtin.pcd changes.
Implement API for listing mount points.
Fix failure on NetBSD when walking the kernfs mount point, because it doesn't
support kqueue.
Introduce a "vselect" widget that displays vertical list of entries.
Incompatible FFI changes:
- Change the FFI interface, so that the destructor is freed explictly with
ffi_destructor_destroy.
- Delete the function ffi_call_function_pure - ffi_unsafe_get_world and
ffi_call_function should be used instead. |
www.ajla-lang.cz/downloads/binaries/ajla-0.1.3-os2.zip | local copy | |
Ajla Programming Language v. 0.1.2 (18/6/2024, Mikulas Patocka) | Readme/What's new |
=== RELEASE 0.1.2 ===
Fix a bug that the tag bit was not checked on the second argument of
len_at_least and len_greater_than - this resulted in incorrect result if the
value was a box or a thunk.
Optimization: don't check index against list length if it can be proved that the
index is smaller (such as "for i := 0 to len(l) do ...").
|
www.ajla-lang.cz/downloads/binaries/ajla-0.1.2-os2.zip | local copy | |
Ajla Programming Language v. 0.1.1 (8/6/2024, Mikulas Patocka) | Readme/What's new |
=== RELEASE 0.1.1 ===
Save the JIT-generated machine code to the files in ~/.cache/ajla. This reduces
startup time.
Introduce stdlib/mutex.ajla
Fix crashes on alpha, loongarch64, mips.
Imcompatible change: Fix misdesigned FFI interface - we need to pass the
destructor to the functions that manipulate memory allocated from the
destructor, so that the destructor is not freed prematurely. Previously, the
"keep" statement was used for this purpose, but it is not reliable. |
www.ajla-lang.cz/downloads/binaries/ajla-0.1.1-os2.zip | local copy | |
Ajla Programming Language v. 0.1.0 (24/5/2024, Mikulas Patocka) | Readme/What's new |
Before compiling Ajla, install the packages libgmp-dev and libffi-dev. If
libgmp-dev is not installed, Ajla will use slow built-in version. If libffi-dev
is not installed, the possibility to call C functions from Ajla will be
disabled.
You can compile and install Ajla with ./configure && make && make install
It is recommended to use gcc. clang works, but the compilation is very slow, it
may take an hour or more to compile the files ipret.c and ipretc.c.
When running ajla programs, it is recommended to set cpu governor to
'performance'. Ajla starts and stops threads rapidly and the 'ondemand' governor
underclocks the cores, resulting in slower performance.
Ajla arguments:
--compile - compile the program without running it
--debug - enable all debugging
--debug=magic - put a magic value at the start every memory block
--debug=redzone - put a redzone value at the end of every memory block
--debug=fill - fill the allocated and free blocks with a byte pattern
--debug=leak - test for memory leaks
--debug=memory - enable "magic, redzone, fill, leak"
--debug=mutex-errorcheck- set pthread attribute PTHREAD_MUTEX_ERRORCHECK
--debug=mutex - check correct usage of mutexes (also enables
mutex-errorcheck)
--debug=cond - check correct usage of condition variables
--debng=thread - check correct usage of threads
--debug=tls - check correct usage of thread-local storage
--debug=handles - check correct usage of handles
--debug=objects - enable "mutex, cond, thread, tls, handles"
--profile - enable all profiling
--profile=function - display functions that took most time
--profile=escapes - display files and lines where escape from compiled
code to the interpreter happend most often
--profile=memory - display files and lines where memory allocation
happened
--ptrcomp - use 4-byte pointers and 4-byte integers by default - heap
memory is limited to 32GiB
--strict-calls - disable auto-parallelization
--system-malloc - use system malloc instead of ajla malloc
--thread-tick - spawn a thread that increases the tick variable instead of
using signals
--threads=n - the number of worker threads, the default is the number of
threads on the system
--tick=n - tick time in microseconds, the default is 10000
vim: textwidth=80
------------------------------------
=== RELEASE 0.1.0 ===
Initial release
|
www.ajla-lang.cz/downloads/binaries/ajla-0.1.0-os2.zip | local copy |
This work is licensed under a Creative Commons Attribution 4.0 International License.
Add new comment