Show HN: val – An arbitrary precision calculator language
34 crap 19 4/17/2025, 7:51:31 PM github.com ↗
Wrote this to learn more about the `chumsky` parser combinator library, rustyline, and the `ariadne` error reporting crate.
Such a nice DX combo for writing new languages.
Still a work in progress, but I thought I'd share :)
If "arbitrary precision" is not as important to you as "high precision", a 128 bit decimal has enough precision for 99% of real-world applications.
In the previous version of this comment (where I was still reading it incorrectly) I added a fun fact, that the significand of an IEEE 754 double-precision float is only allocated 52 bits, but the "hidden bit trick" provides an extra bit of precision when the normalized form starts with 1.
> 1/10 + 2/10 == 3/10 true >
Arbitrary precision is now supported in 0.3.0 after integrating the `astro_float` (https://docs.rs/astro-float/latest/astro_float/index.html) `BigFloat` type as the base for numbers in the language.
Still working out the kinks, but its live so give it a try!
Not what I expected.
[1] https://chadnauseam.com/coding/random/calculator-app
[2] https://dl.acm.org/doi/10.1145/2911981
[3] https://dl.acm.org/doi/10.1145/3385412.3386037
But the main idea I was going for was real-time JIT evaluation with rendered errors (specifically learning / using cranelift JIT) - less to do with the calculator aspect.
I ended up choosing miette for errors.
https://github.com/jasonjmcghee/basic-treesitter-cranelift-j...
It love to have to base conversion functions, even if it's print only. Does that fit at all?
Crag is built on raku so has some neat tricks up its sleeve - you can see Crag of the Day to see some in action...
hee hee