Releases: basilisp-lang/basilisp
Releases · basilisp-lang/basilisp
Release v0.5.1
Added
- Added
basilisp.csvnamespace (#753) - Added
basilisp.reflectnamespace for Python VM runtime reflection (#837)
Changed
- Add
testandtestsdirectories toPYTHONPATHautomatically duringbasilisp testCLI invocations (#1069)
Fixed
- Fix a bug where transient vectors were not callable and did not support
nth(#1331)
New Contributors
- @shantanu-sardesai made their first contribution in #1330
Full Changelog: v0.5.0...v0.5.1
Release v0.5.0
Added
- Added support for Python 3.14 (#1282)
- Added support for Unicode escape sequences in string literals (#1295)
- Added environment variable configurations for the PyTest testrunner to allow more specific test discovery (#1301)
- Added no-op Clojure compatibility functions:
inc',dec',int-array,long-array,short-array,float-array,double-array,bool-array(#1305)
Changed
tryandcatchspecial form bodies may now be empty and will returnnilwhen no expressions are given (#1294)basilisp.str/blank?now matches the behavior of Clojure, which returns true fornil, empty strings, and strings consisting of all whitespace (#1305)- String representations of infinity and NaN values now matches Clojure (#1305)
- Promises can now be called to deliver the result (#1305)
- Calling
keywordonnilnow returnsnil(#1305) consalways returns anISeqnow, not specifically aPersistentList(#1305)seqable?now returnstruefornil(#1305)- Calling a vector with an invalid index will now raise
IndexError(#1305) keysandvalsnow returnnilrather than an empty seq if the input collection is empty (#1305)get-inalways returns the input mapping if no keys are given (#1305)assoc!allows an odd number of arguments, substitutingnilfor the missing value (#1305)nthrestandnthnextreturn the input collection unchanged if the index given is negative (#1305)even?andodd?predicates throw exceptions for non-integral inputs (#1305)minandmaxnow return##NaNif any input argument is##NaN(#1305)- Ratios which reduce to an integer are now returned from the reader as integers (#1305)
mod,quot, andremreturn values are now consistent with the Clojure return values for the same inputs (#1305)derivewill throw exceptions if the provided hierarchy is invalid or if the tag and parent are invalid types (#1305)- Map types now print out comma separators between key/value pairs (#1275)
Fixed
- Fix a bug where
importrefers would incorrectly be applied to all import modules in the same form (#1274) - Suppress pytest assertion rewrite warning for basilisp when running
basilisp test(#1252) - Fix a bug where
+characters were not allowed after theein scientific notation literal numbers (#1292) - Fix a bug where namespaces created dynamically at the REPL could not be required from other namespaces in the REPL (#1302)
- Fix a bug where NaN floats were not properly represented in compiled code (#1305)
- Fix a bug where calling
dissocon a record type would throw an exception for keys which weren't defined on the record (#1305) - Fix a bug where arithmetic functions with operands of different types would throw exceptions (#1305)
- Fix a bug where
number?andinteger?would return true for Pythonbooltypes (#1305)
Removed
- Removed support for Python 3.9 (#1283)
Other
- Improve the state of the Python type hints in
basilisp.lang.multifn(#800)
Full Changelog: v0.4.0...v0.5.0
Release v0.5.0.dev2
Added
- Added support for Python 3.14 (#1282)
- Added support for Unicode escape sequences in string literals (#1295)
- Added environment variable configurations for the PyTest testrunner to allow more specific test discovery (#1301)
- Added no-op Clojure compatibility functions:
inc',dec',int-array,long-array,short-array,float-array,double-array,bool-array(#1305)
Changed
tryandcatchspecial form bodies may now be empty and will returnnilwhen no expressions are given (#1294)basilisp.str/blank?now matches the behavior of Clojure, which returns true fornil, empty strings, and strings consisting of all whitespace (#1305)- String representations of infinity and NaN values now matches Clojure (#1305)
- Promises can now be called to deliver the result (#1305)
- Calling
keywordonnilnow returnsnil(#1305) consalways returns anISeqnow, not specifically aPersistentList(#1305)seqable?now returnstruefornil(#1305)- Calling a vector with an invalid index will now raise
IndexError(#1305) keysandvalsnow returnnilrather than an empty seq if the input collection is empty (#1305)get-inalways returns the input mapping if no keys are given (#1305)assoc!allows an odd number of arguments, substitutingnilfor the missing value (#1305)nthrestandnthnextreturn the input collection unchanged if the index given is negative (#1305)even?andodd?predicates throw exceptions for non-integral inputs (#1305)minandmaxnow return##NaNif any input argument is##NaN(#1305)- Ratios which reduce to an integer are now returned from the reader as integers (#1305)
mod,quot, andremreturn values are now consistent with the Clojure return values for the same inputs (#1305)derivewill throw exceptions if the provided hierarchy is invalid or if the tag and parent are invalid types (#1305)
Fixed
- Fix a bug where
importrefers would incorrectly be applied to all import modules in the same form (#1274) - Suppress pytest assertion rewrite warning for basilisp when running
basilisp test(#1252) - Fix a bug where
+characters were not allowed after theein scientific notation literal numbers (#1292) - Fix a bug where namespaces created dynamically at the REPL could not be required from other namespaces in the REPL (#1302)
- Fix a bug where NaN floats were not properly represented in compiled code (#1305)
- Fix a bug where calling
dissocon a record type would throw an exception for keys which weren't defined on the record (#1305) - Fix a bug where arithmetic functions with operands of different types would throw exceptions (#1305)
- Fix a bug where
number?andinteger?would return true for Pythonbooltypes (#1305)
Removed
- Removed support for Python 3.9 (#1283)
Other
- Improve the state of the Python type hints in
basilisp.lang.multifn(#800)
Full Changelog: v0.4.0...v0.5.0.dev2
Release v0.4.0
Added
- Added support for referring imported Python names as by
from ... import ...(#1154) - Added the
basilisp.urlnamespace for structured URL manipulation (#1239) - Added support for proxies (#425)
- Added a
:slotsmeta flag fordeftypeto disable creation of__slots__on created types (#1241) - Added support for f-strings (#922)
- Added the
aslicemacro to facilitate the use of Python stylearray[start:stop:step]slicing in Basilisp (#1248) - Added the
IPendinginterface which is implemented by delays, futures, and promises (#1260) - Added the
basilisp.pprintnamespace (#513)
Changed
- Removed implicit support for single-use iterables in sequences, and introduced
iterator-seqto explicitly handle them (#1192) basilisp.core/strnow delegates to the builtin Pythonstrin all cases except for customizing the string output for builtin Python types (#1237)- Optimised mainstream seq-consuming functions by coercing their inputs into
sequpfront (#1234) - Renamed
awithandafortowith-asyncandfor-asyncfor improved clarity (#1248) basilisp.main.initwill 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
:refera 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-paramsis provided (#1212)
Fixed
- Fix an issue where the compiler would generate an illegal
returnstatement 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 testto fail when no arugments were provided (#1204) - Fix a bug where
basilisp.process/execcould deadlock reading process output if that output exceeded the buffer size (#1202) - Fix
basilisp boostrapissue 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
:decoratorsmeta key in anonymousfns (#1178)
Changed
importnow returns nil instead of the last module's string representation (#1174)- The
:decoratorskey now works indefnwhen 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
defnwhere theattr-map?and function metdata were merged into a seq instead of a map, causingmacroexpandto fail in some cases (#1186) - Fix a bug where
basilisp.process/execthrew an exception when inheriting the stdout stream from the current process (#1190) - Fix a bug where
condpthrew an exception in certain cases (#1194)
Full Changelog: v0.3.5...v0.3.6
Release v0.3.5
Changed
alter-var-rootnow 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
nsmacro (#1173)
Full Changelog: v0.3.4...v0.3.5
Release v0.3.4
Added
- Added support for the optional
attr-map?on thensmacro (#1159) - Added support for the optional pre- and post-conditions in
fnforms (#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
casemacro (#1148) - Fix a bug where
py->lispdid 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.processnamespace (#1108)
Changed
- The Custom Data Readers Loader will only now examine the top directory and up to its immediate subdirectories of each
sys.pathentry, 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
keywordandsymbolfunctions did not treat string arguments as potentially namespaced (#1131) - Fix a bug where
condpwould 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/timewould fail to expand withmacroexpand-allin a nested macro call (#1143)
Full Changelog: v0.3.2...v0.3.3