frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Lewis Carroll Computed Determinants

https://www.johndcook.com/blog/2023/07/10/lewis-carroll-determinants/
39•tzury•1h ago•3 comments

Experts Explore New Mushroom Which Causes Fairytale-Like Hallucinations

https://nhmu.utah.edu/articles/experts-explore-new-mushroom-which-causes-fairytale-hallucinations
125•astronads•3h ago•43 comments

How uv got so fast

https://nesbitt.io/2025/12/26/how-uv-got-so-fast.html
18•zdw•3h ago•2 comments

Rob Pike got spammed with an AI slop "act of kindness"

https://simonwillison.net/2025/Dec/26/slop-acts-of-kindness/
159•nabla9•1h ago•69 comments

Package managers keep using Git as a database, it never works out

https://nesbitt.io/2025/12/24/package-managers-keep-using-git-as-a-database.html
473•birdculture•7h ago•261 comments

Gaussian Splatting 3 Ways

https://github.com/NullandKale/NullSplats
8•nullandkale•54m ago•1 comments

LearnixOS

https://www.learnix-os.com
149•gtirloni•7h ago•53 comments

My insulin pump controller uses the Linux kernel. It also violates the GPL

https://old.reddit.com/r/linux/comments/1puojsr/the_device_that_controls_my_insulin_pump_uses_the/
56•davisr•1h ago•7 comments

FFmpeg has issued a DMCA takedown on GitHub

https://twitter.com/FFmpeg/status/2004599109559496984
144•merlindru•2h ago•15 comments

C/C++ Embedded Files (2013)

https://www.4rknova.com//blog/2013/01/27/cpp-embedded-files
34•ibobev•3h ago•29 comments

Show HN: Xcc700: Self-hosting mini C compiler for ESP32 (Xtensa) in 700 lines

https://github.com/valdanylchuk/xcc700
49•isitcontent•5h ago•13 comments

Unix "find" expressions compiled to bytecode

https://nullprogram.com/blog/2025/12/23/
78•rcarmo•7h ago•5 comments

Show HN: AutoLISP interpreter in Rust/WASM – a CAD workflow invented 33 yrs ago

https://acadlisp.de/noscript.html
52•holg•4h ago•27 comments

Perfect Aircrete, Kitchen Ingredients [video]

https://www.youtube.com/watch?v=z4_GxPHwqkA
18•surprisetalk•6d ago•9 comments

ZJIT is now available in Ruby 4.0

https://railsatscale.com/2025-12-24-launch-zjit/
45•ibobev•3h ago•18 comments

The Algebra of Loans in Rust

https://nadrieril.github.io/blog/2025/12/21/the-algebra-of-loans-in-rust.html
158•g0xA52A2A•4d ago•75 comments

High School Student Discovers 1.5M Potential New Astronomical Objects

https://www.smithsonianmag.com/smart-news/high-school-student-discovers-1-5-million-potential-new...
85•mhb•5h ago•78 comments

Joan Didion and Kurt Vonnegut had something to say. We have it on tape

https://www.nytimes.com/2025/12/19/books/james-baldwin-joan-didion-92ny-recordings.html
80•tintinnabula•4d ago•18 comments

Sandbox: Run untrusted AI code safely, fast

https://github.com/PwnFunction/sandbox
21•vortex_ape•1w ago•1 comments

TurboDiffusion: 100–200× Acceleration for Video Diffusion Models

https://github.com/thu-ml/TurboDiffusion
207•meander_water•16h ago•41 comments

Overlooked No More: Inge Lehmann, Who Discovered the Earth's Inner Core

https://www.nytimes.com/2025/12/20/obituaries/inge-lehmann-overlooked.html
57•Hooke•3d ago•13 comments

A Proclamation Regarding the Restoration of the Em-Dash

https://blog.nawaz.org/posts/2025/Dec/a-proclamation-regarding-the-restoration-of-the-dash/
72•BeetleB•2h ago•77 comments

Show HN: Witr – Explain why a process is running on your Linux system

https://github.com/pranshuparmar/witr
25•pranshuparmar•4h ago•5 comments

An 11-qubit atom processor in silicon with all fidelities from 99.10% to 99.99%

https://www.nature.com/articles/s41586-025-09827-w
67•giuliomagnifico•5d ago•43 comments

Bedlam Cube Solved (ALL 19,186 solutions)

http://scottkurowski.com/BedlamCube/
25•kristianp•4d ago•4 comments

Show HN: Gaming Couch – a local multiplayer party game platform for 8 players

https://gamingcouch.com
379•ChaosOp•5d ago•106 comments

The First Web Server

https://dfarq.homeip.net/the-first-web-server/
39•giuliomagnifico•9h ago•6 comments

Rob Pike Goes Nuclear over GenAI

https://skyview.social/?url=https%3A%2F%2Fbsky.app%2Fprofile%2Frobpike.io%2Fpost%2F3matwg6w3ic2s&...
871•christoph-heiss•6h ago•834 comments

Building an AI agent inside a 7-year-old Rails monolith

https://catalinionescu.dev/ai-agent/building-ai-agent-part-1/
97•cionescu1•12h ago•41 comments

ChatGPT conversations still lack timestamps after years of requests

https://community.openai.com/t/timestamps-for-chats-in-chatgpt/440107?page=3
203•Valid3840•7h ago•111 comments
Open in hackernews

ZJIT is now available in Ruby 4.0

