ChrysaLisp

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

GPL-2.0 License

Stars
1.6K
Committers
13

Bot releases are hidden (Show)

ChrysaLisp - Wood Dragon Latest Release

Published by vygr 8 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

ChrysaLisp - Top Trumps

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

ChrysaLisp - Tribute to the Tao

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

ChrysaLisp - Bonfire Toffee

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

ChrysaLisp - Under Construction

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

ChrysaLisp - Regular Features

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

ChrysaLisp - Nodle Soup

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

ChrysaLisp - Slim Shady

Published by vygr over 1 year 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

ChrysaLisp - FrameBuffer Fun

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.

  • 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

ChrysaLisp - Wicker Man

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

ChrysaLisp - RV64 gogo

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

ChrysaLisp - New Year Cheer

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

ChrysaLisp - Winter Wonder

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

ChrysaLisp - Autumn Haze

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

ChrysaLisp - Summer Rain

Published by vygr about 3 years ago

This release concentrates on documentation and polishing existing API's and features.

  • New extendable native Editor application is now in great shape, more extensions to come.
  • New implementation of the GUI Terminal application with cut/paste support.
  • Rewrite of the source Viewer application with cut/paste support and reuse of Editor action functions.
  • New documents on MACROS and CLASSES.
  • The GUI is finally moving out of experimental phase and has received documentation on EVENT_LOOPS, EVENT_DISPATCH and the UI_WIDGET system.
  • New Template application to aid easy creation of new applications based on the latest frameworks.
  • Improved Real number format sin/cos/sqrt functions.
  • Textfield widgets support cut/paste and full editing.

Lots more polishing and additions, see the STATUS doc and Github commits for details.

Enjoy, regards to all

Chris

ChrysaLisp - Summer Breeze

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

ChrysaLisp - Spring Snow

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.
Hetro_Network

ChrysaLisp - Lockdown Revolutions

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

ChrysaLisp - Lockdown Reloaded

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

ChrysaLisp - Lockdown Loaded

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