See the complete language manual and library reference here.
Added ARM Linux binary, tested on
Fix bug where web.req() leaves sockets in CLOSE_WAIT instead of closing them.
Added Android binary. Fixed OpenSSL not loading on Android and PopOS.
Updated to latest
which adds support for delete key.
Added array.filter() and matrix.size().
Fix bugs when matrix is large.
Preserve whitespace in single-line template strings.
Updated to latest
which adds support for home/end keys.
Return this instead of null in sort*()/shuffle() methods.
Added web.url(). Added string.punycode().
Support scalars in matrix.add()/sub()/mul()/div(). Removed matrix.scale() due to overlap.
Removed object.key(). Added optional index argument to object.keys()/pairs()/values().
Always cast index as string when doing object[index], since index as number is now supported by object.values().
Back-ticked strings are now also template strings.
Updated to latest
which fixes a crash when REPL is started within a pseudo-terminal.
2022.02.19 — Fixed bugs in mail module.
Added object.pairs() and object.values().
Added io.text module.
Added official Axiom Docker image.
2022.01.03 — Updated to use new
read_line which fixes issues when line
is greater than terminal width.
2021.12.04 — Added mail module!
Fixed some critical longstanding bugs.
Fixed bugs in matrix.mul()/set() when called after slice(), which also affected fit().
Fixed bugs with randomness in random()/randint()/randstr()/uuid().
Fix bug where web.server information was unavailable during on_destroy.
2021.11.05 — Various bug fixes and improvements.
Fixed crash bugs in string.slice() and web.get().
Fixed off-by-one bug in matrix.fit() for underdetermined matrices, and added tolerance parameter.
Added os.pty(). Improved websocket interface in web.server.
Fixed crash in calendar.next_month()/prev_month().
Added array.table() and array.untable().
Removed "local" parameter from number.date() and added number.local() for reuse with calendar.
2021.08.19 — Added number.round(). Fixed crash on empty array.remove().
Axiom is now compiled using my
instead of using each platform's native build tools.
2021.06.12 — More bug fixes. Fixed key precedence when using operator+ or operator+= with objects.
Fixed OpenSSL not loading on Debian. Fixed web.req() not working on certain sites due to missing headers.
Fixed crash when leaving background threads running after main thread exits. Axiom will now wait for all
background threads to complete before exiting the main thread.
2021.05.02 — Fix crash when os.thread() goes out of scope before thread is finished running.
Added headers parameter to sqlite.query() and removed sqlite.headers().
Internally, class instances now reference the class scope instead of class scope path.
This improves method call performance, and also fixes issue where thing().class==thing was false.
2021.04.17 — More bug fixes. Fixed a crash on Windows when calling web.server.run() without use().
Fixed crash when using the * operator to allocate memory when given a negative size.
Fixed parsing errors on files with no trailing newline.
Fixed REPL not working when used with a debugger like lldb.
Fixed potential issues with calling web.req() from multiple threads.
Added os.wait() and os.done() to deal with child processes on Posix.
Fixed os.exepath() on Linux and Raspberry Pi.
2021.03.14 — Numerous bug fixes and improvements:
fixed os.mkdir()/web.dl()/import(url) not working in Windows;
fixed number.comma() not working for negative numbers, and also added precision parameter;
improved @zip interface;
add support for fractional numbers and precision in number.base()/string.parse_base().
The first Axiom tutorial is out! You can view the slides here:
Stock Market Analysis using Axiom.
2021.01.31 — Added the matrix module!
2020.12.04 — In for loops over strings, iterate over code points instead of bytes.
The most common use case of string for loops is to iterate over text,
in which case the code points are more useful, especially for foreign languages.
2020.11.01 — Updated SQLite to version 3.33.0. This improves SQLite performance and adds some more extensions.
Also added missing shift operators (<< and >>).
2020.10.16 — Removed dependency on libreadline and replaced it with my
read_line library. This improves cross-platform REPL support and behavior.
2020.09.04 — Function and class references are now opaque objects ("scopes") instead of magic strings ("addresses").
This improves performance and fixes some obscure bugs.
Also fixed string.escape()/unescape() for Unicode surrogate pairs (emojis), clarified docs on ?= operators, added special case for += operator,
and added string.search() to search for wildcard patterns.
2020.08.09 — String elements are now (single-character) strings instead of (byte) numbers.
Added string.byte() to explicitly retrieve byte value. Updated and improved documentation.
2020.03.21 — Improved for-loop semantics to support collections. Added calendar module. Added number.format().
Various library changes. Entering the REPL will now report a build date.
2019.11.23 — Added image module! Also improved documentation in various places.
2019.10.02 — Language tweaks: allow :main() redefinition, environment variables in :import(), and blank return statements.
2019.09.06 — Streamlined core methods and improved documentation.
2019.08.16 — Added web.server module! Also fixed bugs in Vim highlighter, and made other minor improvements.
2019.05.04 — Lots of performance improvements. Also added syntax highlighters for VS Code and Vim.
2019.04.07 — Added REPL and several new modules: io.csv, io.html, io.ini, io.json, web, sqlite, zip. Also improved performance.