nanoexpr 0.2.1

Fast no_std math expression parser and evaluator with zero heap allocation: formulas with variables and functions for microcontrollers, WebAssembly and C, in f32, f64, integers or calculator-exact decimals
Documentation
# Changelog

All notable changes to this project are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.1]https://github.com/AlixANNERAUD/nanoexpr/compare/v0.2.0...v0.2.1 - 2026-10-15

### Added

- add factorial ([#21]https://github.com/AlixANNERAUD/nanoexpr/pull/21)

### Miscellaneous

- fuzz the evaluator ([#19]https://github.com/AlixANNERAUD/nanoexpr/pull/19)

## [0.2.0]https://github.com/AlixANNERAUD/nanoexpr/compare/v0.1.0...v0.2.0 - 2026-10-15

### Added

- compute decimal math functions in decimal ([#12]https://github.com/AlixANNERAUD/nanoexpr/pull/12)
- add comparison and logic operators ([#10]https://github.com/AlixANNERAUD/nanoexpr/pull/10)
- compile expressions once to evaluate them many times ([#14]https://github.com/AlixANNERAUD/nanoexpr/pull/14)
- turn decimal results into fractions like a calculator ([#15]https://github.com/AlixANNERAUD/nanoexpr/pull/15)
- add an exact fraction number type ([#16]https://github.com/AlixANNERAUD/nanoexpr/pull/16)
- keep results exact when possible ([#18]https://github.com/AlixANNERAUD/nanoexpr/pull/18)

## [0.1.0]https://github.com/AlixANNERAUD/nanoexpr/releases/tag/v0.1.0 - 2026-10-15

### Added

- add the error type
- add the number trait for floats and integers
- add the context trait for variables and functions
- add a byte-based lexer
- add a single-pass evaluator
- add the math context with scientific functions
- add c bindings ([#6]https://github.com/AlixANNERAUD/nanoexpr/pull/6)
- add a decimal number type like pocket calculators use ([#7]https://github.com/AlixANNERAUD/nanoexpr/pull/7)

### Documentation

- keep the examples building without libm
- add a readme with usage, footprint and a comparison with other crates
- use the readme as crate documentation
- link the license with an absolute url
- document the lexer
- document the evaluator internals
- document the number implementations
- document the math context internals
- describe the context and error modules
- compare speed, heap use and size with other crates ([#5]https://github.com/AlixANNERAUD/nanoexpr/pull/5)
- make the readme welcoming for new users and search engines ([#9]https://github.com/AlixANNERAUD/nanoexpr/pull/9)

### Miscellaneous

- initialize the crate
- cover the evaluator syntax, errors and limits
- check that evaluation never allocates
- warn on missing documentation
- warn on undocumented private items
- upload coverage to codecov ([#3]https://github.com/AlixANNERAUD/nanoexpr/pull/3)