Releases: vygr/ChrysaLisp
Return of the Dragon
Drunken Dragon
Drunken Dragon
Mainly API improvements to give easier usage for most common forms. The nice side benefit is that we have seen a 30% speed up in system build times along with that.
API changes
-
Addition of
\q
wildcard, double quote, to regexp and charclass libs. -
Addition of
(files-all-depends)
and(files-depends)
to
lib/files/files.inc
library. -
(split)
,(trim)
,(trim-start)
and(trim-end)
functions now takes an optional char-class as the split/trim string ! -
New
(flatten list) -> list
function inroot.inc
. -
Change the argument ordering for the
(sort list [cmp start end])
function and made the comparison function optional and default tocmp
. -
New
(usort list [cmp start end])
utility function. -
Iterator functions
(each!)
,(some!)
,(map!)
and(reduce!)
now take arguments other than the lambda and the list of sequences as optionals ! -
(elem-set)
and(dim-set)
now return the target array not the value. -
(elem-get)
,(elem-set)
,(dim-get)
and(dim-set)
now take the target array as the first argument. -
(slice)
now takes the target sequence as the first argument. -
Introduce
(redefun)
and(redefmacro)
! If you are overriding an existing function or macro you must now use this declaration.
APP changes
-
Editor and Viewer app now support
:top
and:bottom
cursor actions. cntl-home and cntl-end bindings. -
Editor and Viewer app support for a cursor stack. cntl-d and cntl-D bindings for
(action-push)
and(action-pop)
. File will reload on pop, unless they have been deleted. -
Editor now has key bindings for
(action-load-depends)
and(action-load-all-depends)
on cntl-e and cntl-E. Acts on the current file as the source for the action. -
Editor
(action-find-function)
binding on cntl-j, with(action-pop)
on cntl-J for convenience. -
Slowly but surely adding the usage lines for all the
ffi
bindings. This is particularly important now we have the jump to function, push/pop actions. -
Added
-d
,-i
and-a
options tofiles
command. -
Fix for
forward.lisp
defs regexp ! -
(char-to-num)
recoded to use ranges to specify the character regions. -
Introduce the lambda shortcut macro early in the
root.inc
file.
As usual check the STATUS.md
file for summaries of the changes.
Regards to all
Chris
Wood Dragon
Happy Chinese new year to all ! Mainly work on some fundamentals for applications this time. I have also uploaded a few videos to Youtube so you can see a few demos.
https://www.youtube.com/@chris.hinsley
-
Reduction of translation passes by 25%.
-
hmap
class now uses slot caching in symbol keys to speed up search operations. -
New documents,
charclass.md
,searching.md
andcollections.md
. -
New
repeat
command. -
New
'list :collect
and'list :min_length
methods. -
(slice)
can now reverse any sequence. Generic(reverse)
macro that wraps
(slice)
. -
New
map!
andreduce!
VP primitives. -
Extensive work on iterator primitives,
each!
,some!
,map!
andreduce!
recoded to use new list methods. -
Faster and more generic
(filter-array)
function. Replaces(filter)
-
New path completion lib
lib/files/urls.inc
. Tab key path completion added to all Textfields. -
File picker now uses a Tree widget.
-
New
template.lisp
command app.
Best Regards
Chris
Top Trumps
I hope 2024 brings good times to everyone. Lots of changes and new capabilities added this time.
-
(#)
macro does NOT descend into quote or quasi-quote forms. -
New
lisp
Docs app section handler !widgets.md
now shows live Lisp code and the widget created by it. These section handlers run in an auto module and anything they export persists within a*handler_env*
and is visible to the nextlisp
section ! The repl return value is auto exported as*result*
, this return value if not:nil
is embedded in the document. -
Docs
file
section handler now takes optional start and end markers. Docs can nowsnip
a small section of a file for inclusion. -
Search bar added to Docs application.
-
New
Radiobar
widget. Can be used in radio or toggle mode. -
New
:visible
method added to Scroll widget. -
New
-m
option togrep
command. -
New Fset/Xset
:intern
method. -
New Stroke widget. Whiteboard updated to use this for multi stroke capture.
-
Whiteboard now uses
.tre
format files for data storage. -
New
(path-smooth tol src) -> dst
function. -
(load-tree)
and(save-tree)
now handle:path
data types. -
(zip)
and(unzip)
now work on any sequence types. -
New generic
(split seq sseq) -> seqs
function. -
New
forward [path] ...
command app. This detects forward referenced function calls, to help you optimize your source. -
(find)
and(find-rev)
now take an optional start index position. -
Faster, approximately 25%,
Syntax :colorise
method. -
New
bskip
andbskipn
functions. -
Region selection added to Viewer app.
-
Find count on status bar shows only count in selected region active.
-
New
&ignore
binding action and(most)
function. -
(first)
,(second)
,(third)
,(last)
,(rest)
,(most)
promoted to VP
built in functions. -
Reference free
(progn)
implementation,(cond)
,(while)
and(lambda)
bodies, now used the exact same code for implicit and explicit progn. -
Faster
(reverse-list)
function, and new(reverse seq)
. -
Buffer :paste
now takes optional wrap_width.
As normal check the STATUS.md
and the Git logs for all the fine details.
Best regards to all
Chris
Tribute to the Tao
Wrap up of the years fixes and additions.
-
New Docs application section handler for widget embedding. The
UI_WIDGET.md
,EDITOR.md
andVIEWER.md
docs shows the idea. -
New API for the
(matches)
and(substr)
functions. Simplified to just return a list of slices for each match. Just the slice ranges, and no substrings stored. -
New Editor collection actions.
action-collect
andaction-collect-global
. -
New
(escape string)
charclass lib function. Editor now uses this to auto escape the pattern if in regexp mode when useingaction-set-find-text
. -
Profile app updated to use a syntax highlighted buffer, and to follow the Debug app style.
-
New
class/lisp/task.inc
file. This file is imported by thelisp :init
method for ALL Lisp tasks. So all tasks started byclass/lisp/run.vp
. While theclass/lisp/root.inc
environment is shared by all tasks, the newclass/lisp/task.inc
is a per task environment. -
New LPS table search algorithm in
Kmplps
class. -
Addition of
(debug-brk name exp)
conditional breakpoints. Setexp
to:t
for unconditional.
As usual check the STATUS.md
and Git logs for all the fine details.
Chris
Bonfire Toffee
-
Improvements to Debug app. Now shows the current executed form, its return value and a syntax highlighted local environment list.
-
Addition of
(debug-brk name condition)
conditional breakpoints. Setcondition
to:t
for unconditional. -
Addition of Fast forward mode in Debug app. You can view this mode as run to next breakpoint.
-
New
rm
,cp
andmv
commands apps. -
New
diff
andpatch
commands. Plus associatedlib/text/diff.inc
library.
Check the Git logs and STATUS.md for all updates.
Best Regards
Chris
Under Construction
Mainly a bug fix release but several new features have been added. Enjoy.
-
Collections now has a generic
tree-save
andtree-load
system. Lists, Maps
and Sets can now be elements of the tree. -
Font app now shows tooltips for the character codes. A click on the character
button copies the tip text to the clipboard. -
Terminal app saves common history to
terminal_state.tre
and supports
dynamic page scaling. -
New
lib/text/charclass.inc
module. Parsers and Regexp changed to use this
as standard. A new(bfind char string) -> :nil | index
function is provided
to perform a binary search find in any sorted char string, which all
(char-class class_key) -> str
generated strings now are. -
Editor updates including, global macro playback to EOF, global undo and redo,
block invert action, search/replace within selected region. Editor can create
10 macro's. The recorder always records into slot "0". You can save slot "0" to
any other slot with shift-cntrl-[1-9]. Playback any slot with cntrl-[1-9].
Macros can record/playback other macros... macros saved to the users Editor
state file. -
New
memoize
macro. Easy creation of Fmap or Lmap caches. -
Buffer class now hold a relative bracket nesting change cache per line. Much
faster bracket matching. -
Regexp updates, now supports almost all Vim shortcuts:
^ start of line
$ end of line
{ start of word
} end of word
. any char
+ one or more
* zero or more
? zero or one
| or
[] class, [0-9], [abc123]
() group
\ esc
\r return
\f form feed
\v vertical tab
\n line feed
\t tab
\s [ \t]
\S [^ \r\f\v\n\t]
\d [0-9]
\D [^0-9]
\l [a-z]
\u [A-Z]
\a [A-Za-z]
\p [A-Za-z0-9]
\w [A-Za-z0-9_]
\W [^A-Za-z0-9_]
\x [A-Fa-f0-9]
Regards to all.
Chris
Regular Features
Major effort on regular expression support, with extensive work on the Editor to take advantage of the new features.
-
New Substr and Regexp search libraries,
lib/text/substr.inc
, andlib/text/regexp.inc
, with built in language support functions,(query)
,(match?)
,(matches)
,(substr)
,(each-found)
and(each-match)
. -
Added dynamic font scaling,
cntrl-[ ]
, to Docs, Editor and Viewer applications. -
Extensive re-worked Docs, Viewer and Editor applications. With full regexp search/replace over all buffers with global file search/match and loading.
-
New reference documentation for VP and Lisp classes.
-
Simple
grep
command added, more options to come. -
make install
now exits and auto calls./stop.sh
. No need to CTRL-C anymore. -
Added
static-qq
andstatic-q
macros toroot.inc
, these perform static quasi-quotation and quotation. -
Argument quoting for Terminal command line added to options processing lib.
Please check the git logs for all the details.
Regards all
Chris
Nodle Soup
ChrysaLisp and ChrysaLib now work together, using the same communication
protocols. As a result the ChrysaLisp usb-links
branch has been deleted as it
is now redundant.
ChrysaLib now provides IP, USB and SHMEM link connectivity, you can setup a
backbone network with ChrysaLib's hub_node
and launch ChrysaLisp subnets that
come and go freely.
ChrysaLisp subnets can share work and services with themselves plus ChrysaLib
services provided in C++ can also be seen and used.
Regards all
Chris
Slim Shady
Lots of good stuff worth doing a release tag for.
- New GUI Logout app available from the Launcher and from the SDL Window close button. This will run the
apps/logout/app.lisp
application and if the user confirms the wish to exit the system then an RPC call to the GUI service will be made to quit the GUI. - New keyboard cooking system. ChrysaLisp now takes on the work to map raw scan codes to modifier key states and country code cooking of keycaps.
- More optimisation for the SVG parser and support for
text
command. - Host GUI compositors now reduce memory usage for glyph textures by 75% and improve performance on glyph blits.
As usual reads the STATUS.md
file for all the updates and check the git logs.
Regards to all.
Chris