pilisp 1.0.0-alpha.13 copy "pilisp: ^1.0.0-alpha.13" to clipboard
pilisp: ^1.0.0-alpha.13 copied to clipboard

An interpreted Lisp inspired by Clojure. Runs on all Dart targets.

v1.0.0-alpha.13 #

  • First release from https://github.com/pilisp/pilisp-monorepo
    • The coordination overhead of dependencies between pilisp, pilisp-native, and pilisp-cli was too high.
  • Latest pilisp_cli, including new compile command and changes to load and eval commands
  • String values are now invocable, act like terms
  • Proper PiLisp stack traces can now be printed; Dart stack traces optional.
  • PiLisp.logEvalException for printing exceptions with stacktraces
  • http/default-headers
  • Make atom along with swap! and reset! aliases for the equivalent state functions.
  • count now uses .length where possible, rather than seqing everything
  • Bug fix: sort on nil or empty now returns []
  • Removed: transients (poorly implemented, not faster)

v1.0.0-alpha.12 #

  • Incorporates latest pilisp_cli dependency with new signature for CLI invocation
  • New pl/script? is false when a PiLisp program is being compiled (via string interpolation in a Dart program that is then compiled) using pl compile via the pilisp_cli tool.
  • Adds json/decode and json/encode using dart:convert, but decoding returns immutable collections
  • Adds to-value which acts as an identity function, except for mutable collections for which it returns immutable equivalents.

v1.0.0-alpha.11 #

  • Adds http/ functions
  • Upgrades pilisp_cli to latest, including auto-completion and new signature
  • Code gen for http package classes and Encoding
  • Adds to-dart-map-of-string-string and dart-assoc-string-string for working with Dart Map<String, String> values
  • Auto-completion at CLI via

v1.0.0-alpha.10 #

  • Adds not=, distinct?, private fns for case macro
  • Adds repl/completions (used by inf-pilisp to provide auto-complete)
  • Adds bitwise operations as functions: bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-unsigned-bit-shift-right bit-xor
  • Adds WIP transient and persistent!
  • Adds Three-letter names for functions that take a collection and produce another (rather than taking the items to produce it): lst map set vec
    • For map, if you pass a single argument that is not a function, it will try to to-map it.
  • Upgraded REPL experience by default (line editing, auto-complete). Use pl -r for the older, simpler REPL.
  • Upgraded fast_immutable_collections to latest stable (^9.0.0)

v1.0.0-alpha.9 #

  • Bump dependency on pilisp_cli so that minimum Dart SDK version is acceptable for analysis on pub.dev

v1.0.0-alpha.8 #

  • Adds initial multimethod support via defmulti and defmethod, for dispatch by type only
    • Does not yet support arbitrary dispatch functions
    • Does support :default
  • Adds boolean, current-time-millis
  • Supports setters in generated Dart code
  • More Dart code documentation of public forms
  • Adds http package and includes in code gen
    • This package is multi-platform, hence its inclusion in the core language.
  • Makes ibool convert by truthy-ness, not just strict true or false
  • Adds PLEnv.completionsFor to provide completions based on all bindings in scope

v1.0.0-alpha.7 #

  • Adds PLAwait value that signals to Dart code evaluating PiLisp programs that the final value should be awaited.
    • This will be leveraged in pilisp-cli for both repl and loadFile use-cases.

v1.0.0-alpha.6 #

  • Renames corePiLisp to piLispCore
  • Documentation updates

v1.0.0-alpha.5 (GitHub Pre-Release Only) #

  • Extended cd to allow traversing nested structures
  • Nascent Future support (see pilisp-native for more)
  • Makes defmacro accept metadata like defn
  • Adds apropos-full which searches by full symbol name
  • Fixes bugs where reduce could return a PLReduced
  • Reimplements butlast using reduce

v1.0.0-alpha.4 (GitHub Pre-Release Only) #

  • Exposed functions for read-string, load-string, and eval
  • Ported clojure.string forms
  • Implemented zipmap, min, max
  • Corrected map, partition behavior for lists vs. vectors
  • Improved exception handling and stack trace printing
  • assoc now accepts vectors
  • Implemented test/throws to test functions that throw an exception
  • Bindings for mathematical constants available via dart:math, namely: math/e math/ln10 math/ln2 math/log10e math/log2e math/pi math/sqrt1-2 math/sqrt2
  • Removed uri function. That was hand-written before Dart code gen for core classes was introduced, and is now available directly via dart/Uri.parse and dart/Uri.parse-full
  • Ported clojure.template forms
  • cd with no args now works in first position of pl> (and hence, at the REPL)
  • Varargs are now bound as a list, rather than a vector

v1.0.0-alpha.3 (GitHub Pre-Release Only) #

  • Impl. resolve in Dart for performance
  • Support def in pl>
  • Support -l/--load for PiLisp CLI, bind *command-line-args*
  • In pl>, support passing (.) to initial form if fn with no args provided
  • Rename bindings -> bindings* for rebinding in core
  • Impl. partition-by w/reduce
  • Impl. partition w/reduce
  • Correct (conj nil ,,,)
  • Add fnil
  • Impl. interleave w/reduce, add ibool
  • Impl. str/join using reduce w/StringBuffer
  • Impl. take-while via reduce
  • Impl. reduced for short-circuiting reduce
  • Impl. take-while with while
  • Impl. take with while
  • Impl. iterate with while
  • Impl. repeat using while
  • Impl. time macro for timing execution
  • Alias ! for write-state
  • Impl. while special form
  • Support @ for deref
  • Impl. drop with nthrest
  • Impl. nthrest with range and reduce
  • Implement range
  • Impl. concat with reduce
  • Implement map via reduce to avoid stack consumption
  • Correct comp implementation for >2 args
  • Fix stateful bug for nested, closed-over bindings
  • Implement filter via reduce to avoid stack overflow
  • Port rest of clojure.walk

v1.0.0-alpha.2 (GitHub Pre-Release Only) #

  • ⚡️ Features
    • This release is the first compatible with the under-development inf-pilisp Emacs package, for developing in PiLisp using Emacs' "Inferior Lisp" facilities.
    • conj now works with maps, e.g., (conj {.a 1} {.b 2}) and is more nil-tolerant
    • get more tolerant (to match Clojure)
    • get-in ported from Clojure
    • Implementations from clojure.set now ported: set/union set/intersection set/difference set/select set/project set/rename-keys (also bound to rename-keys) set/rename set/index set/join set/subset? set/superset?
    • reverse ported, but vectors return vectors (not seq)
    • resolve, doc implemented
    • arglists function returns arglists of functions, terms/keywords, vectors, maps
    • repl/load-file which is available only at the REPL, since the core PiLisp package does not support dart:io usage.
  • 💔 Notable Breaking Changes
    • piped renamed to pl>, but also fixed behavior.
    • values renamed to vals to match Clojure name
    • Empty invocations now return the empty list, rather than nil

v1.0.0-alpha.1 (GitHub Pre-Release Only) #

  • Initial version.
4
likes
130
pub points
0%
popularity

Publisher

verified publisherpilisp.dev

An interpreted Lisp inspired by Clojure. Runs on all Dart targets.

Repository (GitHub)
View/report issues

Documentation

API reference

License

EPL-2.0 (license)

Dependencies

build, fast_immutable_collections, http, pilisp_cli, source_gen

More

Packages that depend on pilisp