Go to file
Joe Bellus 88b847852a Math & Phyics Constants (#6)
Reviewed-on: #6
2022-10-20 14:28:26 +00:00
.cargo CI/CD Pipelines (#2) 2022-10-17 02:59:09 +00:00
abacus-core Math & Phyics Constants 2022-10-19 23:47:51 -04:00
abacus-ui Math & Phyics Constants 2022-10-19 23:47:51 -04:00
.drone.yml ci-restrict (#4) 2022-10-18 02:12:41 +00:00
.gitignore initial commit 2022-10-08 16:48:17 -04:00
Cargo.lock Foundational UI (#1) 2022-10-16 18:14:55 +00:00
Cargo.toml initial commit 2022-10-08 16:48:17 -04:00
README.org Updated Road map 2022-10-17 02:02:31 -04:00
abacus_demo.png CI/CD Pipelines (#2) 2022-10-17 02:59:09 +00:00
frame Foundational UI (#1) 2022-10-16 18:14:55 +00:00



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:


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


Download and install the rust toolkit: https://rustup.rs.


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


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

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