Roadmap
Milestone: Core foundation (v0.1 -- v0.4) -- complete
- Math engine: Q31.32 fixed-point with CORDIC, Taylor, Newton-Raphson
- Lexer: expression string to typed token stream (max 32 tokens)
- Parser: recursive-descent PEMDAS with implicit multiplication, flat-arena AST (max 64 nodes)
- Evaluator: full operator/function dispatch, sum/int loop aggregates
- Complex numbers: arithmetic + all transcendental functions
- Variable storage: Ans + 26 registers A-Z, copy-on-read for loop shadowing
- Statistical distributions: log-gamma, log-factorial, binomial, Poisson, chi-squared CDF
- Boot layer: vector table, .bss/.data init, Reset handler
- HAL: UART, I2C, GPIO, clock, OLED driver (SSD0303)
- Runtime: event loop, state machine, ANSI escape sequence parser
- UI: 5x7 bitmap font, formula renderer, Sigma/Integral glyphs
- nthroot with proper domain checking
- natural_log range reduction fix for sub-ppm accuracy
- Trailing-zero stripping in formatted output
- Case-sensitive identifiers: e is Euler's constant, E is register E
- sto(value, var) -- store value into register A-Z
- Degrees mode (Ctrl+D toggle) with angle conversion rules
- Scrollable results on 96x16 OLED
- Cursor-based input editing
- Host-side unit test suite (255 tests)
- CI pipeline: host-side tests on every PR
- Dedicated documentation site (Docusaurus, GitHub Pages)
- Memory optimisation: Flash 87% to 77%, stack headroom 40 B
- zero-unsafe rule enforced in math/runtime/ui
Short-term
Testing infrastructure
- Test-vector generator script (Python Decimal for exact reference values)
- CI: firmware build check on every PR
- Property-based tests for arithmetic roundtrips
- Coverage reporting
Math engine hardening
- Fractional display mode (
1/3instead of0.333333) - Overflow detection in more paths (especially complex mul/div)
- Configurable output precision (3-9 decimal places)
- floor/ceil/round functions for user expressions
Developer experience
-
.vscode/configuration in repository -
cargo runwrapper that starts QEMU automatically - GDB init script for quick debugging setup
- Release build CI artifact
Medium-term
Port to modern hardware
The math engine and runtime are already hardware-independent. Candidate targets:
| Target | Core | Flash | RAM | Price |
|---|---|---|---|---|
| RP2040 (Pi Pico) | Cortex-M0+ | 2 MB | 264 KB | $4 |
| STM32F411 | Cortex-M4F | 512 KB | 128 KB | $8 |
| STM32G431 | Cortex-M4F | 128 KB | 32 KB | $5 |
| ESP32-C3 | RISC-V | 4 MB | 400 KB | $3 |
| ATSAMD51 | Cortex-M4F | 512 KB | 192 KB | $10 |
For each port: rewrite hal/, update boot.rs + link.x. Zero numcore/
changes.
Reference hardware design
- Open-source KiCad PCB (mechanical keyswitches, OLED, USB-C)
- 3D-printable enclosure
- BOM targeting $20-30
- Cherry MX / Kailh Choc switch support
- Battery charging circuit (LiPo)
Graphing mode
- Function plotting on OLED
- Pan/zoom with register-based viewport
- Multiple simultaneous plots (up to 3)
- Table of values
- Dynamic y-axis scaling
Matrix operations
- Matrix type (fixed-size buffer, max 4x4)
- Addition, multiplication, transpose
- Determinant, inverse
- Solve linear systems (2x2, 3x3)
Standalone math crate
- Extract
math/asnumcore-mathon crates.io - Platform-agnostic (std and no_std)
- Python/JS bindings for cross-validation
Long-term
Advanced calculator modes
- Scientific mode: unit conversions, physical constants
- Programming mode: HEX/DEC/OCT/BIN, bitwise ops
- Statistics mode: data entry, linear regression
- CAS basics: symbolic differentiation/integration, simplification
Hardware milestones
- CE/FCC-certified reference design
- USB virtual serial port with firmware updates
- SPI flash for persistent storage across reboots
- Low-power mode for battery operation
Ecosystem
- Curriculum alignment (IB, A-level, AP, SAT)
- Open source textbook companion
- Web-based WASM simulator
- Community port catalogue
- Internationalisation (i18n)
Community
- Contribution guide for new function requests
- Community port catalogue
- Web-based WASM simulator
- Internationalisation (i18n)
- SPI flash image builder
Non-goals
- Touchscreen UI -- hurts battery life, increases BOM cost, reduces tactility
- Full CAS like Mathematica -- calculator-grade scope only; no symbolic heavy lifting
- Proprietary lock-in -- open-source hardware (CERN-OHL-S license)
- Mobile app -- this is a dedicated hardware project
- Wireless exam cheating vectors -- no Wi-Fi/BT in exam modes
- Multi-line expression input -- single-line with cursor editing is sufficient for calculator scope
- Graphical function plotting on host -- target is embedded OLED only