76 lines
3.0 KiB
Org Mode
76 lines
3.0 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.
|
||
|
|
||
|
** Road map
|
||
|
|
||
|
- +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
|
||
|
- Web/JSON support - Add HTTP requesting functionality and JSON parsing/processing to the scripting engine
|
||
|
|
||
|
|
||
|
* 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
|