pilisp 1.0.0-alpha.7 pilisp: ^1.0.0-alpha.7 copied to clipboard
An interpreted Lisp inspired by Clojure. Runs on all Dart targets.
v1.0.0-alpha.7 #
- Adds
PLAwait
value that signals to Dart code evaluating PiLisp programs that the final value should beawait
ed.- This will be leveraged in pilisp-cli for both
repl
andloadFile
use-cases.
- This will be leveraged in pilisp-cli for both
v1.0.0-alpha.6 #
- Renames
corePiLisp
topiLispCore
- 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 likedefn
- Adds
apropos-full
which searches by full symbol name - Fixes bugs where
reduce
could return aPLReduced
- Reimplements
butlast
usingreduce
v1.0.0-alpha.4 (GitHub Pre-Release Only) #
- Exposed functions for
read-string
,load-string
, andeval
- 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 viadart/Uri.parse
anddart/Uri.parse-full
- Ported
clojure.template
forms cd
with no args now works in first position ofpl>
(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
inpl>
- 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 morenil
-tolerantget
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 torename-keys
)set/rename
set/index
set/join
set/subset?
set/superset?
reverse
ported, but vectors return vectors (not seq)resolve
,doc
implementedarglists
function returns arglists of functions, terms/keywords, vectors, mapsrepl/load-file
which is available only at the REPL, since the core PiLisp package does not supportdart:io
usage.
- 💔 Notable Breaking Changes
piped
renamed topl>
, but also fixed behavior.values
renamed tovals
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.