Hacker Newsnew | past | comments | ask | show | jobs | submit | sestep's commentslogin

Been doing this at work for the past couple weeks. Extremely powerful to be able to have an agent open a PR with some experiments showing it makes some function faster using SIMD or CUDA, and just confidently merge it because the PR has a Rocq proof that it's behaviorally equivalent to the original implementation.

How do you gain confidence that your theorem actually applies to your code?

My Rocq setup directly reads my actual code. And I fuzz my semantic models against the real machine.

Is this closed source?

Yeah. I've been considering asking my boss about open-sourcing it but I'm probably gonna flesh it out a lot more first.

I'm curious about your workflow (or the one in the blog post), I have been doing some experiments proving things about existing binaries and it's been extremely slow progress.

Yeah it took a bit to decide which abstraction level to target but I ended up choosing LLVM IR (planning to try PTX soon). It's been pretty successful so far for SIMD stuff, although proving theorems about concurrent programs seems a lot slower so far.

Does this require having a Rocq semantics of LLVM IR? Which one do you use?

No existing semantics are enough for my goals, so I'm building my own based on Vellvm, and proving "equivalence" theorems to it and other related work that specify what quirks/discrepancies/idiosyncrasies they have with respect to each other.

Ah, interesting. I went with Ghidra p-code which seems ok but what I didn't really appreciate going in was how much of the platform API surface you have to describe before you can prove pretty much anything at all.

This is not intended to be derogatory but I notice the he/hims and the transgenders are always cracked af.

I wonder if not having to deal with women as a straight man frees up some part of the brain for more productive uses.

Unfortunately, I love women so I can only be an application programmer.


But it's not browser diversity in the sense people usually mean when they talk about IE and Chrome. It uses the same WebKit engine Safari uses.


For me the answer is quite simple: it's the only browser on iOS that lets you run Chrome extensions and Firefox add-ons.


It could run extensions a lot better if it ran on other platforms, so the extension developers could actually test it and support it properly.

I'd love to support Orion, but I can't because I don't have a practical way to run it.


Doesn't Firefox also run Chrome extensions? Not that Firefox doesn't have enough extensions by itself...


Firefox on iOS doesn't support extensions at all.


Firefox on any platform does not run Chrome extensions, because it is not built on Chromium.


having written a few extensions... they are basically the same API with a few differences you need to account for. there's polyfills that can unify the experience a bit more too.



The underlying APIs are very similar, but you can't just install an extension from the Chrome Web Store.


Currently I remap all backgrounds, text, and vector graphics, and I leave raster images alone. This works great for documents whose only raster images are photographs; some documents do have other raster images that might even have white backgrounds instead of transparent, so that's not ideal, but it seems to work decently well in practice.


Full title: "Silicon Valley sees AI as the solution – for everyone else, it’s the problem"


I don't understand why OP cut that off... that's a completely different title.


Character limit..?


Even when the full title is displayed it can be interpreted in two ways.


Bait


A bug in the scriptlet I used to post it, which truncated the title as “Silicon Valley sees AI as the solution – for everyone els...”, which I didn’t notice had dropped the third line of the title.


> In case you are curious about Fable: I intentionally did not test it because I was not sure if the classifiers they are running might downgrade me to Opus silently.

Is this still a thing? I thought Anthropic walked back the silent downgrades so now all the different domains downgrade non-silently.


Claude Code downgrades loudly but I'm not sure what happens over API or with other harnesses, OpenRouter, etc.


If I send an API call specifying model="Fable", is there a world where returning tokens not from Fable is anything but dishonest?


> The famous E=mc^2 it's just the first term of a Taylor expansion.

Is this actually true? My understanding was that E=mc^2 is exact for a particle at rest.


It's slower. Wasm32 can just reserve 8 GiB (32-bit pointer + 32-bit offset) of the virtual address space from the OS for each memory, so checking for out-of-bounds memory accesses imposes no performance penalty. Wasm64 can't do that, so each memory access is a bit slower.


Oh that's interesting, never noticed it in my experience but I have never written anything in wasm where it would matter. Makes perfect sense now that I think about it though. Thanks!


Sometimes I wonder whether it's possible to run the wasm code in a separate sandboxed process to eliminate a lot of checks. I mean optionally, because normally JS calls wasm code synchronously in the same address space. The bridge will add more latency when there is a transition between JS and wasm. It's obviously complicated because some data structures can also be shared, such as SharedArrayBuffer.


> The bridge will add more latency when there is a transition between JS and wasm.

This would be similar to how NaCl/PNaCl communicated with the JS side (via message passing), and that really sucked and would also be prohibitively slow for talking to 'high frequency APIs' like WebGL2 or WebGPU (or the DOM heh).


This is just false. The article links to the 46-page paper [1] which lists full prompts in section E.2.

[1] https://arxiv.org/pdf/2602.14740


TIL you can get anchored links to PDFs (at least on firefox),

- https://arxiv.org/pdf/2602.14740#subsection.E.2


I've seen various posts about Elixir's gradual type system pop up on HN, but haven't been following too closely. Does anyone know whether this particular gradual type system can change the asymptotics of programs vs untyped code? As far as I'm aware, most gradual type systems (e.g. Racket) can make programs run asymptotically slower, although there are some exceptions [1].

[1] https://doi.org/10.1145/3314221.3314627


Elixir's gradual type system cannot change the asymptotic complexity of your programs. The design explicitly rules out mechanism that causes slowdowns in other gradual type systems (runtime casts at static/dynamic boundaries)

Most gradual type systems insert coercions when values cross the types/untyped boundary (checking every element of a list, wrapping values in typed proxies, etc) but Elixir's team published a "strong arrows" result specifically to achieve soundness without those runtime checks. The bytecode the compiler emits is semantically identical to untyped code.


i think the design can push people into writing unnecessary matches/guards just to trigger the typechecker.

that said, I'm a fan


That can be a concern indeed but it is worth noting that strong arrows compose/propagate. So if you have a function without guards that calls a function that guards on said types, the caller is also strong! We will likely have mechanisms to measure "strength" when we introduce type annotations.


Is it fair to think of this as the ability for type information to be propagated in both directions, e.g. both up and down the callstack? So callees down the callstack may receive any type information the caller might have, while callers up the stack may also receive any information callees further down the stack might have? Please correct me if my understanding of what you wrote is way off base!


That happens with a single module but not across modules because being able to hot code load modules is an essential ability in Erlang/Elixir.


very cool. would be even cooler if you could disguise type annotations as dialyzer annotations :P


I had to do this just the other day. I found it to be a minor papercut, but it was an easy fix.


Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: