Skip to content

Releases: vygr/ChrysaLisp

Drunken Dragon

02 May 10:16
Compare
Choose a tag to compare

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 in root.inc.

  • Change the argument ordering for the (sort list [cmp start end]) function and made the comparison function optional and default to cmp.

  • 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 to files 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

09 Feb 09:41
Compare
Choose a tag to compare

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 and collections.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! and reduce! VP primitives.

  • Extensive work on iterator primitives, each!, some!, map! and reduce! 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

31 Dec 09:37
Compare
Choose a tag to compare

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 next lisp 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 now snip 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 to grep 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 and bskipn 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

01 Dec 14:35
Compare
Choose a tag to compare

Wrap up of the years fixes and additions.

  • New Docs application section handler for widget embedding. The UI_WIDGET.md, EDITOR.md and VIEWER.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 and action-collect-global.

  • New (escape string) charclass lib function. Editor now uses this to auto escape the pattern if in regexp mode when useing action-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 the lisp :init method for ALL Lisp tasks. So all tasks started by class/lisp/run.vp. While the class/lisp/root.inc environment is shared by all tasks, the new class/lisp/task.inc is a per task environment.

  • New LPS table search algorithm in Kmplps class.

  • Addition of (debug-brk name exp) conditional breakpoints. Set exp to :t for unconditional.

As usual check the STATUS.md and Git logs for all the fine details.

Chris

Bonfire Toffee

07 Nov 17:35
Compare
Choose a tag to compare
  • 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. Set condition 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 and mv commands apps.

  • New diff and patch commands. Plus associated lib/text/diff.inc library.

Check the Git logs and STATUS.md for all updates.

Best Regards

Chris

Under Construction

13 Oct 10:07
Compare
Choose a tag to compare

Mainly a bug fix release but several new features have been added. Enjoy.

  • Collections now has a generic tree-save and tree-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

17 Sep 18:38
Compare
Choose a tag to compare

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, and lib/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 and static-q macros to root.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

04 Aug 10:34
Compare
Choose a tag to compare

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

17 Jun 09:25
Compare
Choose a tag to compare

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

FrameBuffer Fun

23 May 07:18
9ef7845
Compare
Choose a tag to compare

The host GUI interface for the ChrysaLisp compositor function table has been separated out from the host OS function table.

As a result we now have 3 new make options. GUI=sdl, the default, GUI=fb and GUI=raw. Just add one of these to the make GUI=sdl install to choose.

  • sdl, the same driver for SDL library that we had previously.
  • raw, a software only driver that uses SDL only to show the final result. This is for use as a template for new drivers.
  • fb, a software only Linux Frame buffer device driver contributed, with great thanks, from Greg Haerr. Tested to work on Raspberry PI3 and up, Apple M1 NixOS and a few others.

We will move away from the SDL event interfaces for mouse and keyboard over time !

Many thanks to Greg for this contribution, it has opened up a whole new set of platforms where we can have fun.

Regards to all

Chris