frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

DoNotNotify is now Open Source

https://donotnotify.com/opensource.html
198•awaaz•4h ago•33 comments

Dave Farber has passed away

https://lists.nanog.org/archives/list/nanog@lists.nanog.org/thread/TSNPJVFH4DKLINIKSMRIIVNHDG5XKJCM/
9•vitplister•23m ago•2 comments

Matchlock: Linux-based sandboxing for AI agents

https://github.com/jingkaihe/matchlock
38•jingkai_he•3h ago•5 comments

Show HN: LocalGPT – A local-first AI assistant in Rust with persistent memory

https://github.com/localgpt-app/localgpt
245•yi_wang•10h ago•119 comments

Reverse Engineering Raiders of the Lost Ark for the Atari 2600

https://github.com/joshuanwalker/Raiders2600
14•pacod•2h ago•1 comments

Haskell for all: Beyond agentic coding

https://haskellforall.com/2026/02/beyond-agentic-coding
144•RebelPotato•10h ago•43 comments

SectorC: A C Compiler in 512 bytes (2023)

https://xorvoid.com/sectorc.html
323•valyala•18h ago•65 comments

LLMs as the new high level language

https://federicopereiro.com/llm-high/
136•swah•5d ago•245 comments

The Architecture of Open Source Applications (Volume 1) Berkeley DB

https://aosabook.org/en/v1/bdb.html
45•grep_it•5d ago•8 comments

Modern and Antique Technologies Reveal a Dynamic Cosmos

https://www.quantamagazine.org/how-modern-and-antique-technologies-reveal-a-dynamic-cosmos-20260202/
11•sohkamyung•5d ago•0 comments

Software factories and the agentic moment

https://factory.strongdm.ai/
242•mellosouls•20h ago•400 comments

(AI) Slop Terrifies Me

https://ezhik.jp/ai-slop-terrifies-me/
21•Ezhik•1h ago•8 comments

Rabbit Ear "Origami": programmable origami in the browser (JS)

https://rabbitear.org/book/origami.html
12•molszanski•3d ago•3 comments

Speed up responses with fast mode

https://code.claude.com/docs/en/fast-mode
195•surprisetalk•17h ago•200 comments

Hoot: Scheme on WebAssembly

https://www.spritely.institute/hoot/
197•AlexeyBrin•23h ago•36 comments

uLauncher

https://github.com/jrpie/launcher
40•dtj1123•5d ago•10 comments

Stories from 25 Years of Software Development

https://susam.net/twenty-five-years-of-computing.html
213•vinhnx•21h ago•24 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
376•jesperordrup•1d ago•112 comments

Brookhaven Lab's RHIC concludes 25-year run with final collisions

https://www.hpcwire.com/off-the-wire/brookhaven-labs-rhic-concludes-25-year-run-with-final-collis...
85•gnufx•16h ago•66 comments

LineageOS 23.2

https://lineageos.org/Changelog-31/
85•pentagrama•6h ago•22 comments

The Legacy of Daniel Kahneman: A Personal View (2025)

https://ejpe.org/journal/article/view/1075/753
5•cainxinth•3d ago•0 comments

Wood Gas Vehicles: Firewood in the Fuel Tank (2010)

https://solar.lowtechmagazine.com/2010/01/wood-gas-vehicles-firewood-in-the-fuel-tank/
56•Rygian•3d ago•28 comments

Show HN: I saw this cool navigation reveal, so I made a simple HTML+CSS version

https://github.com/Momciloo/fun-with-clip-path
117•momciloo•18h ago•25 comments

First Proof

https://arxiv.org/abs/2602.05192
156•samasblack•20h ago•95 comments

In the Australian outback, we're listening for nuclear tests

https://www.abc.net.au/news/2026-02-08/australian-outback-nuclear-tests-listening-warramunga-faci...
17•defrost•2h ago•4 comments

Start all of your commands with a comma (2009)

https://rhodesmill.org/brandon/2009/commands-with-comma/
622•theblazehen•3d ago•223 comments

