ChrysaLisp Versions Save

Parallel OS, with GUI, Terminal, OO Assembler, Class libraries, C-Script compiler, Lisp interpreter and more...

v2.7

2 weeks ago

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

v2.6

3 months ago

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

v2.5

4 months ago

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

v2.4

5 months ago

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

v2.3

6 months ago
  • 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

v2.2

7 months ago

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

v2.1

8 months ago

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

v2.0

9 months ago

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

v1.26

11 months ago

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

v1.25

11 months ago

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