Joe Bellus
88b847852a
Reviewed-on: #6 |
||
---|---|---|
.cargo | ||
abacus-core | ||
abacus-ui | ||
.drone.yml | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.org | ||
abacus_demo.png | ||
frame |
README.org
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:
- amd64 Linux Binary (tar.gz)
- Windows Executable (exe)
- Linux Debian Package (.deb)
For information on the UI application visit Abacus UI For a scripting reference see Abacus Core
Building the project from source
This project is broken into two projects:
- Abacus Core - Which contains the scirpt processing and calculation engine.
- 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:
sudo apt-get install libgtk-3-dev
You may also need lib-shape and lib-xfixes:
apt-get -y install libxcb-shape0-dev libxcb-xfixes0-dev
Launching
Run and build via cargo
cargo run
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 basicsScripting basics - Scripting functionality provided by extending the Rhai scripting languageDataframe support - Pandas style dataframe support via the Polars frameworkCSV 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:
- Druid UI kit - The UI for Abacus is built with the Druid UI kit for rust
- Polars - Dataframes are processed through the Polars data frame library
- Rhai - The scirpting language for Abacus is derrived by extending the Rhai embedded language