Asteroid is a modern, multi-paradigm programming language that supports first-class patterns. More details can be found at the website asteroid-lang.org. Documentation on Asteroid can be found at asteroid-lang.readthedocs.io.
- Improved interactive debugger (MAD).
- Autocompletion on interactive shell.
- Fixed the Windows 'pyreadline3' bug.
-
We now support the ASTEROIDPATH environment variable which is expected to have a colon seperated list of directories to search for user defined modules.
-
The logical operators 'and' and 'or' are now evaluated in short-circuit fashion.
-
Files loaded with the 'load' statement are now considered modules and work similarly to Python modules.
-
Added the 'toplevel' function which returns true if control is in the module originally loaded by the interpreter.
-
Added the match statement similar to the match statement in Python.
-
No longer supports type hierarchies for the primitive types. The functions in the 'type' module are now considered builtins. The 'type' module itself has been eliminated.
-
The Minimal Asteroid Debugger (MAD) replaces ADB in this release.
-
The shorthand conditional pattern can now be applied to arbitrary patterns. E.g. The pattern
(a,b,c):(%integer,%integer,%integer)
constrains the triple
(a,b,c)
to be a triple of integers. The above shorthand conditional pattern is equivalent to the conditional pattern,(a,b,c) if (a,b,c) is (%integer,%integer,%integer)
-
Allows pattern constraint operator to map certain variables that a pattern matched to be bound into the current scope.
-
Supports a new OS module.
-
Supports iteration over tuple components
-
The
eval
function has been extended to strings for the interpretation of Asteroid programs in those strings. -
Structures now support a
__str__
member function that allows the user to specify a string representation of the structure. -
Updated user and reference guides.
-
Lots of bug fixes.
-
Fixes a fatal bug on Windows regarding the
readline
functionality in Python 3.10. -
Fixes a bug with escaped double quotes in strings.
-
An experimental implementation of an interactive debugger that supports debugging pattern matching and in particular, pattern matching with first-class patterns.
-
A Python API allowing the developer to call the Asteroid interpreter from within a Python program and also embed Python code in an Asteroid program.
-
Eliminated the
stride
notation in list comprehensions and replaced it with thestep
notation. -
Lots of bug fixes.
-
Interpreter line-editing features similar to Python include interactive editing, history substitution and code completion on systems that support the GNU Readline library.
-
New object-based modules for system modules. For example the functions within the
io
module are now accessed with the@
operator,load system io. io @println "Hello, World!".
-
In the absence of explicit return statements the last expression evaluated within a function body provides an implicit return value, e.g.,
function inc with i do i+1 end
-
Lots of bug fixes!