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•8mo 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•8mo 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•8mo ago
> sqrt(10^100)-1 -> 100000000000000000000000000000000000000000000000000

Not what I expected.

emaro•8mo ago
In the readme it says it uses double precision for numbers. Also not quite whet I expected from 'arbitrary precision'.
chriswarbo•8mo 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•8mo 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•8mo 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•8mo ago
the addition of astro_float fixed this.
primitivesuave•8mo 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•8mo 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•8mo 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•8mo ago
Do you mean, the first returns false and the second returns true?
primitivesuave•8mo 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•8mo ago
Rewrite it like so

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

I_complete_me•8mo ago
I wish you well. And I clicked you a star on github. Keep up the good work.
crap•8mo 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•8mo ago
This is cool.

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

lttlrck•8mo ago
and different input base notations, 0x, o, 0b etc
crap•8mo ago
This definitely fits, base conversion is on the roadmap!
librasteve•8mo 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: SMTP Tunnel – A SOCKS5 proxy disguised as email traffic to bypass DPI

https://github.com/x011/smtp-tunnel-proxy
55•lobito25•9h ago•18 comments

Show HN: TCP chat server written in C# and .NET 9, used in the terminal

https://github.com/Sieep-Coding/simple-chat-csharp
14•sieep•4d ago•2 comments

Show HN: A RAM-only, end-to-end encrypted P2P terminal chat in Python

https://github.com/diorwave/cmd-chat
2•isanoguchi•45m ago•0 comments

Show HN: VaultSandbox – Test your real MailGun/SES/etc. integration

https://vaultsandbox.com/
30•vaultsandbox•20h ago•2 comments

Show HN: Make audio loops online

https://makeloops.online/
37•bilalba•1d ago•9 comments

Show HN: Mantic.sh – A structural code search engine for AI agents

https://github.com/marcoaapfortes/Mantic.sh
63•marcoaapfortes•20h ago•24 comments

Show HN: 48-digit prime numbers every git commit

https://textonly.github.io/git-prime/
57•keepamovin•5d ago•43 comments

Show HN: Stash – Sync Markdown Files with Apple Notes via CLI

https://github.com/shakedlokits/stash
64•shuka•17h ago•20 comments

Show HN: Prism.Tools – Free and privacy-focused developer utilities

https://blgardner.github.io/prism.tools/
354•BLGardner•21h ago•98 comments

Show HN: Foundertrace – chain of YC startups founded by its employees

https://foundertrace.com/
38•loondri•3d ago•10 comments

Show HN: Jax-JS, array library in JavaScript targeting WebGPU

https://ss.ekzhang.com/p/jax-js-an-ml-library-for-the-web
78•ekzhang•15h ago•21 comments

Show HN: llmgame.ai – The Wikipedia Game but with LLMs

https://www.llmgame.ai
23•jmcallister•1d ago•19 comments

Show HN: GPU Cuckoo Filter – faster queries than Blocked Bloom, with deletion

https://github.com/tdortman/cuckoo-filter
27•tdortman•11h ago•2 comments

Show HN: 25 years of house prices in England and Wales

https://housepricedashboard.co.uk/
12•rowanajmarshall•11h ago•6 comments

Show HN: Tailsnitch – A security auditor for Tailscale

https://github.com/Adversis/tailsnitch
268•thesubtlety•1d ago•28 comments

Show HN: Symbolic Circuit Distillation: prove program to LLM circuit equivalence

https://github.com/neelsomani/symbolic-circuit-distillation
16•nsomani•13h ago•2 comments

Show HN: DoNotNotify – Log and intelligently block notifications on Android

https://donotnotify.com/
335•awaaz•1d ago•158 comments

Show HN: Tera.fm – A calm, radio-style way to listen to today's tech news

https://tera.fm
3•digi_wares•4h ago•1 comments

Show HN: DDL to Data – Generate realistic test data from SQL schemas

51•ddltodata•21h ago•26 comments

Show HN: I built "Google" for searching Shadcn blocks on the web

https://shoogle.dev/
18•ali-dev•5d ago•3 comments

Show HN: Open-source AI workflows with read-only auth scopes

https://github.com/seer-engg/seer
11•akshay326•4d ago•0 comments

Show HN: Finding similarities in New Yorker covers

https://shoplurker.com/labs/newyorker-covers/
17•tkp-415•13h ago•7 comments

Show HN: I built a tool to create AI agents that live in iMessage

https://tryflux.ai/
7•danielsdk•3d ago•4 comments

Show HN: Server-rendered multiplayer games with Lua (no client code)

https://cleoselene.com/
78•brunovcosta•2d ago•58 comments

Show HN: Funboxie – Free printables and coloring pages for kids

https://www.funboxie.com
2•chynnahe•7h ago•1 comments

Show HN: ccrider - Search and Resume Your Claude Code Sessions – TUI / MCP / CLI

https://github.com/neilberkman/ccrider
16•nberkman•19h ago•4 comments

Show HN: Sidestream – an AI chat app with a side of insight

https://github.com/ericbrandon/sidestream
5•EricBrandon•13h ago•2 comments

Show HN: A simulator for engineers transitioning from IC to management

https://apmcommunication.com/scenario/backchannel-vp
72•pingananth•1d ago•93 comments

Show HN: I replaced Beads with a faster, simpler Markdown-based task tracker

https://github.com/wedow/ticket
80•wild_egg•2d ago•48 comments

Show HN: WOLS – Open standard for mushroom cultivation tracking

https://github.com/wemush/open-standard
39•mbeacom•1d ago•2 comments