HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
jepsen-io
elle
Clojure2020–2025
jepsen-io / elle

elle

Black-box transactional safety checker based on cycle detection

9Distinct people
12Mentions
0Explicit recommenders
715GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Black-box transactional safety checker based on cycle detection

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year12 dated mentions

Observed mentions: 2020-03-26 02:20:56 UTC to 2025-08-07 18:04:10 UTC.

02462020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 7 mentions; 4 submissions, 3 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC743
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC211
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC202
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

12 sources
TIL (from this article) about "elle", which is part of the Jepsen project but can be used independent of Jepsen, and now I'm happy. https://github.com/jepsen-io/elle I'm writing a DB storage engine, and was despairing about how I was going to test Tx consistency for correctness, and kept coming back to Jepsen to find it was a 10,000lb entity that would require me to spend dozens of hours to get a handle on and had a lot of stuff I didn't need. But it looks like "elle" can be run entirely independent of Jepsen, fired up from my unit tests and fed a log and it will tell me how broken my code is. Nice.
In Database Isolation Is Broken and You Should Care
Speaking very loosely, primitives on the JVM are values which are represented directly in memory, instead of as pointers to objects on the heap. Clojure (again, very loosely) generally treats everything as a pointer to a heap object. There is no specialized equivalent for, say, a vector of shorts, or a map where values are floats. The compiler can emit specialized function signatures for... IIRC longs and doubles, but other types (e.g. byte, float) aren't directly accessible--they go through widening conversion. It's also easy for the compiler to quietly fail to recognize it can preserve primitives in some kinds of loops, so you wind up with what Java calls "autoboxing": wrapping a primitive in a corresponding Object type. Here's a recent example of some code in a hot path inside Elle, one of Jepsen's safety checkers. It does a lot in pri
Read the rest
mitives, using packed structures and bitmasks to avoid pointer chasing. https://github.com/jepsen-io/elle/blob/main/src/elle/BFSPath... There was actually a Clojure version of this earlier that got pretty close perf-wise, but I wound up dropping to Java for it instead: https://github.com/jepsen-io/elle/blob/913cbff5ebb19ba850c0a...
In Why is Jepsen written in Clojure?
Reading through the source of Elle: > "I cannot begin to convey the confluence of despair and laughter which I encountered over the course of three hours attempting to debug this issue. We assert that all keys have the same type, and that at most one integer type exists. If you put a mix of, say, Ints and Longs into this checker, you WILL question your fundamental beliefs about computers" [1]. I feel like Jepsen/Elle is a great argument for Clojure, reading the source is actually kind of fun. Not what you'd expect for a project like this. [1]: https://github.com/jepsen-io/elle/blob/master/src/elle/txn.c...
In Jepsen: PostgreSQL 12.3
Oh! I didn't expect this to show up here! Happy to answer questions, if folks have any. While this is on frontpage, I'd like to ask: if anyone has experience with machine proofs, I'd appreciate your help in completing a formal proof of Elle's correctness. I've been teaching myself Isabelle/HOL in an attempt to formalize the proof sketch, and I have encoded most of the formalism and properties I care about, but actually proving lemmata has been... frustrating. Like, I burned hours one one lemma because it hinged on showing \forall x :: Nat, x \in N. https://github.com/jepsen-io/elle/tree/master/proof If you'd like to work on this, my email is aphyr@jepsen.io!
In Elle: Inferring Isolation Anomalies from Experimental Observations

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.