Skip to content

Releases: kspalaiologos/kamilalisp

v0.3.0.1: unified versioning scheme, more mature development process

15 Jul 20:30
f0aef41
Compare
Choose a tag to compare

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 as car@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

28 Jun 05:45
c94eabf
Compare
Choose a tag to compare
  • 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

12 May 08:20
8d48cd6
Compare
Choose a tag to compare

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.

13 Apr 18:33
6cb0132
Compare
Choose a tag to compare

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

11 Mar 20:56
96bc7f2
Compare
Choose a tag to compare

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 of let that handles only one binding.
  • Generalise find.
  • find-idx - a version of find that returns indices, not a mask vector.
  • all, any and none have a default functional argument now (identity function).
  • where extended to n-dimensional operation.
  • where-mask - inverse of where.
  • flt64:lambert-w0 and flt64: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.

04 Mar 21:30
d555703
Compare
Choose a tag to compare

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.

image
image

v0.2k: Streams

01 Mar 16:47
a956e83
Compare
Choose a tag to compare

Features:

  • union and unique 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: and num:

v0.2j - IDE preview, 700 commits.

21 Feb 22:34
Compare
Choose a tag to compare

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.
    obraz

v0.2i - Numerics update

17 Feb 21:46
Compare
Choose a tag to compare

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

16 Feb 20:47
1b4ade7
Compare
Choose a tag to compare

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.