Substack confirms data breach affects users’ email addresses and phone numbers

https://techcrunch.com/2026/02/05/substack-confirms-data-breach-affecting-email-addresses-and-pho...
77•witnessme•7h ago•35 comments

Al Lowe on model trains, funny deaths and working with Disney

https://spillhistorie.no/2026/02/06/interview-with-sierra-veteran-al-lowe/
114•thelok•20h ago•27 comments

Where did all the starships go?

https://www.datawrapper.de/blog/science-fiction-decline
198•speckx•4d ago•293 comments

OpenCiv3: Open-source, cross-platform reimagining of Civilization III

https://openciv3.org/
929•klaussilveira•1d ago•284 comments
Open in hackernews

Rust Contagious Borrow Issue

https://qouteall.fun/qouteall-blog/2025/How%20to%20Avoid%20Fighting%20Rust%20Borrow%20Checker#contagious-borrow-issue
44•qouteall•3mo ago

Comments

jasonthorsness•3mo ago
I’ve been learning Rust via the book and a great article I found on linked lists [1]. Coming from C++ the lifetimes/borrows concepts make sense at a high level but the practical details seem to get pretty crazy. If anyone here knows Rust well does the OP article have a good take or is it missing something?

[1] https://rust-unofficial.github.io/too-many-lists/

scottlamb•3mo ago
I think if you've hit this problem and are looking for solutions, this article looks like a helpful read. There are lots of ideas there.

I wouldn't say this is a super common problem (though I have hit it). The opening example here is that logic outside `Parent` is maintaining its summary state based on its children. That's unusual; typically `Parent` itself would be responsible for that, and so you can inline the logic without having to expose the fields.

Sometimes inlining the logic gets impractical though if the logic is super long. In that case it can be helpful to split it into sub-structs so that you can easily call a method on a group of fields. I did that here, for example: <https://github.com/scottlamb/moonfire-nvr/blob/ff383147e4ff7...>

There have been language proposals to define "view types" which are basically groups of fields that are borrowed. <https://smallcultfollowing.com/babysteps/blog/2021/11/05/vie...> IMHO, they're not worth the extra language complexity.

recursivecaveat•3mo ago
This actually seems like a very good collection of strategies. The only one I use that I see missing is converting a closure capture into an argument. If you design something like: zebra.onmove(|| log(barn.contains(zebra))), then you will find everything locks up due to the references of the closure. Instead you convert the data to args: zebra.onmove(|world, zebra| log(world.barn.contains(zebra))). Obviously with cheap data which you can freeze and copy like a BarnId it's fine to do that.

In general, "stop, drop, reacquire" is a good motto. ie finish figuring out what you want to happen, release the resources that you needed to figure that out, reacquire exactly the resources you need to make the thing happen, do it. That's basically the premise of 'mutation-as-data'.

qouteall•3mo ago
Thanks for suggestion.
phibz•3mo ago
For this example id probably accumulate the score total in a local variable. Then once iterating over all the children i would call parent.add_score() with the accumulated total
qouteall•3mo ago
I added clarification

(That simplified example is just for illustrating contagious borrow issue. The *`total_score` is analogous to a complex state that exists in real applications*. Same for subsequent examples. Just summing integer can use `.sum()` or local variable. Simple integer mutable state can be workarounded using `Cell`.)

bestouff•3mo ago
This article says that the borrow checker doesn't look past functions signatures because of compiler performance. I strongly disagree. The reason is to avoid coupling. If it did, you couldn't swap 2 functions with the same signature because their implementation would have a different borrowing pattern. Very bad.

(Although we're a bit there with functions returning an impl)

qouteall•3mo ago
I added that into article
aw1621107•3mo ago
It's a bit of both IIRC. You're right that limiting checks to the function signature avoids accidentally leaking implementation details, but it also means that checking functions can be done entirely locally. Not having to recursively inspect called function implementations to determine whether there is a type/borrow checking error scales much worse than only needing to look at function signatures.
stuaxo•3mo ago
It sounds analogous to a memory leak, "borrow leak" might bea way of thinking of this.