Releases: basilisp-lang/basilisp
Releases · basilisp-lang/basilisp
Release v0.2.4
Added
- Added functions to
basilisp.testfor using and combining test fixtures (#980) - Added the
importing-resolvefunction 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-pathargument tobasilisp testCLI subcommand (#1075) - Added an empty entry to
sys.pathforbasilisp testCLI subcommand (#1075)
Fixed
- Fix a bug where the reader was double counting the CRLF newline seq in metadata (#1063)
- Conform to the
cider-nreplinfoops spec by ensuring result's:fileis URI, also added missing :column number (#1066) - Fix a bug with
basilisp.edn/write-stringwhere nested double quotes were not escaped properly (#1071) - Fix a bug where additional arguments to
basilisp testCLI 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-pythonCLI 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
:reloadflag 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
doforms (not includingdoforms emitted by macros) (#1028)
Fixed
- Fix a bug where Basilisp did not respect the value of Python's
sys.dont_write_bytecodeflag when generating bytecode (#1054) - Fix a bug where Basilisp import names existed in the same namespace as
defnames, 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-pathCLI command to prepend entries to thesys.pathas an alternative toPYTHONPATH(#1027) - Added an empty entry to
sys.pathfor 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
Varindirection for top-leveldoforms unless those forms specify^:use-var-indirectionmetadata (which currently is only used in thensmacro) (#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-functionscompiler option is disabled (#1023) - Fix a bug where
defrecord/deftypeconstructors could not be used in the type's methods (#1025) - Fix a bug where
keysandvalswould fail for records (#1030) - Fix a bug where operations on records created by
defrecordfailed 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
nilwith several collection functions (#1011) - Fix a bug where
keysandvalsdid not yield keys and values from sequences of map entries (#1018) - Fix a bug where
setandvecdo 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
CollReduceandKVReduceprotocols inbasilisp.core.protocolsand implementedreducein terms of those protocols (#927) - Added support for custom data readers (#924)
- Added
*default-data-reader-fn*(#924) - Added
basilisp.pprint/print-tablefunction (#983) - Added
basilisp.core/read-seqfunction (#986, #999) - Added various compiler arguments to CLI commands (#989)
- Added support for destructuring namespaced symbols using the
:ns/symssyntax 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
deftypeandreifymay declare supertypes as abstract (taking precedence over trueabc.ABCtypes) and specify their member list using^:abstract-membersmetadata (#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/derefwith Clojure to by updating the timeout input argument to be in milliseconds instead of seconds (#1007)
Fixed
- Fix inconsistent behavior with
basilisp.core/withwhen thebodycontains more than one form (#981) - Fix an issue with
basilisp.core/timefailing when called outsidebasilisp.core(#991) - Fix an issue with
basilisp.core/promisewhere 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
SyntaxWarnings would be emitted for certain compiled code (#996) - Fix an issue where 2- and 3-arity
rangeinvocations returned unexpected results (#1004)
Removed
- Removed
python-dateutilandreaderwriterlockas 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
keepandkeep-indexedtwo-arity forms not preserving the transformed values (#962) - Fixed an issue with
basilisp.test/iswhere 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-lineand:end-colmetadata to forms during compilation (#903) - Added
basilisp.repl/sourceto allow inspecting source code from the REPL (#205) - Added
conj1 and 0 arities (#954)
Changed
- Updated dozens of type annotations in the compiler to satisfy MyPy 1.11 (#910)
- Update the
StreamReadermethods 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, andconjcan 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
symbolandkeywordwould 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
^:redefmetadata (#916) - Fix a bug where reader column offset numbering began at 1, rather than 0 (#905)
- Fix a bug where
basilisp.core/booleanwas 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.LazySeqinstances 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
throwspecial form (#862) - Added
basilisp.stacktracenamespace (#721) - Added support for
*flush-on-newline*to flush theprnandprintlnoutput stream after the last newline (#865) - Added support for binding destructuring in
forbindings (#774) - Added
==as an alias to=(#859) - Added custom exception formatting for
basilisp.lang.compiler.exception.CompilerExceptionandbasilisp.lang.reader.SyntaxErrorto show more useful details to users on errors (#870) - Added
merge-withcore function (#860) - Added
fnextcore function (#879) - Added
INamedinterface 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
remandquotmethodologies with corresponding Clojure fns (#848)
Fixed
- Fix a bug where
basilisp.lang.compiler.exception.CompilerExceptionwould nearly always suppress line information in it'sdatamap (#845) - Fix a bug where the function returned by
partialretained the meta, arities, andwith_metamethod 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
concaton 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
recurforms 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
:tagmetadata 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 runand bypython -m(#791) - Added the
memoizecore 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
operatormodule into their corresponding native operators (#754) - Allow vars to be callable to adhere to Clojure conventions (#767)
- Adjust input path compatibility in
basilisp.core/loadinput 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.fieldAPIs (#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
caseforms with only a default expression (#807) - Make
pra dynamic variable (#820) - Emit OS specific line endings for the
printlnandprnfns (#810) - Support any character in character literals (#816)
- Loosen
typing-extensionsdependency'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
TypeErrorwhen used as a function on vectors (#770) - Fix an issue where the constructors of types created by
deftypeanddefrecordcould 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
nilwhen 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/ismay 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.stacktracewithprint-cause-trace(part of #721) - Added support for
bytesliterals using a#bprefix (#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
bencodebinary 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
caseevaluating 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-bysupport for maps and boolean comparator fns (#709) - Fix
sortsupport for maps and boolean comparator fns (#711) - Fix
(is (= exp act))should only evaluate its args once on failure (#712) - Fix issue with
withfailing 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
internfailing when used (#725) - Fix issue with
nsnot being available afterin-nson the REPL (#718) - Fixed issue with import modules aliasing using ns eval (#719)
- Fix issue with
ns-resolvethrowing an error on macros (#720) - Fix issue with py module
readerwritelocklocks 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
astorfor versions of Python 3.9+ (#736) - Removed
basilisp.__version__in favor of usingimportlib.metadatafor version info (#617) - Removed a shim to Python's
astmodule to support compatibility with Python 3.6 and 3.7 (#749)
Other
- Switch to PyLint and Ruff for linting from Prospector (#739)