pilisp 1.0.0-alpha.13 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 toload
andeval
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 stacktraceshttp/default-headers
- Make
atom
along withswap!
andreset!
aliases for the equivalentstate
functions. count
now uses.length
where possible, rather thanseq
ing everything- Bug fix:
sort
onnil
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) usingpl compile
via the pilisp_cli tool. - Adds
json/decode
andjson/encode
usingdart: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
anddart-assoc-string-string
for working with DartMap<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
andpersistent!
- 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 toto-map
it.
- For
- 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
anddefmethod
, for dispatch bytype
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 stricttrue
orfalse
- 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 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.