Skip to content

Releases: basilisp-lang/basilisp

Release v0.4.0

07 Jun 20:58
a35d85f
Compare
Choose a tag to compare

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 for deftype 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 style array[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 Python str 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 and afor to with-async and for-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

Full Changelog: v0.3.8...v0.4.0

Release v0.3.8

13 Apr 15:28
879817f
Compare
Choose a tag to compare

Added

  • Added afor and awith macros to support async Python interop (#1179, #1181)

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

21 Feb 13:30
4a1ab99
Compare
Choose a tag to compare

Fixed

  • Fix a regression introduced in #1176 where the testrunner couldn't handle relative paths in sys.path, causing basilisp 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 in sys.path (#1208)

Full Changelog: v0.3.6...v0.3.7

Release v0.3.6

17 Jan 13:43
2e37ca3
Compare
Choose a tag to compare

Added

  • Added support for the :decorators meta key in anonymous fns (#1178)

Changed

  • import now returns nil instead of the last module's string representation (#1174)
  • The :decorators key now works in defn when passed as a metadata name key, expanding its support to defn-derived macros like defasync (#1178).
  • Change Python import machinery to be centered around Python code, rather than Basilisp namespaces (#1155, #1165)

Fixed

  • Fix a bug in defn where the attr-map? and function metdata were merged into a seq instead of a map, causing macroexpand 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

16 Dec 14:50
8e526ac
Compare
Choose a tag to compare

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

09 Dec 16:02
66f7773
Compare
Choose a tag to compare

Added

  • Added support for the optional attr-map? on the ns 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

26 Nov 15:54
c8b168e
Compare
Choose a tag to compare

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 and symbol functions did not treat string arguments as potentially namespaced (#1131)
  • Fix a bug where condp would throw an exception if a result expression was nil (#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 with macroexpand-all in a nested macro call (#1143)

Full Changelog: v0.3.2...v0.3.3

Release v0.3.2

14 Nov 02:42
7cdadd2
Compare
Choose a tag to compare

Added

  • Added support for constructing a data representation of reader conditionals (#1125)

Fixed

  • Fix a bug where basilisp test command fails due to an invalid argparse 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

11 Nov 14:38
27c54ed
Compare
Choose a tag to compare

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 prevent attrs.exceptions.FrozenInstanceErrors 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, and empty would not preserve collection metadata (#1103)

Full Changelog: v0.3.0...v0.3.1

Release v0.3.0

01 Nov 15:14
416355c
Compare
Choose a tag to compare

Added

  • Added support for Python 3.13 (#1056)
  • Added support for .cljc files (#1097)

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 of nil (#1093)

Removed

  • Removed support for Python 3.8 (#1083)

New Contributors

Full Changelog: v0.2.4...v0.3.0