Parallel OS, with GUI, Terminal, OO Assembler, Class libraries, C-Script compiler, Lisp interpreter and more...
GPL-2.0 License
Bot releases are visible (Hide)
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
Published by vygr 10 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
Published by vygr 11 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
Published by vygr 12 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
Published by vygr about 1 year 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
Published by vygr about 1 year 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
Published by vygr about 1 year 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
Published by vygr over 1 year ago
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
Published by vygr over 1 year 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.
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
Published by vygr over 1 year ago
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
Published by vygr over 1 year ago
Official tag release for Riscv64 port. I'm sure some further optimisation will occur, but this is a great example emit
file to look at. 435 lines to bring up the Riscv64 platforms.
Many thanks to Martin Wendt for his tireless remote test cycle to allow me to get this done with no hardware. So, now we have 5 platforms building in under 5 seconds (on my old MacBook). A good thing (tm).
Install build on VisionFive2:
https://www.youtube.com/watch?v=xZGjFP0gNBY
Then native build:
https://www.youtube.com/shorts/DhOC7wWRcnk
Regard all
Chris
Published by vygr almost 2 years ago
Happy new year to all.
This year I have not been able to add as much as I'd like due to family circumstances. But this tag rounds up all the years changes and tidy ups.
As usual check the git
logs to see all the updates.
Thank you all for your understanding during this years troubles.
Chris
Published by vygr almost 3 years ago
This release wraps up work for the year.
The PCB demo app has been updated to include the solver and this has prompted improvements and unification of the vector math library, the reimplementation of the (nums) classes, VP vector SDL, including addition of VP vector ops at the VM level.
Take a look at the STATUS.md doc and the commit logs for the full list of updates.
Best wishes to everyone
Chris
Published by vygr about 3 years ago
This release concentrates on the numerics side of ChrysaLisp. Number, Fixed and Reals and the vector variants of these.
Some new demo apps have been created Molecule and Mesh that pushed the need to tighten up the number formats and vector functions. As well as providing a good test bed for new Canvas methods including a new highly optimised :tri method. Take a look at the NUMERIC.md document and the new libraries in 'lib/math/'.
Extra work on converting the Editor functions into a GUI component that is now shared between Edit, Viewer and Terminal apps.
(eql) and (find) now use the same comparison for the element test. They can also be used with more object types. As well as making this faster this has also led to the creation of new fmap and fset classes. Faster versions of xmap and xset that use (find). (case) can now cope with polymorphic clauses and vector keys as a result of the (find) improvements.
As always check the commit logs and STATUS.md file for a full list of the changes.
Regards to all
Chris
Published by vygr about 3 years ago
This release concentrates on documentation and polishing existing API's and features.
Lots more polishing and additions, see the STATUS doc and Github commits for details.
Enjoy, regards to all
Chris
Published by vygr over 3 years ago
Interim release to bring the latest changes to the tagged version.
Main change I wish to put out is the newly rewritten Editor and Doc apps. They use a much better system for application organisation as well as pushing the new module system construction for applications.
The Docs app use dynamically load modules to handle each state of the application ! Allow dynamic extension of its feature set.
The Editor is now well on the way to a full project manager IDE, but so much progress has been may that this drop is worth it.
The assembler/CScript , parsers and optimisers have been broken out into individual library modules that I hope will encourage people to take a look and study.
Enjoy, and best regards
Chris
Published by vygr over 3 years ago
Spring is sprung and time for another release.
The big changes over the last few months have centred on language data structures and consistency with the lower level VP structures and typing. So (structure) (getf) (setf) (enums) (bits)
are all now available at the Lisp level and share the same typing system as the VP level (def-struct) (def-enum) (def-bit)
.
Also a big push to adopt the +xxx constant format symbols throughout the source to give the (prebind)
the opportunity to act on constants.
New (if)
and (or)
implementations bringing speed improvements and reduction in use of (gensym)
symbols.
New implementations of (def-vars) (def-class) (def-struct) (def-enum) (def-bit)
that remove the need to quote symbols and remove the need for the (def-xxx-end)
functions.
New launch script options.
[-n cnt] number of nodes
[-b base] base offset
[-e] emulator mode
[-h] help
New (mail-timeout)
feature to improve animation and mail read retries. Along with new Farm
and Global
classes for fault tolerant task management.
As always, check the STATUS.md file for the full list of updates as well as the repo commit history.
Currently the x86_64 boot image is sitting at 161KB, the MacBook Air M1 is managing a full system build in under 0.2 seconds ! and Raspberry PI4 is turning in under 2 seconds full builds.
Thanks again to all the contributions and discussions from other third parties, thanks folks.
Regards to all
Chris
ps. here is Mr Martyn Blyss running a self configuring heterogeneous network of a MacBook M1 and a Windows 10 machine, via a usb3 copy cable.
Published by vygr almost 4 years ago
New year is here and lots of new changes. As we move into the new year we are moving forward with new features with a drive to expand the host systems and networking. Soon to allow linking of multiple hosts to form larger networks ;) MacOS gets new support with the M1 silicon platform, some record breaking system build times on the new MacBook Air laptops of under 0.2 seconds :)
Big changes to the networking with 24byte NetID mailbox IDs. NodeIDs are now assigned at boot time and are independent of the host IPC link filenames.
New vp64 bytecode format and target, Emulator mode, and installer with minimum sized snapshot.zip file.
TUI mode has no requirement for SDL libs. And now works on MacBook M1 with rewrite of the boot process.
Extensive work on new Lisp classes and libraries.
Check out the STATUS.md file for all the updates.
Regards, and thanks to all the contributors over the last year.
Chris
Published by vygr almost 4 years ago
Time for a new release, so many new things have happened thanks to increasing contributions from other members ! My thanks to all.
Join the IRC community at #[email protected] to stay up to date with all the latest issues, gossip and banter.
New class and methods system
New collections classes for emap, xmap and xset
New profiling service
New syntax highlighting lib
New VP hmap class implementation
New Windows IDE, https://github.com/PaulBlythe/Chrysalisp-IDE
New font collections, https://github.com/nuclearfall/CTFonts
And lots and lots of other tweaks and additions too numerous to mention. Check out the STATUS.md file for all the latest changes.
Best Regards
Chris
Published by vygr over 4 years ago
Latest release is packed full of new features ! Far too many to list here, so check through the STATUS.md file to see everything that has been added.
New contributions from @nuclearfall and @FrankC01 which have driven the enhancement of the system.
Hope everyone is safe during the current global situation.
Regards
Chris