Releases: basilisp-lang/basilisp
Releases · basilisp-lang/basilisp
Release v0.4.0
Added
- Added support for referring imported Python names as by
from ... import ...
(#1154) - Added the
basilisp.url
namespace for structured URL manipulation (#1239) - Added support for proxies (#425)
- Added a
:slots
meta flag fordeftype
to disable creation of__slots__
on created types (#1241) - Added support for f-strings (#922)
- Added the
aslice
macro to facilitate the use of Python stylearray[start:stop:step]
slicing in Basilisp (#1248) - Added the
IPending
interface which is implemented by delays, futures, and promises (#1260) - Added the
basilisp.pprint
namespace (#513)
Changed
- Removed implicit support for single-use iterables in sequences, and introduced
iterator-seq
to explicitly handle them (#1192) basilisp.core/str
now delegates to the builtin Pythonstr
in all cases except for customizing the string output for builtin Python types (#1237)- Optimised mainstream seq-consuming functions by coercing their inputs into
seq
upfront (#1234) - Renamed
awith
andafor
towith-async
andfor-async
for improved clarity (#1248) basilisp.main.init
will only initialize the runtime environment on the first invocation (#1242)- Updated support for PyPy to 3.9 and 3.10 (#1265)
Fixed
- Fix a bug where protocols with methods with leading hyphens in method names could not be defined (#1230)
- Fix a bug where attempting to
:refer
a non-existent Var from another namespace would throw an unhelpful exception (#1231) - Fixed a bug where
(range 0)
would return(0)
rather than than()
as expected (#1258)
New Contributors
- @amano-kenji made their first contribution in #1245
- @ShalokShalom made their first contribution in #1257
- @jf made their first contribution in #1259
Full Changelog: v0.3.8...v0.4.0
Release v0.3.8
Added
Changed
- Function parameter names will not be automatically generated with unique suffixes unless the function meta key
^:safe-py-params
is provided (#1212)
Fixed
- Fix an issue where the compiler would generate an illegal
return
statement for asynchronous generators (#1180) - Fix an issue where consecutive reader comment forms would not be ignored (#1207)
Full Changelog: v0.3.7...v0.3.8
Release v0.3.7
Fixed
- Fix a regression introduced in #1176 where the testrunner couldn't handle relative paths in
sys.path
, causingbasilisp test
to fail when no arugments were provided (#1204) - Fix a bug where
basilisp.process/exec
could deadlock reading process output if that output exceeded the buffer size (#1202) - Fix
basilisp boostrap
issue on MS-Windows where the boostrap file loaded too early, before Basilisp was insys.path
(#1208)
Full Changelog: v0.3.6...v0.3.7
Release v0.3.6
Added
- Added support for the
:decorators
meta key in anonymousfn
s (#1178)
Changed
import
now returns nil instead of the last module's string representation (#1174)- The
:decorators
key now works indefn
when passed as a metadata name key, expanding its support todefn
-derived macros likedefasync
(#1178). - Change Python import machinery to be centered around Python code, rather than Basilisp namespaces (#1155, #1165)
Fixed
- Fix a bug in
defn
where theattr-map?
and function metdata were merged into a seq instead of a map, causingmacroexpand
to fail in some cases (#1186) - Fix a bug where
basilisp.process/exec
threw an exception when inheriting the stdout stream from the current process (#1190) - Fix a bug where
condp
threw an exception in certain cases (#1194)
Full Changelog: v0.3.5...v0.3.6
Release v0.3.5
Changed
alter-var-root
now returns the new value to align with Clojure behavior. Updated the docstring to highlight side effects of direct linking optimization (#1166)
Fixed
- Fix a regression introduced in #1161 which prevented passing namespace metadata on the name in the
ns
macro (#1173)
Full Changelog: v0.3.4...v0.3.5
Release v0.3.4
Added
- Added support for the optional
attr-map?
on thens
macro (#1159) - Added support for the optional pre- and post-conditions in
fn
forms (#1167)
Fixed
- Fix a bug where
#
characters were not legal in keywords and symbols (#1149) - Fix a bug where seqs were not considered valid input for matching clauses of the
case
macro (#1148) - Fix a bug where
py->lisp
did not keywordize string keys potentially containing namespaces (#1156) - Fix a bug where anonymous functions using the
#(...)
reader syntax were not properly expanded in a syntax quote (#1160) - Fix a bug where certain types of objects (such as objects created via
deftype
) could not be unquoted correctly in macros (#1153)
Full Changelog: v0.3.3...v0.3.4
Release v0.3.3
Added
- Added support for a subset of qualified method syntax introduced in Clojure 1.12 (#1109)
- Added the
basilisp.process
namespace (#1108)
Changed
- The Custom Data Readers Loader will only now examine the top directory and up to its immediate subdirectories of each
sys.path
entry, instead of recursive descending into every subdirectory, improving start up performance (#1135)
Fixed
- Fix a bug where tags in data readers were resolved as Vars within syntax quotes, rather than using standard data readers rules (#1129)
- Fix a bug where
keyword
andsymbol
functions did not treat string arguments as potentially namespaced (#1131) - Fix a bug where
condp
would throw an exception if a result expression wasnil
(#1137) - Fix a bug where integer division which resulted in an integer would return a
fractions.Fraction
(#1140) - Fix a bug where
basilisp.core/time
would fail to expand withmacroexpand-all
in a nested macro call (#1143)
Full Changelog: v0.3.2...v0.3.3
Release v0.3.2
Added
- Added support for constructing a data representation of reader conditionals (#1125)
Fixed
- Fix a bug where
basilisp test
command fails due to an invalidargparse
configuration (#1119) - Fix a bug where
basilisp.walk/walk
(and any functions that depend on it) did not preserve collection metadata (#1123) - Fix a bug where the private
postwalk
implementation in the reader did not preserve collection metadata (#1123) - Fix a bug where unknown data reader tags in non-selected reader conditional branches prevented reading the forms (#1118)
Full Changelog: v0.3.1...v0.3.2
Release v0.3.1
Added
- Added support for the
:param-tags
reader metadata syntax^[tag ...]
from Clojure 1.12 (#1111) - Add support for tagged literals (#1104)
Changed
- Types generated by
reify
may optionally be marked as^:mutable
now to preventattrs.exceptions.FrozenInstanceError
s being thrown when mutating methods inherited from the supertype(s) are called (#1088)
Fixed
- Fix a bug where symbols and keyword containing
:
characters in the name were rejected by the reader (#1105) - Fix a bug where records did not support reducing via
reduce-kv
(#1102) - Fix a bug where collection modifying library functions such as
conj
,disj
,assoc
,dissoc
, andempty
would not preserve collection metadata (#1103)
Full Changelog: v0.3.0...v0.3.1
Release v0.3.0
Added
Fixed
- Fix an issue with
basilisp test
standard streams output that can lead to failures on MS-Windows (#1080) - Fix an issue where destructuring a vector would throw an exception rather than returning
nil
for invalid key types (#1090) - Fix an issue where destructuring default values would take precedence over falsey values in the source data structure (#1078)
- Fixed a bug where imported Python names containing
-
(in lieu of_
) could not be referenced using the-
syntax (#1085) - Fixed a compatibility issue where
*print-length*
defaulted to 50 instead ofnil
(#1093)
Removed
- Removed support for Python 3.8 (#1083)
New Contributors
- @bobisageek made their first contribution in #1077
- @djblue made their first contribution in #1096
Full Changelog: v0.2.4...v0.3.0