pilisp 1.0.0-alpha.8
pilisp: ^1.0.0-alpha.8 copied to clipboard
An interpreted Lisp inspired by Clojure. Runs on all Dart targets.
1.0.0-alpha.8 #
- Adds initial multimethod support via
defmultianddefmethod, for dispatch bytypeonly- 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
iboolconvert by truthy-ness, not just stricttrueorfalse - Adds
PLEnv.completionsForto provide completions based on all bindings in scope
1.0.0-alpha.7 #
- Adds
PLAwaitvalue that signals to Dart code evaluating PiLisp programs that the final value should beawaited.- This will be leveraged in pilisp-cli for both
replandloadFileuse-cases.
- This will be leveraged in pilisp-cli for both
1.0.0-alpha.6 #
- Renames
corePiLisptopiLispCore - Documentation updates
1.0.0-alpha.5 (GitHub Pre-Release Only) #
- Extended
cdto allow traversing nested structures - Nascent
Futuresupport (see pilisp-native for more) - Makes
defmacroaccept metadata likedefn - Adds
apropos-fullwhich searches by full symbol name - Fixes bugs where
reducecould return aPLReduced - Reimplements
butlastusingreduce
1.0.0-alpha.4 (GitHub Pre-Release Only) #
- Exposed functions for
read-string,load-string, andeval - Ported
clojure.stringforms - Implemented
zipmap,min,max - Corrected
map,partitionbehavior for lists vs. vectors - Improved exception handling and stack trace printing
assocnow accepts vectors- Implemented
test/throwsto test functions that throw an exception - Bindings for mathematical constants available via
dart:math, namely:math/emath/ln10math/ln2math/log10emath/log2emath/pimath/sqrt1-2math/sqrt2 - Removed
urifunction. That was hand-written before Dart code gen for core classes was introduced, and is now available directly viadart/Uri.parseanddart/Uri.parse-full - Ported
clojure.templateforms cdwith no args now works in first position ofpl>(and hence, at the REPL)- Varargs are now bound as a list, rather than a vector
1.0.0-alpha.3 (GitHub Pre-Release Only) #
- Impl. resolve in Dart for performance
- Support
definpl> - 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
1.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.
conjnow works with maps, e.g.,(conj {.a 1} {.b 2})and is morenil-tolerantgetmore tolerant (to match Clojure)get-inported from Clojure- Implementations from
clojure.setnow ported:set/unionset/intersectionset/differenceset/selectset/projectset/rename-keys(also bound torename-keys)set/renameset/indexset/joinset/subset?set/superset? reverseported, but vectors return vectors (not seq)resolve,docimplementedarglistsfunction returns arglists of functions, terms/keywords, vectors, mapsrepl/load-filewhich is available only at the REPL, since the core PiLisp package does not supportdart:iousage.
- 💔 Notable Breaking Changes
pipedrenamed topl>, but also fixed behavior.valuesrenamed tovalsto match Clojure name- Empty invocations now return the empty list, rather than
nil
1.0.0-alpha.1 (GitHub Pre-Release Only) #
- Initial version.