Releases: basilisp-lang/basilisp
Releases · basilisp-lang/basilisp
Release v0.2.4
Added
- Added functions to
basilisp.test
for using and combining test fixtures (#980) - Added the
importing-resolve
function for dynamically importing and resolving a Python name (#1065, #1070) - Added support for highlighting matching parens, brackets, and braces at the REPL (#1074)
- Added the
-p
/--include-path
argument tobasilisp test
CLI subcommand (#1075) - Added an empty entry to
sys.path
forbasilisp test
CLI subcommand (#1075)
Fixed
- Fix a bug where the reader was double counting the CRLF newline seq in metadata (#1063)
- Conform to the
cider-nrepl
info
ops spec by ensuring result's:file
is URI, also added missing :column number (#1066) - Fix a bug with
basilisp.edn/write-string
where nested double quotes were not escaped properly (#1071) - Fix a bug where additional arguments to
basilisp test
CLI subcommand were not being passed correctly to Pytest (#1075)
Full Changelog: v0.2.3...v0.2.4
Release v0.2.3
Added
- Added a compiler metadata flag for suppressing warnings when Var indirection is unavoidable (#1052)
- Added the
--emit-generated-python
CLI argument to control whether generated Python code strings are stored by the runtime for each compiled namespace (#1045) - Added the ability to reload namespaces using the
:reload
flag onrequire
(#1060)
Changed
- The compiler will issue a warning when adding any alias that might conflict with any other alias (#1045)
- The compiler is now capable of unrolling top level
do
forms (not includingdo
forms emitted by macros) (#1028)
Fixed
- Fix a bug where Basilisp did not respect the value of Python's
sys.dont_write_bytecode
flag when generating bytecode (#1054) - Fix a bug where Basilisp import names existed in the same namespace as
def
names, which caused some unexpected behavior (#1045)
--disable-ns-cache
CLI command or by using the BASILISP_DO_NOT_CACHE_NAMESPACES=true
environment variable. Alternatively, you can either clear your Python cache using whatever means you typically use or recreate your virtual env.
Full Changelog: v0.2.2...v0.2.3
Release v0.2.2
Added
- Added the
-p
/--include-path
CLI command to prepend entries to thesys.path
as an alternative toPYTHONPATH
(#1027) - Added an empty entry to
sys.path
for all CLI entrypoints (basilisp run
,basilisp repl
, etc.) (#1027) - Added command line arguments for enabling the development logger and configuring the logging level (#1047)
Changed
- The compiler will no longer require
Var
indirection for top-leveldo
forms unless those forms specify^:use-var-indirection
metadata (which currently is only used in thens
macro) (#1034) - nREPL server no longer sends ANSI color escape sequences in exception messages to clients (#1039)
Fixed
- Fix a bug where the compiler would always generate inline function definitions even if the
inline-functions
compiler option is disabled (#1023) - Fix a bug where
defrecord
/deftype
constructors could not be used in the type's methods (#1025) - Fix a bug where
keys
andvals
would fail for records (#1030) - Fix a bug where operations on records created by
defrecord
failed for fields whose Python-safe names were mangled by the Python compiler (#1029) - Fix incorrect line numbers for compiler exceptions in nREPL when evaluating forms in loaded files (#1037)
- Fix issue where the compiler exception message from the nREPL server could refer to the initially loaded file instead of the updated one (#1042)
Full Changelog: v0.2.1...v0.2.2
Release v0.2.1
Changed
- Exceptions occurring during inlining during macroexpansion are no longer obscured by the outer macroexpansion exception (#1013)
Fixed
- Fix the behaviour of
nil
with several collection functions (#1011) - Fix a bug where
keys
andvals
did not yield keys and values from sequences of map entries (#1018) - Fix a bug where
set
andvec
do not produce collections of map entries when called on map arguments (#1020) - Fix lazy sequences not propagating
AttributeError
(#1019)
Full Changelog: v0.2.0...v0.2.1
Release v0.2.0
Added
- Added the
CollReduce
andKVReduce
protocols inbasilisp.core.protocols
and implementedreduce
in terms of those protocols (#927) - Added support for custom data readers (#924)
- Added
*default-data-reader-fn*
(#924) - Added
basilisp.pprint/print-table
function (#983) - Added
basilisp.core/read-seq
function (#986, #999) - Added various compiler arguments to CLI commands (#989)
- Added support for destructuring namespaced symbols using the
:ns/syms
syntax and non-keyword values in standard associative destructuring forms (#836)
Changed
- Improved on the nREPL server exception messages by matching that of the REPL user-friendly format (#968)
- Types created via
deftype
andreify
may declare supertypes as abstract (taking precedence over trueabc.ABC
types) and specify their member list using^:abstract-members
metadata (#942) - Load functions (
load
,load-file
,load-reader
, etc.) now return the value of the last form evaluated. (#984) - nREPL server no longer hangs waiting for client connections to close on exit (#1002)
- Align
basilisp.core/deref
with Clojure to by updating the timeout input argument to be in milliseconds instead of seconds (#1007)
Fixed
- Fix inconsistent behavior with
basilisp.core/with
when thebody
contains more than one form (#981) - Fix an issue with
basilisp.core/time
failing when called outsidebasilisp.core
(#991) - Fix an issue with
basilisp.core/promise
where a thread waiting for a value from another thread might not wake up immediately upon delivery (#983). - Fix using keyword as a function not returning the default value in some cases (#997)
- Fix an issue where Python
SyntaxWarning
s would be emitted for certain compiled code (#996) - Fix an issue where 2- and 3-arity
range
invocations returned unexpected results (#1004)
Removed
- Removed
python-dateutil
andreaderwriterlock
as dependencies, switching to standard library components instead (#976)
Other
- Run PyPy CI checks on Github Actions rather than CircleCI (#971)
Full Changelog: v0.1.1...v0.2.0
Release v0.1.1
Added
- Added several missing functions to
basilisp.core
(#956)
Fixed
- Fixed an issue where attempting to run a namespace from the CLI could fail in certain cases (#957)
- Fixed an issue with
keep
andkeep-indexed
two-arity forms not preserving the transformed values (#962) - Fixed an issue with
basilisp.test/is
where the expected value was misreported on failure of non(= ...)
expr (#965)
Full Changelog: v0.1.0...v0.1.1
Release v0.1.0
Added
- Added
:end-line
and:end-col
metadata to forms during compilation (#903) - Added
basilisp.repl/source
to allow inspecting source code from the REPL (#205) - Added
conj
1 and 0 arities (#954)
Changed
- Updated dozens of type annotations in the compiler to satisfy MyPy 1.11 (#910)
- Update the
StreamReader
methods to stop using the term "token" to refer to individual UTF-8 characters (#915) - Update the list of Python dunder methods which are allowed to be implemented for all
deftype*
andreify*
types (#943) - ISeq now inherits from IPersistentCollection so
coll?
,empty
, andconj
can now be used with sequences (#954)
Fixed
- Fix a bug where
.
characters were not allowed in keyword names (#899) - Fix a bug where nested quotation marks were not escaped properly by various print functions and at the REPL (#894)
- Fix a bug that caused a syntax error when presenting any filepath that includes the MS-Windows
\
file separator to the cli run command (#912) - Fix a bug where the core functions
symbol
andkeyword
would not accept non-string data types (#911) - Fix a bug where the compiler would emit warnings on when a Var was redef'ed even if that Var was initially defined with
^:redef
metadata (#916) - Fix a bug where reader column offset numbering began at 1, rather than 0 (#905)
- Fix a bug where
basilisp.core/boolean
was returning the boolean coercions like Python rather than like Basilisp (#928) - Fix a bug where Basilisp vectors were not callable (#932)
- Fix a bug where
basilisp.lang.seq.LazySeq
instances were not thread-safe (#934) - Fix a bug where Seqs wrapping Python Iterable instances were not thread-safe (#936)
- Fix several bugs where code was being executed from a string with interpolated variables, which could've allowed for code (#938)
- Fix a bug where record types and data readers whose fully qualified name started with a "b" could not be read (#947)
Other
- Add several sections to Concepts documentation module (#666)
- Add REPL documentation module (#250)
- Add documentation module for Basilisp interfaces (#920)
- Add GitHub source links to generated API documentation (#921)
- Update Concepts documentation module with See Also links for most sections (#925)
- Update Sphinx documentation theme (#909)
- Update documentation to directly reference Python documentation and fix many other minor issues and misspellings (#907, #919)
Release v0.1.0b2
Added
- Added filename metadata to compiler exceptions (#844)
- Added a compile-time warning for attempting to call a function with an unsupported number of arguments (#671)
- Added support for explicit cause exception chaining to the
throw
special form (#862) - Added
basilisp.stacktrace
namespace (#721) - Added support for
*flush-on-newline*
to flush theprn
andprintln
output stream after the last newline (#865) - Added support for binding destructuring in
for
bindings (#774) - Added
==
as an alias to=
(#859) - Added custom exception formatting for
basilisp.lang.compiler.exception.CompilerException
andbasilisp.lang.reader.SyntaxError
to show more useful details to users on errors (#870) - Added
merge-with
core function (#860) - Added
fnext
core function (#879) - Added
INamed
interface for Keywords and Symbols (#884) - Added
*print-namespace-maps*
dynamic var support (#882)
Changed
- Cause exceptions arising from compilation issues during macroexpansion will no longer be nested for each level of macroexpansion (#852)
- Support for optional metadata argument in
defmulti
(#857) - Aligned
rem
andquot
methodologies with corresponding Clojure fns (#848)
Fixed
- Fix a bug where
basilisp.lang.compiler.exception.CompilerException
would nearly always suppress line information in it'sdata
map (#845) - Fix a bug where the function returned by
partial
retained the meta, arities, andwith_meta
method of the wrapped function rather than creating new ones (#847) - Fix a bug where exceptions arising while reading reader conditional forms did not include line and column information (#854)
- Fix a bug where names
def
'ed without reader metadata would cause the compiler to throw an exception (#850) - Fix an issue where
concat
on maps was iterating over the keys instead of the key/value pairs (#871) - Fix a bug where the compiler would throw an exception partially macroexpanding forms with
recur
forms provided as arguments (#856) - Fix a bug where the original
(var ...)
form is not retained during analysis, causing it to be lost in calls tomacroexpand
(#888) - Fix issue with the reader var macro failing in syntax quote when unquoting a symbol, e.g. `(#'~symbol) (#889)
- Fix issue where
(str seq)
was printing seq string items without quotation marks (#891) - Fix issue where interop failed to access property name matching a builtins name (#896)
Release v0.1.0b1
Added
- Added support for passing through
:tag
metadata to the generated Python AST (#354) - Added support for calling symbols as functions on maps and sets (#775)
- Added support for passing command line arguments to Basilisp (#779)
- Added support for autocompleting names in the
python/
pseudo-namespace for Python builtins at the REPL (#787) - Added a subcommand for bootstrapping the Python installation with Basilisp (#790)
- Added support for executing Basilisp namespaces directly via
basilisp run
and bypython -m
(#791) - Added the
memoize
core fn (#812) - Added support for
thrown-with-msg?
assertions tobasilisp.test/is
(#831) - Added support for reading scientific notation literals, octal and hex integer literals, and arbitrary base (2-36) integer literals (#769)
- Added support for passing trailing maps to functions which accept Basilisp keyword arguments (#663)
- Added support for loading namespaces as an alias only (#664)
Changed
- Optimize calls to Python's
operator
module into their corresponding native operators (#754) - Allow vars to be callable to adhere to Clojure conventions (#767)
- Adjust input path compatibility in
basilisp.core/load
input path to be relative to the namespace or the root path (#782) - No longer warn on unused bindings when their name begins with
_
(#756) - Improve the Python generation for
do
,if
,let*
, andletfn*
forms to avoid unnecessary extra assignments (#793, #794, #799) - Generate Python classes for
deftype*
andreify*
forms using modern@attr.define
,@attr.frozen
, and@attr.field
APIs (#799) - Generate Protocol functions with nicer names based on the protocol function and dispatch type (#803)
- Loosen the dependency specification for Immutables and Pyrsistent to allow for a wider version range (#805)
- Allow
case
forms with only a default expression (#807) - Make
pr
a dynamic variable (#820) - Emit OS specific line endings for the
println
andprn
fns (#810) - Support any character in character literals (#816)
- Loosen
typing-extensions
dependency's minimal version to 4.7.0 (#809)
Fixed
- Fix issue with
(count nil)
throwing an exception (#759) - Fix issue with keywords not testing for membership in sets when used as a function (#762)
- Fix an issue for executing Basilisp scripts via a shebang where certain platforms may not support more than one argument in the shebang line (#764)
- Fix issue with keywords throwing
TypeError
when used as a function on vectors (#770) - Fix an issue where the constructors of types created by
deftype
anddefrecord
could not be called if they contained-
characters (#777) - Fix issue with the variadic ampersand operator treated as a binding in macros (#772)
- Fix a bug the variadic arg symbol was not correctly bound to
nil
when no variadic arguments were provided (#801) - Fix a bug where the quotient of very large numbers was incorrect (#822)
- Fix a bug where
basilisp.test/is
may fail to generate expected/actual info on failures when declared inside a macro (#829) - Fix a bug where sequential destructuring bindings do not bind names correctly when nested within associative destructuring bindings (#834)
Removed
- Removed support for PyPy 3.8 (#785)
Other
Release v0.1.0b0
Added
- Added rudimentary support for
clojure.stacktrace
withprint-cause-trace
(part of #721) - Added support for
bytes
literals using a#b
prefix (#732) - Added support for Python 3.12 (#734)
- Added a default reader conditional for the current platform (
windows
,darwin
,linux
, etc.) (#692) - Added support for
bencode
binary encoding (part of #412) - Ported nbb's nrepl-server module to basilisp (#412)
Changed
- Basilisp now supports PyTest 7.0+ (#660)
Fixed
- Fix issue with
case
evaluating all of its clauses expressions (#699) - Fix issue with relative paths dropping their first character on MS-Windows (#703)
- Fix incompatibility with
(str nil)
returning "nil" (#706) - Fix
sort-by
support for maps and boolean comparator fns (#709) - Fix
sort
support for maps and boolean comparator fns (#711) - Fix
(is (= exp act))
should only evaluate its args once on failure (#712) - Fix issue with
with
failing with a traceback error when an exception is thrown (#714) - Fix issue with
sort-*
family of funtions returning an error on an empty seq (#716) - Fix issue with
intern
failing when used (#725) - Fix issue with
ns
not being available afterin-ns
on the REPL (#718) - Fixed issue with import modules aliasing using ns eval (#719)
- Fix issue with
ns-resolve
throwing an error on macros (#720) - Fix issue with py module
readerwritelock
locks handling (#722) - Fix issue with basilisp.io/writer :append mode not working (#741)
- Fix issue with attempting to inline functions which reference other Python modules that aren't available in the inline destination (#746)
Removed
- Removed the dependency
astor
for versions of Python 3.9+ (#736) - Removed
basilisp.__version__
in favor of usingimportlib.metadata
for version info (#617) - Removed a shim to Python's
ast
module to support compatibility with Python 3.6 and 3.7 (#749)
Other
- Switch to PyLint and Ruff for linting from Prospector (#739)