Releases: basilisp-lang/basilisp
Releases · basilisp-lang/basilisp
Release v0.1.dev5
New Features
- Add a logger to Basilisp library code (with a default NullHandler) (#243)
- Implement Bytecode caching for compiled Basilisp modules (#244)
CI/Infrastructure Changes
- Build on TravisCI now instead of CircleCI, to take advantage of tox-travis (#247)
- Check for vulnerable packages using safety (#239)
Release v0.1.dev4
Bump version to v0.1.dev4 to add Python 3.7 support on PyPI.
Release v0.1.dev3
New Features
- Add multi-methods to Basilisp (#222)
- The Basilisp PyTest runner now prints exception messages for non-failure errors (#235)
- Add a few new namespace functions to
basilisp.core
(#224) - Create namespace setting context managers for use in tests (#228)
Bug Fixes
- Removed usages of
seq.grouped
from PyFunctional which throwStopIteration
exceptions and cause Basilisp to be unusable with Python 3.7 (#221) - Fix a bug where the wrong namespace may be set in
deftest
defined tests (#232) - Fix a bug where non-symbols could not appear in the member position of Python interop special forms (#230)
- Fix several instances of bugs where Basilisp tests were changing
basilisp.core/*ns*
without resetting it, which would cause cascading test failures (#228)
Release v0.1.dev2
New Features
- Add PyTest runner tests written using the
basilisp.test/deftest
macro (#195) - Throw a useful error when no Var is bound to a symbol (#197)
- Add a string library as
basilisp.string
(#187) - Add regex functions to
basilisp.core
(#193) - Add namespace functions to
basilisp.core
(#176) - The reader can return a custom EOF indicator (#218)
Bug Fixes
- Fixed a bug where comment literals were not be fully removed from reader outputs (#196)
- Fixed a bug where comment literals caused syntax errors inside collection literals (#196)
- Imported namespaces no longer create extra namespaces bound to munged Python module names (#216)
- Fixed a bug where
import*
s would not work within other forms - Fixed a bug where the Basilisp import hook could be added to
sys.meta_path
multiple times (#213) - Fixed a bug where keywords could not be used in function position (#174)
- Fixed a bug where macro symbols were not resolved using the same heuristics as other symbols (#183)
- Fixed a bug where lazy sequences were not resolved even if they were empty-checked (#182)
- Fixed a bug where new namespaces were created whenever the compiler checked if a namespace existed to resolve a symbol (#211)
- Fixed a bug where Python string escape sequences were not handled correctly by the reader (#192)
- Fixed a bug where character literals caused a syntax error inside collections (#192)
CI/Infra Changes
- Use Tox to orchestrate CI type checking, linting, and testing both locally and on CircleCI
- Use
coverage
now in place ofpytest-cov
Continuous improvement :tada:
New Features
- Basic CLI for REPL and running scripts
- REPL convenience functions
doc
andpydoc
will return Basilisp and Python documentation respectively - Vars containing the last 3 expression results (
*1
,*2
,*3
) and last exception (*e
) are now included on the REPL - Added support for Decimal, Fraction, and complex types
- Support for Clojure style object instantiation syntax:
(new com.lisp.Object)
or(com.list.Object.)
- Read/eval functions in
basilisp.core
- Support for customizing data readers either by binding
*data-readers*
or supplying a keyword argument from Python - Support for character literals using
\a
syntax - Support for deref-literals using
@
Bug Fixes
- Dynamic vars are now properly compiled as dynamic, allowing thread-local bindings
let*
bindings can no longer eagerly evaluate binding expressions in conditional branches which will not be takencatch
expressions no longer throw an error when they appear in a syntax-quote- Basilisp files imported using the Basilisp import hook now properly resolve symbols in syntax quotes
- Basilisp's
Map
type now supportscons
ing other maps. - Syntax quoted special forms are no longer resolved into namespaced symbols
Initial development release
This is just an excuse to generate a release artifact and push that up to PyPI to claim the name.