frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Show HN: Terminal UI for AWS

https://github.com/huseyinbabal/taws
209•huseyinbabal•7h ago•97 comments

Why does a least squares fit appear to have a bias when applied to simple data?

https://stats.stackexchange.com/questions/674129/why-does-a-linear-least-squares-fit-appear-to-ha...
167•azeemba•7h ago•46 comments

Lessons from 14 Years at Google

https://addyosmani.com/blog/21-lessons/
900•cdrnsf•12h ago•417 comments

During Helene, I just wanted a plain text website

https://sparkbox.com/foundry/helene_and_mobile_web_performance
32•CqtGLRGcukpy•1h ago•22 comments

The unbearable joy of sitting alone in a café

https://candost.blog/the-unbearable-joy-of-sitting-alone-in-a-cafe/
470•mooreds•13h ago•286 comments

The Showa Hundred Year Problem

https://www.dampfkraft.com/showa-100.html
24•polm23•5d ago•5 comments

Street Fighter II, the World Warrier (2021)

https://fabiensanglard.net/sf2_warrier/
328•birdculture•13h ago•56 comments

Linear Address Spaces: Unsafe at any speed (2022)

https://queue.acm.org/detail.cfm?id=3534854
124•nithssh•4d ago•86 comments

The year of the 3D printed miniature and other lies we tell ourselves

https://matduggan.com/the-year-of-the-3d-printed-miniature-and-other-lies-we-tell-ourselves/
111•sagacity•6d ago•74 comments

Ripple, a puzzle game about 2nd and 3rd order effects

https://ripplegame.app/
90•mooreds•9h ago•21 comments

Millennium Challenge: A corrupted military exercise and its legacy (2015)

https://warontherocks.com/2015/11/millennium-challenge-the-real-story-of-a-corrupted-military-exe...
25•lifeisstillgood•3h ago•19 comments

Eurostar AI vulnerability: When a chatbot goes off the rails

https://www.pentestpartners.com/security-blog/eurostar-ai-vulnerability-when-a-chatbot-goes-off-t...
101•speckx•6h ago•29 comments

Six Harmless Bugs Lead to Remote Code Execution

https://mehmetince.net/the-story-of-a-perfect-exploit-chain-six-bugs-that-looked-harmless-until-t...
30•ozirus•3d ago•1 comments

Show HN: An interactive guide to how browsers work

https://howbrowserswork.com/
184•krasun•12h ago•29 comments

Web development is fun again

https://ma.ttias.be/web-development-is-fun-again/
311•Mojah•12h ago•395 comments

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

https://cleoselene.com/
64•brunovcosta•7h ago•39 comments

The baffling purple honey found only in North Carolina

https://www.bbc.com/travel/article/20250417-the-baffling-purple-honey-found-only-in-north-carolina
10•rmason•4d ago•1 comments

Agentic Patterns

https://github.com/nibzard/awesome-agentic-patterns
83•PretzelFisch•8h ago•8 comments

The great shift of English prose

https://www.worksinprogress.news/p/english-prose-has-become-much-easier
37•dsubburam•4d ago•26 comments

Moiré Explorer

https://play.ertdfgcvb.xyz/#/src/demos/moire_explorer
136•Luc•14h ago•17 comments

Show HN: Hover – IDE style hover documentation on any webpage

https://github.com/Sampsoon/hover
40•sampsonj•8h ago•18 comments

Show HN: An LLM-Powered PCB Schematic Checker (Major Update)

https://traceformer.io/
34•wafflesfreak•5h ago•15 comments

Anti-aging injection regrows knee cartilage and prevents arthritis

https://scitechdaily.com/anti-aging-injection-regrows-knee-cartilage-and-prevents-arthritis/
214•nis0s•12h ago•78 comments

Bison return to Illinois' Kane County after 200 years

https://phys.org/news/2025-12-bison-illinois-kane-county-years.html
126•bikenaga•5d ago•39 comments

FreeBSD Home NAS, part 3: WireGuard VPN, routing, and Linux peers

https://rtfm.co.ua/en/freebsd-home-nas-part-3-wireguard-vpn-linux-peer-and-routing/
148•todsacerdoti•15h ago•8 comments

Trellis AI (YC W24) is hiring engineers to build AI agents for healthcare access

https://www.ycombinator.com/companies/trellis-ai/jobs/ngvfeaq-member-of-technical-staff-full-time
1•macklinkachorn•10h ago

Claude Code On-the-Go

https://granda.org/en/2026/01/02/claude-code-on-the-go/
231•todsacerdoti•7h ago•160 comments

Using Hinge as a Command and Control Server

https://mattwie.se/hinge-command-control-c2
95•mattwiese•13h ago•46 comments

How I archived 10 years of memories using Spotify

https://notes.xdavidhu.me/notes/how-i-archived-10-years-of-memories-using-spotify
89•xdavidhu•12h ago•40 comments

Stop Forwarding Errors, Start Designing Them

https://fast.github.io/blog/stop-forwarding-errors-start-designing-them/
80•andylokandy•8h ago•47 comments
Open in hackernews

