Basilisp

Latest version: v0.1.0b1

Safety actively analyzes 624578 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

0.1.0b1

Added
* Added support for passing through `:tag` metadata 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 run` and by `python -m` (791)
* Added the `memoize` core fn (812)
* Added support for `thrown-with-msg?` assertions to `basilisp.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 `operator` module into their corresponding native operators (754)
* Allow vars to be callable to adhere to Clojure conventions (767)
* Adjust input path compatibility in `basilisp.core/load` input 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*`, and `letfn*` forms to avoid unnecessary extra assignments (793, 794, 799)
* Generate Python classes for `deftype*` and `reify*` forms using modern `attr.define`, `attr.frozen`, and `attr.field` APIs (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 `case` forms with only a default expression (807)
* Make `pr` a dynamic variable (820)
* Emit OS specific line endings for the `println` and `prn` fns (810)
* Support any character in character literals (816)
* Loosen `typing-extensions` dependency'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 `TypeError` when used as a function on vectors (770)
* Fix an issue where the constructors of types created by `deftype` and `defrecord` could 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 `nil` when 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/is` may 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
* Improve the state of the Python type hints in `basilisp.lang.*` (797, 784)
* Update Sphinx and its associated contrib libraries to `^7.1.0` (815)

0.1.0b0

Added
* Added rudimentary support for `clojure.stacktrace` with `print-cause-trace` (part of 721)
* Added support for `bytes` literals using a `b` prefix (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 `bencode` binary 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 `case` evaluating 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-by` support for maps and boolean comparator fns (709)
* Fix `sort` support for maps and boolean comparator fns (711)
* Fix `(is (= exp act))` should only evaluate its args once on failure (712)
* Fix issue with `with` failing 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 `intern` failing when used (725)
* Fix issue with `ns` not being available after `in-ns` on the REPL (718)
* Fixed issue with import modules aliasing using ns eval (719)
* Fix issue with `ns-resolve` throwing an error on macros (720)
* Fix issue with py module `readerwritelock` locks 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 `astor` for versions of Python 3.9+ (736)
* Removed `basilisp.__version__` in favor of using `importlib.metadata` for version info (617)
* Removed a shim to Python's `ast` module to support compatibility with Python 3.6 and 3.7 (749)

Other
* Switch to PyLint and Ruff for linting from Prospector (739)

0.1.0a2

Added
* Added support for fixtures in `basilisp.test` (654)
* Added support for Python 3.10 and 3.11 (659, 693)
* Added a Sphinx autodoc plugin for generating API documentation for Basilisp namespaces (658)
* Added support for rewriting required namespaces starting with `clojure.` as `basilisp.` if the original name isn't found on the import path (670, 676)
* Added support for inlining simple functions (673)
* Added the `clojure.core` functions from v1.11 (672)

Changed
* Set tighter bounds on dependency version ranges (657)
* Improved on and completed several different sections of the documentation (661, 669)
* Delete unused utility functions after they are generated and executed by the REPL to save memory (674)

Fixed
* Fixed the `with` macro definition to match the Python language spec (656)
* Fixed a bug where `py->lisp` did not convert map keys or values into Basilisp objects (679)

Other
* Run CPython CI checks on Github Actions rather than CircleCI (683)
* Remove support for Python 3.6 and 3.7, which are both EOL (691)
* Fix test suite failures on Windows and add Github Actions runners for testing on Windows (688)
* Update Prospector version for linting (694)

New Contributors
* ikappaki made their first contribution in https://github.com/basilisp-lang/basilisp/pull/688

**Full Changelog**: https://github.com/basilisp-lang/basilisp/compare/v0.1.0a1...v0.1.0a2

0.1.0a1

Added
* Added a bootstrapping function for easily bootstrapping Basilisp projects from Python (620)
* Added support for watchers and validator functions on Atoms and Vars (627)
* Added support for Taps (631)
* Added support for hierarchies (633)
* Added support for several more utility Namespace and Var utility functions (636)
* Added `basilisp.io` namespace with polymorphic reader and writer functions (645)
* Added support for coroutines and generators using `yield` syntax (652)

Changed
* PyTest is now an optional extra dependency, rather than a required dependency (622)
* Generated Python functions corresponding to nested functions are now prefixed with the containing function name, if one exists (632)
* `basilisp.test/are` docstring now indicates that line numbers may be suppressed on assertion failures created using `are` (643)
* Multimethods now support providing a custom hierarchy and dispatch to registered values using `isa?` (644)

Fixed
* Fixed a bug where `seq`ing co-recursive lazy sequences would cause a stack overflow (632)
* Fixed a spurious failure in the test runner and switched to using macro forms for test line numbers (631)
* Fixed a bug that allowed dynamic Vars to be `set!` even if they weren't thread-bound (638)
* Fixed a bug where it was impossible to specify negative CLI options for the compiler flags (638)
* Fixed a bug where it was impossible to use more than a single body expression in a `try` special form (640)
* Fixed a bug where re-`def`ing a Var (regardless of `^:redef` metadata) would not update metadata or dynamic flag (642)
* Fixed a bug where private Vars could be resolved from the source namespace of a public macro during macroexpansion (648)
* Fixed a bug where trailing quotes were not allowed in Symbols and Keywords (650)

Removed
* Removed Click as a dependency in favor of builtin `argparse` (622, 624, 636)
* Removed Atomos as a dependency in favor of `readerwriterlock` (624)

0.1.dev15

New Features
* Added support for auto-resolving namespaces for keyword from the current namespace using the `::kw` syntax (576)
* Added support for namespaced map syntax (577)
* Added support for numeric constant literals for NaN, positive infinity, and negative infinity (582)
* Added `*basilisp-version*` and `*python-version*` Vars to `basilisp.core` (584)
* Added support for function decorators to `defn` (585)
* Added the current Python version (`:lpy36`, `:lpy37`, etc.) as a default reader feature for reader conditionals (585)
* Added default reader features for matching Python version ranges (`:lpy36+`, `:lpy38-`, etc.) (593)
* Added `lazy-cat` function for lazily concatenating sequences (588)
* Added support for writing EDN strings from `basilisp.edn` (600)
* Added a persistent queue data type (606)
* Added support for transducers (601)
* Added support for Python 3.9 (608)
* Added support for 3-way comparators (609)

Changed
* Moved `basilisp.lang.runtime.to_seq` to `basilisp.lang.seq` so it can be used within that module and by `basilisp.lang.runtime` without circular import (588)
* Keyword hashes are now pre-computed when they are created, so they do not need to be recomputed again to be fetched from the intern cache (592)
* The compiler now uses the pre-computed hash to lookup keywords directly, which should improve lookup time for repeated invocations (592)
* Symbol hashes are now pre-computed when they are created (592)
* Moved `basilisp.core.template` to `basilisp.template` to match Clojure (599)
* Refactor compiler to use `functools.singledispatch` for type based dispatch (605)
* Rename `List`, `Map`, `Set`, and `Vector` to `PersistentList`, `PersistentMap`, `PersistentSet`, and `PersistentVector` respectively (605)

Bug Fixes
* Fixed a bug where `def` forms did not permit recursive references to the `def`'ed Vars (578)
* Fixed a bug where `concat` could cause a `RecursionEror` if used on a `LazySeq` instance which itself calls `concat` (588)
* Fixed a bug where map literals in function reader macro forms caused errors during reading (599)
* Fixed a bug where `some->` and `some->>` threading macros would thread `nil` first arguments (599)

Removed
* Removed `pyfunctional` dependency in favor of Python standard library functions (589)

Other
* Basilisp uses `poetry` for dependency and virtual environment management, as well as for publishing to PyPI (616)

0.1.dev14

New Features
* Added support for `future`s (441)
* Added support for calling Python functions and methods with keyword arguments (531)
* Added support for Lisp functions being called with keyword arguments (528)
* Added support for multi-arity methods on `deftype`s (534)
* Added metadata about the function or method context of a Lisp AST node in the `NodeEnv` (548)
* Added `reify*` special form (425)
* Added support for multi-arity methods on `definterface` (538)
* Added support for Protocols (460)
* Added support for Volatiles (460)
* Added JSON encoder and decoder in `basilisp.json` namespace (484)
* Added support for generically diffing Basilisp data structures in `basilisp.data` namespace (555)
* Added support for artificially abstract bases classes in `deftype`, `defrecord`, and `reify` types (565)
* Added support for transient maps, sets, and vectors (568)

Changed
* Basilisp set and map types are now backed by the HAMT provided by `immutables` (557)
* `get` now responds `nil` (or its default) for any unsupported types (570)
* `nth` now supports only sequential collections (or `nil`) and will throw an exception for any invalid types (570)
* Use `functools.singledispatch` for to achieve higher performance polymorphism on most runtime functions (552, 559)
* Update the keyword cache to use a Python `threading.Lock` rather than an Atom (552)
* `rest` no longer returns `nil`, it always returns an empty sequence (558)

Bug Fixes
* Fixed a bug where the Basilisp AST nodes for return values of `deftype` members could be marked as _statements_ rather than _expressions_, resulting in an incorrect `nil` return (523)
* Fixed a bug where `defonce` would throw a Python SyntaxError due to a superfluous `global` statement in the generated Python (525)
* Fixed a bug where Basilisp would throw an exception when comparing seqs by `=` to non-seqable values (530)
* Fixed a bug where aliased Python submodule imports referred to the top-level module rather than the submodule (533)
* Fixed a bug where static methods and class methods on types created by `deftype` could not be referred to directly (defeating the purpose of the static or class method) (537)
* Fixed a bug where `deftype` forms could not be declared without at least one field (540)
* Fixed a bug where not all builtin Basilisp types could be pickled (518)
* Fixed a bug where `deftype` forms could not be created interfaces declared not at the top-level of a code block in a namespace (376)
* Fixed multiple bugs relating to symbol resolution of `import`ed symbols in various contexts (544)
* Fixed a bug where the `=` function did not respect the equality partition for various builtin collection types (556)
* Fixed a bug where collection types could evaluate as boolean `false` (566)
* Fixed a bug where `reduce` required a 1-arity function for the variant with an initial value, rather than returning that initial value (567)

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.