New Features
- Added support for Shebang-style line comments (#469)
- Added multiline REPL support using
prompt-toolkit
(#467) - Added node syntactic location (statement or expression) to Basilisp AST nodes emitted by the analyzer (#463)
- Added
letfn
special form (#473) - Added
defn-
,declare
, anddefonce
macros (#480) - Added EDN reader in the
basilisp.edn
namespace (#477) - Added line, column, and file information to reader
SyntaxError
s (#488) - Added context information to the
CompilerException
string output (#493) - Added Array (Python list) functions (#504, #509)
- Added shell function in
basilisp.shell
namespace (#515) - Added
apply-template
function tobasilisp.core.template
namespace (#516)
Changed
- Change the default user namespace to
basilisp.user
(#466) - Changed multi-methods to use a
threading.Lock
internally rather than an Atom (#478) - Changed the Basilisp module type from
types.ModuleType
to a custom subtype with support for custom attributes (#482) - Basilisp's runtime function
Namespace.get_or_create
no longer refersbasilisp.core
by default, which allows callers to excludebasilisp.core
names in thens
macro (#481) - Namespaces now use a single internal lock rather than putting each property inside of an Atom (#494)
- Refactor the testrunner to use fewer
atom
s inbasilisp.test
(#495)
Bug Fixes
- Fixed a reader bug where no exception was being thrown splicing reader conditional forms appeared outside of valid splicing contexts (#470)
- Fixed a bug where fully Namespace-qualified symbols would not resolve if the current Namespace did not alias the referenced Namespace (#479)
- Fixed a bug where the
quote
special form allowed more than one argument and raised an unintended exception when no argument was provided (#497) - Fixed a bug where compiler options specified via command-line argument or environment variable were not honored by the importer (#507)
- Fixed a bug where private Vars from other Namespaces could be referenced if the Namespace was aliased when it was required (#514)
- Fixed a bug where collections with trailing end tokens separated from the collection only by a comment (#520)