frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Show HN: Building a web server in assembly to give my life (a lack of) meaning

https://github.com/imtomt/ymawky
156•imtomt•3h ago•61 comments

Show HN: I made a Clojure-like language in Go, boots in 7ms

https://github.com/nooga/let-go
134•marcingas•12h ago•39 comments

Show HN: Rust but Lisp

https://github.com/ThatXliner/rust-but-lisp
114•thatxliner•8h ago•61 comments

Show HN: Countries where you can leave your MacBook at a random coffee shop

https://vouchatlas.com
12•canergl•6h ago•11 comments

Show HN: Modafinil - Let agents continue running while MacBook lid is closed

https://github.com/narcotic-sh/modafinil
4•hamza_q_•3h ago•6 comments

Show HN: Mochi.js: bun-native high-fidelity browser automation library

https://mochijs.com/
40•ccheshirecat•16h ago•19 comments

Show HN: Remind – schedule Claude Code on your Mac

https://olliewagner.com/remind
3•olliewagner•4h ago•0 comments

Show HN: Create flashcards with Space CLI

https://getspace.app/cli
18•friebetill•15h ago•6 comments

Show HN: Free tool to mark points and polygon regions

https://tack.pics
19•magikMaker•3d ago•6 comments

Show HN: TRUST – Coding Rust like it's 1989

https://github.com/wojtczyk/trust
161•wojtczyk•3d ago•87 comments

Show HN: Git for AI Agents

https://github.com/regent-vcs/re_gent
114•doshay•1d ago•65 comments

Show HN: Free OSS transcription app I made and found it's faster than wispr flow

https://mumbli.app/
4•fireharp•8h ago•1 comments

Show HN: GETadb.com – every GET request creates a DB

https://www.getadb.com/
38•nezaj•1d ago•42 comments

Show HN: Chuchu, an Android SSH client built on libghostty

https://github.com/jossephus/chuchu
6•jossephus01•15h ago•0 comments

Show HN: CADara – I made an open-source in-browser CAD

https://cadara.app
32•ttouch•1d ago•7 comments

Show HN: A search engine for deleted YouTube videos (1.5B+ indexed since 2005)

https://tube.archivarix.net/
10•archivarix•15h ago•2 comments

Show HN: Tilde.run – Agent sandbox with a transactional, versioned filesystem

https://tilde.run/
199•ozkatz•3d ago•132 comments

Show HN: Airbyte Agents – context for agents across multiple data sources

150•mtricot•4d ago•47 comments

Show HN: AirScore – Daily air-quality emails synthesizing EPA, NOAA, and pollen

https://getairscore.com
2•JHARDIMAN•13h ago•0 comments

Show HN: My AI agents bully each other to prevent context drift

https://wuphf.team
4•najmuzzaman•13h ago•0 comments

Show HN: Agent-skills-eval – Test whether Agent Skills improve outputs

https://github.com/darkrishabh/agent-skills-eval
76•darkrishabh•3d ago•36 comments

Show HN: I built an open-source email builder, alternative to Beefree/Unlayer

https://play.templatical.com
160•oahmadov•3d ago•48 comments

Show HN: Real-workload SQLite benchmarks on Hetzner's cheapest VPS

https://s13k.dev/blog/real-workload-sqlite-bench-on-5-dollar-vps/
6•s13k•15h ago•0 comments

Show HN: JSLike, a CSP-Safe Interpreter for JS, TS, JSX, TSX in JS

https://github.com/artpar/jslike
6•artpar•15h ago•2 comments

Show HN: Stage CLI – An easier way of reading your AI generated changes locally

https://github.com/ReviewStage/stage-cli
44•cpan22•2d ago•31 comments

Show HN: Local AI search for your video library (local, open source)

https://edit-mind.com
2•iliashad•18h ago•1 comments

Show HN: nocal is a calendar that turns your week into a workspace

https://nocal.app/
7•bcmuse•18h ago•1 comments

Show HN: Concord – Feature rich TUI for discord

https://github.com/chojs23/concord
7•jpellamo•18h ago•4 comments

Show HN: Hallucinopedia

http://halupedia.com/
304•bstrama•3d ago•266 comments

Show HN: PHP-fts – Full-text search engine in pure PHP, no extensions

https://github.com/olivier-ls/php-fts
87•asmodios•3d ago•23 comments
Open in hackernews

Show HN: Rust but Lisp

https://github.com/ThatXliner/rust-but-lisp
114•thatxliner•8h ago

Comments

FrankWilhoit•8h ago
And for why?
macmac•8h ago
To get proper macros.
fao_•7h ago
Scheme already has hygenic macros, I don't get why you'd vibecode a worse (less battle tested, llm-generated) replacement. I'm not sure why this hit the front-page, to be honest, because it doesn't seem noteworthy or interesting (Anyone and their mother can vibecode something like this in eight hours)
wk_end•7h ago
Scheme doesn't have Rust semantics, though?
zem•6h ago
this is not a replacement for scheme, it's simply an alternative syntax for rust
xigoi•18m ago
Because Rust syntax is ugly and overcomplicated.
GalaxyNova•7h ago
It seems like this is more like writing Rust in an s-expression syntax instead of having a proper lisp dialect that compiles to Rust, which is cool I guess but not very interesting.

