Parallel OS, with GUI, Terminal, OO Assembler, Class libraries, C-Script compiler, Lisp interpreter and more...
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
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
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
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
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
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
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
Lots of good stuff worth doing a release tag for.
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.text
command.As usual reads the STATUS.md
file for all the updates and check the git logs.
Regards to all.
Chris
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.
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
Hi folks, good time for a release tag.
There have been changes to the pre-binder that have significant impact on the code. The pre-binder no longer steps into quasi-quote forms, this was always incorrect behaviour. As a result several issue have been spotted and fixed.
The pre-binder now will pre-bind lambda, macro, quote and quasi-quote function call sites ! This has had a significant performance boost.
boot.inc predicates have been changed to functions rather than macros.
New NetSpeed app ! Measures currently available VP register, memory and reals ops/s performance for each node on the network. This is a dynamic measurement, if you are running other processes then you will see the values react accordingly.
New time terminal command to allow simple timing of the duration of stdin. Use like make it | time etc.
New make command test option. For a quick build stats over 10 runs for your current platform use make test.
New Hchart UI widget. Netmon and NetSpeed apps changed to use this and restructured the source while doing so.
Improvements to the Riscv64 translator files that have saved around 10KB of boot image from that platform.
As usual read through the STATUS.md file to see all the changes and the git logs.
Regards to all
Chris