frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: val – An arbitrary precision calculator language

https://github.com/terror/val
34•crap•7mo ago
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 :)

Comments

jasonjmcghee•7mo ago
Hey nice! We have similar interests. I built something similar, but with way less calculator functionality than you did :D

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

occamatl•7mo ago
> sqrt(10^100)-1 -> 100000000000000000000000000000000000000000000000000

Not what I expected.

emaro•7mo ago
In the readme it says it uses double precision for numbers. Also not quite whet I expected from 'arbitrary precision'.
chriswarbo•7mo ago
Hmm, yeah. It cites `bc` as prior art, which is quite widely used; but another interesting arbitrary-precision calculator is spigot https://www.chiark.greenend.org.uk/~sgtatham/spigot/spigot.h...
mananaysiempre•7mo ago
Also the AOSP calculator, of course[1,2,3].

[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

emmelaich•7mo ago
Ivy does big numbers (not arbitrary) but does rationals too. It's an APL subset.

    0.1 + 0.2
    3/10
https://github.com/robpike/ivy
lttlrck•7mo ago
the addition of astro_float fixed this.
primitivesuave•7mo ago
The UI is awesome, amazing work! However, arbitrary precision implies that there is no fixed upper limit to the number of digits - simple tests like `0.1 + 0.2 == 0.3` and `2^53 == 2^53 + 1` (both produce "false") indicates you're still using IEEE 754 double precision floats.

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.

crap•7mo ago
Thanks for checking it out! Should have been more clear that this is actively being worked on. This is ultimately the goal, and I'm currently working on integrating `astro_float` as the base for numbers.
primitivesuave•7mo ago
That is awesome, I look forward to following the project and hopefully contributing! I became a better Rust programmer from reading your code :)
jdhwosnhw•7mo ago
Do you mean, the first returns false and the second returns true?
primitivesuave•7mo ago
Ah you're right, thank you for pointing it out!

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.

johannesrexx•7mo ago
Rewrite it like so

> 1/10 + 2/10 == 3/10 true >

I_complete_me•7mo ago
I wish you well. And I clicked you a star on github. Keep up the good work.
crap•7mo ago
Thanks to everyone who gave feedback!

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!

lttlrck•7mo ago
This is cool.

It love to have to base conversion functions, even if it's print only. Does that fit at all?

lttlrck•7mo ago
and different input base notations, 0x, o, 0b etc
crap•7mo ago
This definitely fits, base conversion is on the roadmap!
librasteve•7mo ago
very cool, welcome to the small club of CLI calculator authors! before I read this I knew of frink and crag (https://raku.land/zef:librasteve/App::Crag since you ask)

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

  crag '0.1+0.2=0.2'   #True (arbitrary precision)
  crag '₃₆123.45'      #3F.G77777  (base 36)
  crag 'e ** (i * π) =~= -1'   #True  (math symbols, complex numbers)
  crag '0rMCMXLIV'     #1944 (Roman numerals)
  crag '^<௪௨ mph>'     #42mph  (Unicode and units)
hee hee

Show HN: Kraa – Writing App for Everything

https://kraa.io/about
71•levmiseri•1d ago•42 comments

Show HN: Pbnj – A minimal, self-hosted pastebin you can deploy in 60 seconds

https://pbnj.sh/
29•bhavnicksm•4h ago•7 comments

Show HN: Tacopy – Tail Call Optimization for Python

https://github.com/raaidrt/tacopy
80•raaid-rt•5d ago•38 comments

Show HN: Massage therapy meets online learning– an app to help maintain wellness

2•MassageByRosa•1h ago•0 comments

Show HN: I was reintroduced to computers: Raspberry Pi

https://airoboticist.blog/2025/12/01/i-was-reintroduced-to-computers-raspberry-pi/
72•observer2022•3d ago•28 comments

Show HN: Onlyrecipe 2.0 – I added all features HN requested – 4 years later

https://onlyrecipeapp.com/?url=https://www.allrecipes.com/turkish-pasta-recipe-8754903
175•AwkwardPanda•1d ago•143 comments

Show HN: ChatGPT App That Solves LLM Randomness Problem No One Talks About

https://random-app.keenethics-labs.com/
6•IvanGoncharov•2h ago•1 comments

Show HN: Walrus – a Kafka alternative written in Rust

https://github.com/nubskr/walrus
142•janicerk•4d ago•42 comments

Show HN: MTXT – Music Text Format

https://github.com/Daninet/mtxt
112•daninet•5d ago•36 comments

Show HN: I built a Python library for central bank economic announcement data

https://github.com/fxmacrodata/fxmacrodata
2•roberttidball•5h ago•0 comments

Show HN: I built a dashboard to compare mortgage rates across 120 credit unions

https://finfam.app/blog/credit-union-mortgages
379•mhashemi•1d ago•126 comments

Show HN: Fresh – A new terminal editor built in Rust

https://sinelaw.github.io/fresh/
175•_sinelaw_•2d ago•138 comments

Show HN: Cbor.app – CBOR encoder/decoder with hex visualization

https://cbor.app/
2•0xcb0•7h ago•0 comments

Show HN: Travel ESIM Comparison

https://esimguide.com
2•iSloth•8h ago•0 comments

Show HN: Vibe Commander

https://github.com/AvitalTamir/vibecommander
10•fatliverfreddy•14h ago•0 comments

Show HN: Microlandia, a brutally honest city builder

https://microlandia.city
133•phaser•1d ago•23 comments

Show HN: A Minimal Monthly Task Planner (printable, offline, no signup)

https://printcalendar.top/
92•defcc•1d ago•32 comments

Show HN: Chess on a Donut/Torus and Deep-Dive

https://mchess.io/donut
24•mannymakes•6d ago•13 comments

Show HN: Mirror_bridge – C++ Reflection powered Python binding generation

https://github.com/FranciscoThiesen/mirror_bridge
27•fthiesen•1d ago•7 comments

Show HN: RAG in 3 Lines of Python

https://pypi.org/project/piragi/
32•init0•1d ago•5 comments

Show HN: Who is hiring" search tool with chat / other features

https://nthesis.ai/public/hn-who-is-hiring
4•osigurdson•12h ago•2 comments

Show HN: Flooder – Making Persistent Homology Practical for Industrial Use Cases

https://plus-rkwitt.github.io/flooder/
6•elektm•15h ago•2 comments

Show HN: FastLanes based integer compression in Zig

https://github.com/steelcake/zint
12•ozgrakkurt•4d ago•7 comments

Show HN: Marmot – Single-binary data catalog (no Kafka, no Elasticsearch)

https://github.com/marmotdata/marmot
98•charlie-haley•3d ago•21 comments

Show HN: Identifiy test coverage gaps in your Go projects

https://github.com/LeanerCloud/testvet
11•alien_•4d ago•2 comments

Show HN: Playwright for Windows Computer Use

https://www.useterminator.com
4•louis030195•19h ago•0 comments

Show HN: I analyzed 8k near-death experiences with AI and made them listenable

https://www.noeticmap.com/
22•mikias•1d ago•10 comments

Show HN: Boing

https://boing.greg.technology/
779•gregsadetsky•5d ago•146 comments

Show HN: Claude-ping – a WhatsApp bridge for Claude Code

https://github.com/conbon/claude-ping
2•conbon_•20h ago•0 comments

Show HN: I Built an UI Library that lets you create beautiful UIs in Minutes

https://ogblocks.dev/
2•karanzkk•21h ago•0 comments