It's quite weird-looking for someone who's done any amount of lisp programming.

shawn_w•6h ago
A let that defines variables that have a lifetime beyond the scope of the expression? Yeah, that's really unusual. And it's not even the oddest looking thing from the first example block of code.
noosphr•6h ago
>Rust semantics with LISP syntax. A transparent s-expression frontend that compiles directly to Rust — no runtime, no GC

The first paragraph says literally that.

monocasa•6h ago
Yeah, it sort of reminds me of the microcode assembly of a few of the lisp machines, that, while in s-expressions were also clearly not lisp themselves. But could be an interesting target for some lisp macros.
hawkice•7h ago
I think some comments are missing the upside of it being precisely Rust, without any new semantics. If you want lisp that compiles to machine code, Common Lisp can get reasonably efficient. The purpose of bringing Rust into it is to surface Rust-specific semantics -- which many people quite like!
stuaxo•7h ago
"no runtime, no GC, just" I am BEGGING every project to not have this LLMism in their docs.

It reads as No X no Y just slop to me every time.

andrepd•6h ago
It's completely nonsensical too. Why would a parser for an alternative syntax introduce a GC?!
vermilingua•6h ago
Claims to have all the syntax covered, but not a single example of specifying lifetimes or the turbofish, some of the trickiest rust syntax
andrepd•6h ago
It's a vibecoded parser...
gleenn•4h ago
Technically it's a transpiler.
kibwen•6h ago
If you already have the ability to express the grammar productions in Rust that allow for optionally-specified types (e.g. variable declaration), then you have the ability to express lifetimes and the turbofish (which is just a curious way to call a generic function with a specific type parameter). The only weird thing would be that Lisp uses the apostrophe character for something very different than Rust, but you could just pick any other way to denote lifetimes.
vermilingua•6h ago
Could!

> Everything Rust has … expressed as s-expressions. No semantic gap.

kccqzy•4h ago
The HRTB is probably the trickiest syntax for specifying lifetimes. It looks like `for<'a> F: Fn(&'a (u8, u16)) -> &'a u8`.
stdatomic•4h ago
Can you translate this for those of us who don't speak rust?
Xirdus•4h ago
Type F must be a function that's generic over any possible lifetime 'a, with a single argument that's a reference with lifetime 'a to a tuple of two numbers, and returns a reference with the same lifetime 'a to an 8-bit number.

The full code is usually something like:

fn foo<F>(callback: F) where for<'a> F: ...

Which is a generic function foo that takes the argument of type F, where F must be...

thatxliner•3h ago
You can also drop into direct Rust with the (rust "...") macro if I forgot to implement anything
jaggederest•6h ago
Unfortunately, given the clear LLM basis of this project, s-expressions aren't a great choice. I've found coding agents struggle really hard with s-expression parentheses matching.

Much better to give them something more M-expr styled, I think a grammar that is LL(1) is probably helpful in that regard.

Basically the more you can piggyback on the training data depth for algol-style and pythonic languages the better.

dleslie•5h ago
Opus 4.6 handles elisp just fine. But I suppose YMMV.
2ndorderthought•5h ago
Why are we even spending time on this. It's vibe coded slop. The creator probably never even ran it before it got to HN
gleenn•5h ago
That has definitely not been my experience as of late. I have produced multiple, largeish Clojure projects with AI that have been perfectly formatted and functional. Perhaps you were using an older or possibly smaller model? I am admittedly using Claude with higher end models and mid to high effort but it has been working great for months for me at this point.
jaggederest•3h ago
Nope, but to be fair when you're working on your own novel S-exprs you don't have LSPs to guide the coding agent. I imagine that it works a lot better in the context of a known and understood language environment like Clojure, CL, scheme, etc. The other option would be to write an LSP in a non-S-expr language to ensure that no turn can end with mismatched parens, for example.
thatxliner•2h ago
If anyone is curious, I've been making this using DeepSeek v4 Flash with Claude Code as the harness
amelius•6h ago
This is probably what Rust's internal ASTs look like. But why would you want to input programs as ASTs?
physPop•6h ago
so you can do the transformations (see the rlisp macro section)
amelius•5h ago
Yes, but you could do the same by transforming Rust's ASTs. The only downside is that your input format is different from the format you are transforming. But the upside is that readability is much improved, which matters because code is typically read far more often than it is written.
ecto•5h ago
Readers may enjoy my lisp, Loon, which takes heavy inspiration from Rust https://loonlang.com/guide/ownership
kibwen•3h ago
Agreed, a Lisp built around the concept of ownership is much more interesting than just a way to write Rust via S-expressions.
imachine1980_•3h ago
How does ownership work within the Lisp tree structure?, What is the difference between ownership on this setting and ARC?
ecto•2h ago
ARC refcounts everything (many owners) whereas Loon refcounts only inside immutable shared tree nodes (one owner per handle)
akch•3h ago
That page is beautiful! What ssg / theme are you using to build it?
ecto•2h ago
Thanks :) Check out the code - it's Loon! https://github.com/ecto/loon/blob/main/web/src/pages/guide/o...
helenite•1h ago
The website seems to have some bugs on mobile, seen on Chrome 147.0.7727.137

