|1 month ago|
|.cargo||1 month ago|
|abacus-core||1 month ago|
|abacus-ui||1 month ago|
|.drone.yml||1 month ago|
|.gitignore||2 months ago|
|Cargo.lock||1 month ago|
|Cargo.toml||2 months ago|
|README.org||1 month ago|
|abacus_demo.png||1 month ago|
|frame||1 month ago|
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:
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
Download and install the rust toolkit: https://rustup.rs.
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
Run and build via cargo
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
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