Releases: kspalaiologos/kamilalisp
Releases · kspalaiologos/kamilalisp
v0.3.0.1: unified versioning scheme, more mature development process
This release is meant to slightly simplify the job of maintainers in packaging KamilaLisp as it unifies the versioning scheme. v0.3 releases will follow the v0.3.x.y convention where x is incremented on a breaking change and y is incremented on a non-breaking change. y is zeroed when x is incremented.
Changelog:
- Added
meta:version
. - Implement lambert W, digamma and zeta for real/complex arbitrary precision arguments.
- Fix working directory handling in shell code.
- Bump guava, commons-codec.
- Regex escaping.
- Fix a notorious IDE bug that would cause workspace crashes regarding trailing/leading whitespace.
- Implement script preloading.
- Rework
index-of
so that old index-of is now written ascar@index-of&[tie #0]
. - Add a proper stringification procedure for date time objects.
- Fix getenv returning Java
null
. - Implement
sh:process.join
to wait for process termination. - Pervasive
parse-number
. - Add Maja expression evaluator as a built-in function.
- Fix atop's stringification output.
- Fix Huffman encoding in the book.
- Add a new section related to applied mathematics to the book, covering sums and integrals of rational functions, discriminants of monic polynomials.
v0.2p: Bug-fix release
- Optimise some math functions
- Bump Maja
- Fix Gamma function's name in the CAS.
- Partial app for any, all, etc..
- Bump ANTLR, Undertow
- Fix the JSON parser
- Add
regex:replace-all
- Add polynomial solving methods to cmplx64/flt64, fix monadic/dyadic pervasive finite precision functions.
v0.2o: Tentative performance improvements
Implemented
- Chordality checks for graphs.
- Maximum flow algorithms.
- Multigraphs.
- Pseudographs.
- LCA algorithms.
- Travelling Salesman Problem (Christofides, precise, other approximations...)
- Add a chapter on strings to the book.
- More sophisticated regex support (w. callbacks), slices.
- f&[g h] x y = f (g x) (h y).
- Fix parital application in some scenarios (literal quoted list as normal application argument).
- Removed the usage of Java 8 streams that force copies, thus increasing the performance of the core interpreter code and many primitive functions (flt64, bit operations, array operations).
- Optimised comparisons for flt64 and cmplx64 types.
- Bumped all dependencies.
Fixed issues
- Fixed a workspace deletion bug in the IDE.
- Fixed regex arity bugs.
v0.2n - performance improvements, SQL connecction, book updates.
Changes:
- Removed the glossary from the book.
- Numeric QR decomposition for matrices.
- Improve ABCL class file compression.
graph:minus-edge
,graph:minus-vertex
- weighted, directed graphs
- BFS/DFS on graphs, fix dot conflict in fold/scan symbols
- Iterator pipelines.
- Remove synchronisation in environment code
- graph incidence, vertex successors/predecessors
- advanced graph algorithms (Stoer-Wagner minimum cut, Girvan-Newmann clustering, etc...)
- speed up a lot of core interpreter logic by avoiding streams.
- use Undertow instead of Jetty.
- SQL connection
cons
optimisation- meta state managers.
- flt64: use Maja
- add cmplx64.
- bump jline, etc...
- fix symbols for union and intersection
v0.2m: Book updates, bugfixes and domain extensions
New:
- Decrease the size of the JAR.
bsearch
- performing binary search.flt64:ln2
constant.- Symbol expansion
hashmap:process
- run a function over a list of key/value pairs and reconstruct a map.let*
- a more succinct variant oflet
that handles only one binding.- Generalise
find
. find-idx
- a version offind
that returns indices, not a mask vector.all
,any
andnone
have a default functional argument now (identity function).where
extended to n-dimensional operation.where-mask
- inverse ofwhere
.flt64:lambert-w0
andflt64:lambert-w-1
New topics in the book:
- 1D WFC
- Glyphs
- Pattern matching
- Sorts
- Church encoding
- Combinator calculi
- Functional data structures
- Huffman coding
- FIFO/LIFO/priority queues
- Dictionaries
- Relations
Bugfixes:
- Fix exceptions breaking de Bruijn lambda stack balancing.
- JLine: miscellaneous parser fixes.
and
/or
pervasivity (breaking)
v0.2l - Symbolic matrices, HTTP server.
Features:
- HTTP server functionality (no SSL/websockets yet).
in?
- check if an element is present in a set.cas:fn:vars
- add dummy variables to a function- eq/neq (
=
,/=
) on unevaluated atoms cas:matrix:LU
- symbolic LU decomposition (@der-teufel-programming)- matrix singularity checks
- all releases will be signed with my PGP key starting with v0.2k & v0.2l.
str:wrap
cas:matrix:det
.
Bugfixes:
- TCO not working in some scenarios.
- Fix
cmpx
in IDE. - fix a JLine quoting bug.
v0.2k: Streams
Features:
union
andunique
have string overloads. The order is now preserved.isnil
.- streams (xz bzip2 gzip lz4 input/output, CRC32 CRC32C XXH32 MD5 MD2 Adler32 Sha1 digest streams, histogram streams, null streams, tee streams, byte buffer input/output, file input/output, audio streams, custom streams via wrapper).
- sockets now use streams.
- prime:factors - error when n<2.
- support
sh:process
to launch external processes, manage their state, capture their input and output. - terminal/editor font reset (fixes a rare highlight bug).
- terminal repl: fix quote/escape parsing.
- fix the name of cdar
- IDE: project support, syncing projects to different terminal sessions
- fix matrix:trace, rename to num:trace.
- cas:matrix:trace works on symbolic functions (@der-teufel-programming)
- fix a bug in num:LU that threw division by zero error on singular matrices. properly detect singular matrices now.
- fix builds on Java 19 (bump PG)
import
can load project files now.- fix
rank
when reactive forms are present in an array. - MathExpression composition
- PLU decomposition, determinants, matrix inversion for
flt64:
andnum:
v0.2j - IDE preview, 700 commits.
Implemented
- Bessel K and I functions.
- dilog (& Spence's function as
flt64:spence
) and polylogarithm - fresnel integrals
- sine and cosine integrals using Pade approximant
- shi/chi functions (hyperbolic sine/cosine integrals).
- erfi, dawson-f (D+, D-).
- Lerch's transcendent
- van Wijngaarden's A_j
- various book fixes
- preview version of the IDE
- work around the JLine output duplication bug
- support remote sessions
IDE:
- fully functional workspaces.
- terminals: ctrl+h splits horizontally, ctrl+g splits vertically.
- ctrl+q forcibly kills an editor/terminal.
- the splits can be adjusted using mouse.
ide:split 'editor
creates an editor instance. insert code into it, e.g.(lambda (x y) (+ x y))
and press ctrl+s to fix it to the linked terminal instance.- terminal: ctrl+shift+backspace/enter switch between history.
- network/gc meters.
- floating WM over the tiling WM for modals.
v0.2i - Numerics update
Features:
- Implemented more
sh
variables -sh:os-name
,sh:os-version
,sh:os-arch
. - Fix a minor prompt bug.
- Implement 73 different flt64 numerics functions - gamma, incomplete gamma, exponential integral, error functions, bessel functions, zeta functions, Airy function and more.
--> :io:writeln \filter $(starts-with _ "flt64") \meta:env-keys
flt64:erf-inverse
flt64:beta
flt64:min
flt64:acot
flt64:acos
flt64:digamma
flt64:gamma
flt64:csc
flt64:floor
flt64:log2
flt64:ceil
flt64:asinh
flt64:sqrt
flt64:ui-gamma
flt64:exp
flt64:airy-ai-derv
flt64:zeta
flt64:cos
flt64:cot
flt64:max
flt64:erf
flt64:sinh
flt64:pi
flt64:-
flt64:*
flt64:+
flt64:/
flt64:log10
flt64:<
flt64:=
flt64:>
flt64:sech
flt64:/=
flt64:signum
flt64:bessel-jn
flt64:sin
flt64:ln
flt64:acsc
flt64:pochhammer
flt64:erfc
flt64:bessel-j0
flt64:bessel-j1
flt64:abs
flt64:**
flt64:cosh
flt64:bessel-jn-derv
flt64:log-gamma
flt64:sec
flt64:coth
flt64:airy-ai
flt64:atan
flt64:euler-gamma
flt64:trigamma
flt64:Ei
flt64:round
flt64:e
flt64:atanh
flt64:hurwitz-zeta
flt64:bessel-y1
flt64:bessel-y0
flt64:tanh
flt64:asin
flt64:csch
flt64:tan
flt64:erfc-inverse
flt64:mod
flt64:asec
flt64:acosh
flt64:>=
flt64:li-gamma
flt64:bessel-yn
flt64:<=
flt64:polygamma
v0.2h - CAS update
Features:
- Reworked the socket system to use Userdata.
- ZIP and TAR file handling & byte buffer-backed lists.
- Implement
sh:mkdir
,sh:mkdirs
,io:append-file
,sh:cd
,sh:cwd
,sh:access
,sh:path-sep
- Implemented globbing.
- Fixed
?
REPL highlight - Optimise highlighters, add prompt customisation.
- Bump dependencies (JLine, BigMath)
- Add dependency licenses into the repository (
3rdparty/
) - Base64 support (encode/decode)
- Improved parallelism: implement tasks and daemons.
- Implemented the actor message-passing model (
parallel:actor
,parallel:actor.send
,parallel:actor.receive
). - Added computer algebra support: Indefinite integration (antiderivatives), derivatives, limits and series for real and complex analysis.
- Polynomial and mathematical functions supporting substitution and factorisation.
- Implement
meta:type-name
- Taylor, Puiseux, Laurent and MacLaurin series.