https://railsatscale.com/2025-12-24-launch-zjit/
45•ibobev•3h ago

Comments

ComputerGuru•1h ago
Non-ruby dev here. Can someone explain the side exit thing for me?

> This meant that the code we were running had to continue to have the same preconditions (expected types, no method redefinitions, etc) or the JIT would safely abort. Now, we can side-exit and use this feature liberally.

> For example, we gracefully handle the phase transition from integer to string; a guard instruction fails and transfers control to the interpreter.

> (example showing add of two strings omitted)

What is the difference between the JIT safely aborting and the JIT returning control to the interpreter? Or does the JIT abort mean the entire app aborts (i.e. I presumed JIT aborting means continuing on the interpreter anyway?)

(Also, why would you want the code that uses the incorrect types to succeed? Isn’t abort of the whole unit of execution the right answer here, anyway?)

nt591•1h ago
Dynamic languages will allow a range of types through functions. JITs add tracing and attempt to specialize the functions based on the observed types at runtime. It is possible that later on, the function is called with different types than what the JIT observed and compiled code for. To handle this, JITs will have stubs and guards. You check the observed type at runtime before calling the JITted code. If the type does not match, you would call a stub to generate the correct machine code, or you could just call into the interpreter slow path.

An example might be the plus operator. Many languages will allow integers, floats, strings and more on either side of the operator. The JIT likely will see mostly integers and optimize the functions call for integer math. If later you call the plus operator with two Point classes, then you would fall back to the interpreter.

tekknolagi•1h ago
In this case, we used to abort (i.e. abort(); intentionally crash the entire process) but now we jump into the interpreter to handle the dynamic behavior.

If someone writes dynamic ruby code to add two objects, it should succeed in both integer and string cases. The JIT just wants to optimize whatever the common case is.

ComputerGuru•50m ago
I guess I’m confused why an actual add instruction is emitted rather than whatever overloaded operation takes place when the + symbol (or overloaded add vtable entry) is called (like it would in other OOP languages).
endorphine•1h ago
It would be useful to explain why ZJIT exists given that there's already YJIT.

Also, what's the long-term plan for YJIT.

fourseventy•1h ago
I just upgraded my prod apps to run on YJIT so I'm annoyed at this announcement. Feels like javascript-esque runtime churn
tekknolagi•1h ago
Earnestly: why are you annoyed? I tried to make it clear that you don't have to make any changes. If you want, you can try ZJIT (which should not be anything other than a one character change), but you don't have to.
fourseventy•1h ago
Because now YJIT is deprecated and at some point in a year or two I will have to have my team go through and switch everything from YJIT to ZJIT. So it's creating random tech debt busywork that will suck up dev resources that could better be used building features.

In isolation, having to switch from YJIT to ZJIT isn't that bad, but this same type of churn happens across so much of the frameworks and technologies that my company uses that in aggregate it becomes quite an annoyance.

tekknolagi•42m ago
YJIT is not deprecated. That word has a specific meaning in Ruby. You can continue to use YJIT.

With any luck, this performance in the next year or two will be enough to make it a happy change. "Damn, free money" etc

pjmlp•39m ago
Most JIT compiled languages have multiple implications, each pushing each other forward.
riffraff•1h ago
ZJIT exists because it's a more traditional design and there's hope more people will have a easier time contributing[0]. Given that, it seems YJIT will become unnecessary if ZJIT succeeds.

0: https://railsatscale.com/2025-05-14-merge-zjit/

baggy_trough•1h ago
The explanation is in the second paragraph of the article.
awestroke•1h ago
I recently rewrote one of my rails apps in rust. Used Claude 4.5 Opus heavily and it was very fast.

One thing that's struck me with the new code is that's its so easy to follow compared to rails. It's like two different extremes on the implicit-explicit spectrum. Yet it's not like I have tons more boilerplate code now, I think I have maybe 10 or 20% more SLOC than before.

I'll probably do this with my other rails apps as well.

losteric•1h ago
Was your app converted to use some Rust framework, or just Rust?
awestroke•1h ago
I use Axum+SQLx and for html templates I use Maud. The plan is to move to Dioxus as a step 2
hu3•47m ago
Any language with a half decent typing system would have improved the easiness to follow code around. C#, Go, PHP, TypeScript, etc.

Ruby/Rails is awesome but it's a bit too magical sometimes and, lacking types by default, doesn't help either.

azuanrb•32m ago
You're comparing a language with a framework. Better comparison would be Rust (with your choices of libraries) vs Ruby (with your choices of libraries).

If you want to compare with Rails, you need to compare with battery included Rust frameworks with equivalent batteries and convention.

aapoalas•5m ago
I'm a little sad to see YJIT go down in favour of a traditional design. (Yes, YJIT isn't "deprecated" but the people working on it are now mainly working on something else. That's hardly a great place to be in.)

I'm personally quite interested in trying out an LBBV JIT for JavaScript, following in Chevalier-Boisvert's Higgs engine's footsteps. The note about a traditional method JIT giving more code for the compiler to work with does ring very true, but I'd just like to see more variety in the compiler and JIT world.

Like: perhaps it would be possible to conjoin (say) an LBBV with a SoN compiler such that LBBV takes care of the quick, basic compilation and leaves behind enough data such that a SoN compiler can be put to use on the whole-method result once the whole method has been deemed hot enough? This is perhaps a totally ridiculous idea, but it's the kind of idea that will never get explored in a world with only traditional method JITs.