Xr0 verifier, guarantee the safety of C programs at compile time

https://xr0.dev
107•Alifatisk•1d ago

Comments

pkhuong•1d ago
I don't see any explanation of what niche this targets relative to pre-existing tools like Checked C, CMBC, or Frama C...
aw1621107•1d ago
Previously:

Show HN: Xr0 – Vanilla C Made Safe with Annotations (https://news.ycombinator.com/item?id=37536186, 2023-09-16, 13 comments)

Xr0 Makes C Safer than Rust (https://news.ycombinator.com/item?id=39858240, 2024-03-28, 41 comments)

Xr0: C but Safe (https://news.ycombinator.com/item?id=39936291, 2024-04-04, 144 comments)

Show HN: Xr0 is a Static Debugger for C (https://news.ycombinator.com/item?id=40472051, 2024-05-05, 4 comments)

tialaramex•1d ago
Thanks! I thought this felt familiar. 2023 is a long time to still be in this "Initial signs are promising" mode. There are no code commits since March 2025.

I've had projects which stalled for a few months or even a year, but generally if I said I'll get to it "soon" and two years later I haven't, that's not getting done. There are two boxes of books I planned to unbox "soon" after discovering that the bookshelves for my new flat were full & so I had nowhere to put them. That was when Obama was still President of the United States of America. Don't expect me to ever get around to unboxing those books, I clearly haven't even missed them.

muldvarp•1d ago
The initial sign for Xr0 never seemed promising for anyone with experience in formal verification. Neither the code nor the ideas they presented were new. I asked them multiple times to clarify how their project differed from the dozens of already existing options for formal verfication of C programs and never got a concrete answer.
tgv•18h ago
As I see it: tracking (de)allocation in a very simple, understandable way. Unfortunately, that seems to be all it does. It's a start, certainly if you don't want to/cannot use a more complete system, since they can be quite complex. I'm not following this space professionally, only out of interest a bit, but do you know of a system that is so simple?
rurban•19h ago
Well, apparently someone rewrote it in rust, which was better than their version. Which they needed some time to process how to continue.

And they got stuck with the bounds checker and loops.

But other such checkers are far more advanced, with a better contract syntax.

thealistra•1d ago
What happens if a function allocates not deterministically, like

if (turing_machine_halts(tm)) return malloc(1); else return NULL;

How is this handled?

jonhohle•1d ago
NULL is a valid return for malloc. Wouldn’t that case already be handled?
dnautics•1d ago
as someone building an analyzer for zig, if you sent something like this through the system im building, it would get handled by Zig's optional type tagging; but lets say you did "free" (so your result is half freed, half not freed): it would get rejected because both branches produce inconsistent type refinements, you don't have to solve the halting problem, just analyze all possible branches and seek convergence.
dwattttt•1d ago
Rust is the poster child for these complaints, but this is a great example of "the language rejects a valid program". Not all things that can be expressed in C are good ideas!

This is "valid" C, but I wholly support checking tools that reject it.

dnautics•1d ago
exactly! "guaranteeing the safety of C" sir what did you think that meant, sprinkling magic fairy dust to make it work!!?
dnautics•1d ago
i made a quip and realized that's not a bad description of what fil-c does
throwaway17_17•1d ago
Are you implying that Fil-C has this sort of reaction to people confused about why it does certain things in the name of safety, or are you saying Fil-C is just sprinkling magic fairy dust on C and declaring it safe?
SkiFire13•15h ago
> just analyze all possible branches and seek convergence.

This sounds like a very simple form of abstract interpretation, how do you handle the issues it generally brings?

For example if after one branch you don't converge, but after two you do, do you accept that? What if this requires remembering the relationship between variables? How do you represent these relationships?

Historically this has been a tradeoff between representing the state space with high or perfect precision, which however can require an exponential amount of memory/calculations, or approximate them with an abstract domain, which however tend to lose precision after performing certain operations.

Add dynamically sized values (e.g. arrays) and loops/recursion and now you also need to simulate a possibly unbounded number of iterations.

RossBencina•1d ago
In general, symbolic execution will consider all code paths. If it can't (or doesn't want to) prove that the condition is always true or false it will check that the code is correct in two cases: (1) true branch taken, (2) false branch taken.
thealistra•4h ago
I understand how this works in general. I had static analyzers at Uni, I know lattice theory and all this - I am just wondering how Xr0 handles it.
tgv•18h ago
I think all paths have to return the same allocation. You would have to solve this in another way.
thealistra•4h ago
Isn’t this a very restrictive way to write? Hard for me to imagine as never wrote with such annotations so no idea how viable it is for a large codebase to have this constraint.
nextaccountic•17h ago
There will always be valid programs that are nonetheless rejected by some verifier (Rice's theorem). That is, programs that have really nothing wrong but nonetheless are rejected as invalid

In those cases you generally try to rewrite it in another way

jokoon•1d ago
Does it require annotations or can it validate any c code?

It's odd that so many people promote rust, yet we don't even use static analysis and validators for c or C++.

How about enforcing coding standards automatically first, before switching to a new language?

RossBencina•1d ago
> we don't even use static analysis and validators for c or C++

There is some use, how much I don't know. I guess it should be established best practice by now. Also run test suites with valgrind.

Historically many of the C/C++ static analyzers were proprietary. I haven't checked lately but I think Coverity was (is?) free for open source projects.

haileys•1d ago
Not sure what this post has to do with Rust, but people do use static analysis on C and C++. The problem is that C and C++ are so flexible that retrofitting static verification after the fact becomes quite difficult.

Rust restricts the shape of program you are able to write so that it's possible to statically guarantee memory safety.

> Does it require annotations or can it validate any c code?

If you had clicked through you would see that it requires annotations.

01HNNWZ0MV43FF•1d ago
Today's experts are the novices of 40 years ago, and today's novices will be the experts in 40 years.

C and C++ don't require static analysis, and it's difficult to set up, and so most of us slide down the incentive gradient of using C / C++ without any helpers except CMake and gdb.

Rust requires it, so the noobies use it, so in 40 years the experts will accept it.

ranger_danger•1d ago
> it's difficult to set up

Is it though? I've only ever had to run "scan-build make" for my projects and it spits out a full folder of HTML pages that details any static analysis issues, and I didn't have to change my build system at all.

WalterBright•23h ago
From the tutorial:

    #include <stdio.h>
    int main()
    {
        int i;
        return i;
    }
    the behaviour is undefined because i’s value is indeterminate.
D solves that problem by initializing variables with the default initializer (in this case 0) if there is not an explicit initializer.

That was in the first version of D because I have spent days tracking down an erratic bug that turned out to be an uninitialized variable.

WalterBright•23h ago
BTW, when D compiles C code, it will default initialize the C variables, too.
dadoum•22h ago
I think that the right thing to do is to error out though. When the behaviour of some code cannot be guaranteed, that code should just be ruled out imo. Manually initializing a variable generally doesn't clutter the code, arguably it's making it clearer.
Alifatisk•14h ago
Dart does this, you can mark a variable as "late" which tells the compiler that you know for certain the variable will be written too before read. If something reads the variable before it's initialized, then the runtime will error. Maybe even on compile time if it can be caught, I am not certain.
pseudohadamard•20h ago
Pretty much any existing C compiler will also solve that problem by telling you that it's uninitialized.
WalterBright•19h ago
I tried:

    int test()
    {
        int i;
        return i;
    }
using clang on my Mac mini, and:

    clang -c test.c
and it compiled without complaint.
pseudohadamard•18h ago
I always build with -Wall so I'm used to seeing the warning:

  > clang -Wall test.c
  test.c:4:16: warning: variable 'i' is uninitialized when used here [-Wuninitialized]
      4 |         return i;
        |                ^
  test.c:3:14: note: initialize the variable 'i' to silence this warning
      3 |         int i;
        |              ^
        |               = 0
  1 warning generated.
For the oldest compiler I have access to, VC++ 6.0 from 1998:

  warning C4700: uninitialized local variable 'i' used
WalterBright•9h ago
The trouble with warnings is every compiler has a different set of warnings. It balkanizes the language. Many D features are the result of cherry picking warnings from various compilers and making them standard features.
1718627440•13h ago
C compilers without arguments start in 'trust me and shut up mode'. Seems to be sensible to me, because the 'I don't care about correctness' typically coincides with writing throwaway code, while you surely have the time to add compiler arguments when you set up the build system for an actual project.
WalterBright•9h ago
Or just have the language initialize it for you!
rwmj•16h ago
You can do that in GCC now (-ftrivial-auto-var-init=zero). There are a few projects that decided to enable this by default.
Animats•20h ago
Cute. They've introduced ownership to C. The annotation system is expressing ownership, in a rather clunky way. You have to explicitly declare that functions create or release allocated space. That's ownership tracking.

But "We currently model all buffers as infinitely-sized. We will be adding out-of-bounds checking soon." That's the hard problem.

LiamPowell•19h ago
> But "We currently model all buffers as infinitely-sized. We will be adding out-of-bounds checking soon." That's the hard problem.

It's not particularly difficult for the prover. You essentially just need to do a translation from C in to your ATP language of choice, with a bunch of constraints that check undefined behaviour never occurs. Tools such as Frama-C and CBMC have supported this for a long time.

The difficult part is for the user as they need to add assertions all over the place to essentially keep the prover on the right track and to break down the program in to manageable sections. You also want a bunch of tooling to make things easier for the user, which is a problem that can be as difficult as you want it to be since there's always going to be one more pattern you can detect and add a custom handler/error message for.

rwmj•16h ago
Oddly they didn't even reuse the annotation for this that GCC already has: https://stackoverflow.com/questions/18485447/gcc-attribute-m...
1718627440•13h ago
> Cute. They've introduced ownership to C.

Ownership semantics are described in every serious C interface. Linters for checking it have also existed for decades. I find the notion that Rust invented it to be incredible stupid. Rust just has different ownership semantics and makes it an enforced part of the language (arguable a good idea). And yes they of course also do bounds-checking.