Passionate about computers, books, and writing — https://xitter.cf/t.co/ONrBoLjeZL. he/him

Sydney, New South Wales
Joined April 2016
Ryan James Spencer retweeted
It is a weird weird year to be a formal methods expert. Some unorganized thoughts on the new @AnthropicAI and @theoremlabs post on formal verification (anthropic.com/research/forma…): - This is very cool. - The main innovation is verifying a later stage of the program. Normally provers take the source code, LLM it into a theorem language, and then prove that, which means you have to make assumptions about source semantics and compilation properties. It's very easy to make a mistake in translating and prove the wrong thing! What they instead do is compile the code into assembly, and then (if I understand this correctly), compile that assembly into a theorem language (which they call LPS). So as long as the compiler is faithful you can skip the whole divergence problem. - I'm glad they clarify that you still have to trust the translation process, the "hardware, OS, OCaml" compiler, the LPS model, and also assume that the program is single threaded with fixed memory. The single biggest source of errors in formally verified code is when the proof assumes something that isn't true in practice. It's really, really important to state your assumptions! - I'm not clear why they need to compile the fuzzer into the theorem. Is it to act as a description of valid inputs and workload? Maybe to embed assertions in as theorems? - Holy crap, 180 million lines of Rocq. Is that more Rocq than exists in the world already? I notice they say a 600,000 line proof corresponds to roughly 20k CPU instructions. That would be like, 1-2k lines of source code at most? Really goes to show how inefficient this approach is and how it only works because you can throw LLMs at the problem. - This, probably deliberately, doesn't address the single biggest gap in AI-based verification: AIs cannot come up with good properties. Doesn't matter if you're doing unit testing, property testing, formal verification. I always assumed this was a "frontier labs haven't trained for it yet" thing, but if Anthropic hasn't talked about that here, maybe they've tried and haven't been successful yet. That's interesting to me. Instead, they take a known universal property (this code doesn't crash or get flagged by UBsan) and prove that instead. Still very useful, but makes it harder to generalize to proving arbitrary things about arbitrary programs. - Anybody reading the official post should also read their expert review appendix (www-cdn.anthropic.com/files/…). It points out some interesting things, like the fact that most of the code the LLM wrote wasn't used in the proof (over one billion lines of Rocq), that they had to prove the equivalence between fuzzed and unfuzzed programs, and (this is most interesting), some experiments find that the LLM-method of proofwriting may not scale to more complex things. - Also read the description of LPS (github.com/theorem-labs/oss-…) to understand the limitations of the assembly -> Rocq compilation. In particular, it does not handle concurrency at all (which is one of the main use cases for formal methods!) or OS signals. Also it can't prove things about program arguments with slash characters, meaning they can prove stuff about `rm foo` but not `rm foo/bar`. - The official skill (github.com/theorem-labs/oss-…) doesn't tell us much about the nature of FM and AI. Probably too much for me to hope of any skill. - Some of the article's specific caveats and throat clearings make me think someone at Anthropic reads my stuff ( ͡° ͜ʖ ͡°)
36
126
12
841
197,656
Ryan James Spencer retweeted
I put together a minimalistic pure-Rust, CPU-only implementation of the recent LFM2.5-8B-A1B language model from @liquidai that you can directly link into your Rust projects😎 github.com/maximecb/bebelm
6
12
2
184
14,792
Ryan James Spencer retweeted
what’s everyone’s favorite PL paper published so far this year
4
4
56
3,910
Ryan James Spencer retweeted
You may have already heard, but the core SQLite team is working on Vec1 — native vector search (ANN) in SQLite. It supports Euclidean (L2) and cosine distances, and uses SIMD for fast vector operations. Vec1 is already feature-complete. The only things left are improving test coverage and making some optimizations. sqlite.org/vec1
8
57
4
612
27,780
Ryan James Spencer retweeted
I just released mold 3.0.0! This is the first Rust version of mold, rewritten from C++ with performance on par with 2.42.1. The goal of mold 3.x is to close the remaining GNU ld compatibility gaps and make mold the default linker in Linux distros. github.com/rui314/mold/relea…
42
214
11
1,437
71,145
Ryan James Spencer retweeted
This summer, I published the constmap data structure. It is available in Python, C, Rust, Go. (And it is interoperable too!) If you have large unchanging maps from strings to integers, then you should give it a try. It is a common problem in machine learning. In the simplest version, we just expect that all queries are in the set. In the verified version, we check that the key is in the set (at a small extra cost). In the last versions, I have introduced variant that I call 'paired verified' which is about 20% faster than the prior verified variant. And I have also added 'get_many' variants for when you want to query several keys at once (for better performance). In Python, it will use much less memory than a dict, be much faster... and you can store it to disk and share it with your friends who use Go, Rust, C, C++... NOTE: Port to other programming languages are invited. github.com/lemire/fastconstm… github.com/lemire/rsconstmap github.com/lemire/constmap
8
11
1
143
7,548
Ryan James Spencer retweeted
Your processor can execute many instructions at once, but can it process more than one branch per cycle? Let us find out!
3
9
114
8,952
Ryan James Spencer retweeted
If you hand-write code, you have an intimate relationship with the system you created. I struggle to have that same relationship with AI-generated code. This is a big problem for me. How can I feel as comfortable about the program I wrote as I did before?
5
9
138
12,999
Ryan James Spencer retweeted
why don't they use Opus 5?
193
98
35
3,863
347,395
Ryan James Spencer retweeted
transformers are almost surely injective, meaning, you can recover the exact input text from hidden states parameter settings where two different prompts land on the same hidden state form a measure-zero set under Lebesgue measure, so random init misses that set with probability 1 (gradient descent never pushes you back into it either, so injectivity survives the entire training run) @EmanueleRodola's group proves this specifically for the last hidden state at the final layer, but it goes further than that: any hidden state only depends on its own causal predecessors in that forward pass, so it knows all of them too (hidden state at position 5, layer 7 knows everything about the hiddens at positions 1-4 across layers 1 through 6) arxiv.org/abs/2510.15511
24
113
11
971
79,022
Ryan James Spencer retweeted
Agentic programming in 2026
24
93
6
3,263
72,060
Ryan James Spencer retweeted
Don't let anyone tell you how to live your life.
66
978
57
7,462
197,419
Ryan James Spencer retweeted
Claude CodeのFableに、moldリンカにリンカスクリプトのサポートを足してくださいと丸投げで依頼したら、Linuxカーネルをリンクして起動できるようになってしまった。 こういう日が来るだろうなと思ったけどほんとにすごいな。
3
73
8
600
90,242
Ryan James Spencer retweeted
convinced designing callstacks upfront is making the biggest positive impact on my agents atm
15
6
5
329
18,882
Ryan James Spencer retweeted
I strongly believe there are entire companies right now under heavy AI psychosis and its impossible to have rational conversations about it with them. I can't name any specific people because they include personal friends I deeply respect, but I worry about how this plays out. I lived through the great MTBF vs MTTR (mean-time-between-failure vs. mean-time-to-recovery) reckoning of infrastructure during the transition to cloud and cloud automation. All those arguments are rearing their ugly heads again but now its... the whole software development industry (maybe the whole world, really). It's frightening, because the psychosis folks operate under an almost absolute "MTTR is all you need" mentality: "its fine to ship bugs because the agents will fix them so quickly and at a scale humans can't do!" We learned in infrastructure that MTTR is great but you can't yeet resilient systems entirely. The main issue is I don't even know how to bring this up to people I know personally, because bringing this topic up leads to immediately dismissals like "no no, it has full test coverage" or "bug reports are going down" or something, which just don't paint the whole picture. We already learned this lesson once in infrastructure: you can automate yourself into a very resilient catastrophe machine. Systems can appear healthy by local metrics while globally becoming incomprehensible. Bug reports can go down while latent risk explodes. Test coverage can rise while semantic understanding falls. Changes happens so fast that nobody notices the underlying architecture decaying. I worry.
502
1,890
394
15,236
1,624,570
Ryan James Spencer retweeted
1. Hook up generator to Dijkstra's grave. 2. Train popular LLM to slip gotos into code. 3. Free energy?
3
3
113
11,642
Ryan James Spencer retweeted
PSA: Before copy-pasting a GitHub source code link, especially one that links to a line or line range, hit `y` to make the URL include the current commit hash. That way the link will keep working even if the file is later changed or moved/deleted. – at Los Angeles, CA
4
42
4
519
Ryan James Spencer retweeted
Lately I have arguments around this idea very often: every time I see people evaluating a program looking at totally marginal things, like programming language, if it is using the latest libraries released, if files are shorter than X lines of code. What matters is elsewhere.
Programming isn't so much about conveying to machines instructions for how to do a thing. It's more about building clear mental models of the thing. That's the hard part. Writing the code and running it can be a tool to shape your own thinking.
2
2
40