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.
1.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
compilecommand and changes toloadandevalcommands - String values are now invocable, act like terms
- Proper PiLisp stack traces can now be printed; Dart stack traces optional.
PiLisp.logEvalExceptionfor printing exceptions with stacktraceshttp/default-headers- Make
atomalong withswap!andreset!aliases for the equivalentstatefunctions. countnow uses.lengthwhere possible, rather thanseqing everything- Bug fix:
sortonnilor empty now returns[] - Removed: transients (poorly implemented, not faster)
1.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 compilevia the pilisp_cli tool. - Adds
json/decodeandjson/encodeusingdart:convert, but decoding returns immutable collections - Adds
to-valuewhich acts as an identity function, except for mutable collections for which it returns immutable equivalents.
1.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-stringanddart-assoc-string-stringfor working with DartMap<String, String>values - Auto-completion at CLI via
1.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-andbit-and-notbit-clearbit-flipbit-notbit-orbit-setbit-shift-leftbit-shift-rightbit-testbit-unsigned-bit-shift-rightbit-xor - Adds WIP
transientandpersistent! - Adds Three-letter names for functions that take a collection and produce another (rather than taking the items to produce it):
lstmapsetvec- For
map, if you pass a single argument that is not a function, it will try toto-mapit.
- For
- Upgraded REPL experience by default (line editing, auto-complete). Use
pl -rfor the older, simpler REPL. - Upgraded fast_immutable_collections to latest stable (^9.0.0)
1.0.0-alpha.9 #
- Bump dependency on
pilisp_cliso that minimum Dart SDK version is acceptable for analysis on pub.dev
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.