- Cannot horizontally scroll the code snippets on homepage when it overflows. The scroll bars appear but swiping the snippet does nothing. - Footer links are unresponsive (loon, GitHub, MIT Licence links) - In the changelog page, scrolling makes the hamburger menu hide release dates behind it - Hamburger close chevron looks misaligned (not sure if this was a deliberate choice)

thatxliner•2h ago
Honestly, that's very cool

That was basically my intent with this project, but I took the laziest way to get there lol

quotemstr•1h ago
I like the ubiquitous type inference. It reminds me a bit of ELSA for Emacs Lisp: https://github.com/emacs-elsa/Elsa. In particular, type aware macros have been on my wishlist forever: there's no good reason I shouldn't be able to write, e.g. an elisp or CL/SBCL compiler-macro that specializes an operation based on its inferred type. In normal lisps, it's hard to get even the declared types.

That said, I wish that part of Loon were less coupled to the allocation model though. What made you opt for mandatory manual memory management in an otherwise high-level language? And effects?

There are two things common in language design that, honestly, strike me as unnecessary:

1. manual allocation and lifetime stacking, and

2. algebraic effects.

On 1: I think we often conflate the benefits of Rust-style mutability-xor-aliased reference discipline with the benefits of using literal malloc and free. You can achieve the former without necessitating the latter, and I think it leads to a nicer language experience.

It's not just true that GC "comes with latency spikes, higher memory usage, and unpredictable pauses" in any meaningful way with modern implementations of the concept. If anything, it leads to more consistent latency (no synchronous Drop of huge trees at unpredictable times) and better memory use (because good GCs use compressed pointers and compaction).

On 2: I get non-algebraic effects for delimited continuations. But lately I've seen people using non-flow-magical effects for everything. If you need to talk to a database, pick a database interface and pass an object implementing the interface to the code that needs it. Effects do basically the same thing, but implicitly.

gwerbin•30m ago
I always saw algebraic effects as a more-ergonomic alternative to functor/applicative/monad for managing I/O and otherwise impure code. If you aren't particularly concerned with that level of purity then yeah it's "just" an indirect way to write an interface.
OhMeadhbh•5h ago
How do you change the syntax to eliminate reverse compatibility? I guess you could change the names of most key functions between releases. But to be compatible with rust you would need to make breaking changes every release.
nxobject•5h ago
"Lust", or "Risp"?
zephen•4h ago
Nah.

It's sort of, but not quite, like "El jefe"

"L rut piss"

slopinthebag•5h ago
How is pure unbridled AI slop like this making the front page? Voting rings?

I don't even feel bad saying this because clearly OP is just the front for Claude here.

gjvc•5h ago
you ain't seen nothin' yet.
Syzygies•3h ago
https://www.youtube.com/watch?v=4cia_v4vxfE
moron4hire•5h ago
I don't understand why this had to be LLM generated. S-expression syntax parsers are not hard to write. That's rather much the point of S-expressions.
Maxatar•4h ago
>S-expression syntax parsers are not hard to write.

I'm not sure I quite understand the point of your comment.

Are you implying that LLMs should be used for very hard to write code? I feel like the best use of LLMs is to automate the easy stuff so that I can focus on the hard to write stuff.

skulk•4h ago
So if I wanted to actually use this and I write some rust-but-lisp code and there's a compile error, will it show me a nice error message with an arrow pointing to where the error happened in my lisp code?

Can I use the amazing `rust-analyzer` LSP to get cool IDE features?

I suspect the answer is no, but these might be good further prompts to use.

thatxliner•2h ago
Good idea! I'm adding error messages + spans ala ariadne now
eiiot•4h ago
> compiles directly to Rust — no runtime, no GC, just (s-expr → .rs → binary).

Can we please write our own READMEs before posting to HN?

stevefan1999•4h ago
Greenspun's tenth rule of programming is an aphorism in computer programming and especially programming language circles that states:[1][2]

Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

Maybe we should one day include Golang or Rust to it

https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule

kibwen•4h ago
Greenspun's tenth rule was formulated in a time before things like first-class functions were commonplace in industrial languages. Rust supports not just functional programming idioms but outright Scheme-style macros, it's out of scope for Greenspun's.
thatxliner•3h ago
For everyone who is shaming on the project for "not implementing enough," then you can definitely help me with it.

For everyone who is shaming on the project for being "LLM slop," sure but that's the reason why something like this can exist in the first place. The point isn't to be a finished, production-ready product. The point is to be an interesting work, and just a sly bit silly

chrisweekly•2h ago
Should be named "Rutht"
NooneAtAll3•2h ago
does there exist something that can do the opposite?

some pre-processor that "compiles into rust" from less awful syntax?

zareith•1h ago
Anyone working on something similar that compiles to go?