LabLISP versions.
Change log of important versions.
Version 1.5.1.4 on 20.01.2025:
31 real math functions like SIN
, SQRT
, etc.
updated ROUND
with divisor, and added FLOOR
, CEILING
, TRUNCATE
bugfix: CA..DR type functions now know their names
bugfix: function arguments are evaled in the local temporary context
Version 1.5.1.0 on 27.08.2024:
Version 1.5.0.5 on 27.05.2024:
Serious refactoring of c++ code, but no changes in LabLisp
Only new function time-stamp
For Qt 5.15.2 and c++17, compiles with mingw 8.1 64bit
Separate c++ modules: IDE, ProcessControl and Environment
Now the hosting app just needs to create IDE, thread and window are then included automagically
Simplified attachment of LabLispHost
Interface for hosted functions is streamlined
Version 1.3.4.0 on 07.03.2023:
Small polishing of code, shorter waiting time, now 10 ms.
Introduced form and result history symbols +
, ++
, +++
, *
, etc. /
, etc.
Version 1.3.3.0 on 05.12.2022:
Big rewrite of Reader, introduces reading modes #“ ”#
, #* *#
and anchor #1=
and link #1#
system.
Reader now issues comments on syntax errors, but handles them elegantly.
Reader dot operator .
, together with the anchor-link system allows creation of cyclic lists directly from reader.
Although lablisp is safe against cyclic data lists, the eval algorithm itself is not - please do not write cyclic programs.
Special opearator ,.
aka hard-splice
.
Process can be aborted with self-kill
.
Version 1.3.0.1 on 29.03.2022:
All functions safe against cyclic data lists.
proper-list-p
predicate.
Printing safely cyclic lists, option *print-shared*
for non-cyclic, but shared list structure.
Destruction of dropped cyclic list is still not handled and will leak memory.
Function definitions with &optional
and &rest
parameters, also &whole
and &body
for macros.
List-making functions nconc
and append
.
Application functions mapcar
, maplist
, mapcan
, mapcon
, mapc
and mapl
.
Comments and warnings come with “;” prepended.
Version 1.2.8.0 on 07.09.2021
Major change that introduces multiple values, as in function intern
, find-symbol
, macroexpand
.
Multiple-valued round
and values
functions.
Rewrote the macro system, now local macros are possible with macrolet
.
macroexpand
and macroexpand-1
now behave properly.
Introduced setf-able places, and setf
special form.
Accessors nthcdr
, first
to tenth
, also rest
.
Function last
.
The setf-able places make it possible to create cyclic lists, and that leads to crashes - don't make cyclic lists!
Version 1.2.6.4 on 07.07.2021
Changes to symbol bindings, allows defconstant
.
String functions write-to-string
and concatenate
.
Function set
.
Integer atom now works with long long integer type.
User accessible flag *allow-non-literal-const*
.
Version 1.2.6.0 on 14.05.2021
Small change to the LabLispHost attachment. Polishing the multi-process evaluation algorithms internally.
sleep
special function.
dolist
and dotimes
now accept optional result form.
Special forms flet
and labels
for local function definitions.
load
now has optional argument to make it silent.
Version 1.2.5.3 on 20.04.2021
Version 1.2.4.7 on 09.04.2021
Changed the old read/eval mechanism for the expansions of quoting characters, now they are done by reader already.
Split the value and function namespaces.
To that, adding boundp
, fboundp
, symbol-value
, symbol-function
, functionp
, packagep
, special-operator-p
.
function
and sharp-quote (#’
) expansion.
Version 1.2.3.7 on 26.01.2021
Rebuilt LabLispHost attachment mechanics.
Functions read
and particularly load
.
Added integerp
.
Rebuilt lexical closures, now free variables from closure are evaluated in the dynamic environment.
Introduced lambda
form.
Version 1.2.3.0 on 12.12.2020
Added several functions for packaging: make-symbol
, intern
, import
, export
, unintern
, unexport
, package-use-list
, package-used-by-list
, package-internal-symbols
, package-external-symbols
, unuse-package
.
Whole packaging system is upgraded to work pretty much as in Common LISP, but still missing shadowing of symbols.
Reader and printer follow the colon and double colon rules for external and internal symbols in packages.
Renamed the predicate functions to be consistent with Common LISP (symbolp
instead of symbol?
etc.).
In general, realized that it make sense to stick to Common LISP language.
Corrected some hidden artefacts of quoting.
Version 1.2.1.5 on 19.11.2020
Version 1.2.0.6 on 04.11.2020
Fixed the command history and colors in output window.
Generalized the constant function to symbols and lists (constant expressions).
Whole multithreaded processing with name-process
and kill
functions.
Smart wait
.
Backquoting, unquoting and splicing.
Version 1.1.1.9 was initially deployed in lab on 16.07.2020
Single LISP expression eval.
Very basic dialect, no macros, no lexical closures, single value and function namespace.