abacus/README.org

85 lines
3.3 KiB
Org Mode

#+OPTIONS: toc:nil
* Abacus
A scratch pad for calcualtions.
Abacus is a lightweight scratch pad for making quick calculations. It is programatic by nature and employs a simple custom scripting language designed around calculating. The scripting lanugage is fully features and supports functions, closures, variable assignment, dataframes, sereis, primitive data types, arrays, maps, etc.
Abacus is similar to a very lightweight version of Jupyter, runs as a single binary, and using only a dozen megs of ram.
The following prebuilt binaries are provided:
- [[https://objects.5sigma.io/public/abacus/abacus-linux-amd64.tar.gz][amd64 Linux Binary]] (tar.gz)
- [[https://objects.5sigma.io/public/abacus/abacus.exe][Windows Executable]] (exe)
- [[https://objects.5sigma.io/public/abacus/abacus-amd64.deb][Linux Debian Package]] (.deb)
[[abacus_demo.png]]
For information on the UI application visit [[abacus-ui/][Abacus UI]]
For a scripting reference see [[./abacus-core#headline-2][Abacus Core]]
* Building the project from source
This project is broken into two projects:
- [[abacus-core][Abacus Core]] - Which contains the scirpt processing and calculation engine.
- [[abacus-ui][Abacus UI]] - The desktop application
** Rust
Download and install the rust toolkit: [[https://rustup.rs]].
** Linux
*** General Dependencies
This is a GTK3 application and as such the GTK3 development library needs to be installed:
#+begin_src sh
sudo apt-get install libgtk-3-dev
#+end_src
You may also need lib-shape and lib-xfixes:
#+begin_src
apt-get -y install libxcb-shape0-dev libxcb-xfixes0-dev
#+end_src
** Launching
Run and build via cargo
#+begin_src sh
cargo run
#+end_src
* Project Status
Abacus is currently in early development. It employs a custom built editor which can be slightly odd at times. A primary focus currently is improving the editing experience and adding additional scripting functionality.
** The road to 1.0
Features actively slated before a non beta release.
- +Editor basics+
- +Scripting basics - Scripting functionality provided by extending the Rhai scripting language+
- +Dataframe support - Pandas style dataframe support via the Polars framework+
- +CSV Support - Importing and processing large CSV files+
- Editor improvements - Improve editor to mirror basic VIM functionality and fix text/cursor related bugs
- Math functions - Implement common mathmatical functions and constants into the scripting language
- Dataframe performance - Reduce the performance cost of converting from the scripting engine to polars
** Beyond
Features and improvements that would be nice to implement, but are not being actively persued yet.
- Web/JSON support - Add HTTP requesting functionality and JSON parsing/processing to the scripting engine
- Function plotting implemented in scripting and output rendering
- Charts and Graphs implemented in scripting and output rendering
- User provided module importing
* Shoulders of giants
Dependencies and technology credits:
- [[https://github.com/linebender/druid][Druid UI kit]] - The UI for Abacus is built with the Druid UI kit for rust
- [[https://github.com/pola-rs/polars][Polars]] - Dataframes are processed through the Polars data frame library
- [[https://github.com/rhaiscript/rhai][Rhai]] - The scirpting language for Abacus is derrived by extending the Rhai embedded language