Jane Street Summer Internship Projects: Faster JSQL, Improved Torch Bindings, and Cross-Process Memory Management

2025-08-29
Jane Street Summer Internship Projects:  Faster JSQL, Improved Torch Bindings, and Cross-Process Memory Management

Jane Street highlights three standout projects from this year's summer internship program: Leo Gagnon's JSQL evaluator, achieving hundreds of times speedup through indexing; Aryan Khatri's improved OCaml Torch bindings, leveraging OxCaml for safe and efficient GPU memory management; and Anthony Li's cross-process memory management library, eliminating serialization overhead with reference counting. These projects not only boost internal tools' efficiency but also contribute valuable code to the open-source community.

Read more
Development

Hunting a Higgs-Bugson: Debugging a Kernel-Level NFS/Kerberos Issue

2025-07-03
Hunting a Higgs-Bugson: Debugging a Kernel-Level NFS/Kerberos Issue

Engineers encountered a difficult-to-reproduce bug causing file copy failures (-EACCES) in Gord, a critical trading data system. Disabling Kerberos resolved the issue, pointing to authentication problems. Investigation revealed the kernel obtains Kerberos credentials via the rpc_gssd daemon, but logs showed no anomalies. Extensive testing, including creating an in-memory fake filesystem and using bpftrace for kernel tracing, finally pinpointed the issue: high NFS server load caused request retransmissions. The kernel mishandled requests/responses with identical XIDs but different GSS sequence numbers, leading to checksum mismatches and errors. The engineer fixed the kernel to prevent immediate retransmission due to sequence number mismatches.

Read more
Development kernel bug

Efficient Memory Representation with GADTs in OCaml

2025-05-12
Efficient Memory Representation with GADTs in OCaml

This article explores using Generalized Algebraic Data Types (GADTs) in OCaml to optimize memory representation. The author first explains the limitations of OCaml's polymorphism, particularly the space inefficiency of List.iter when handling different data types due to uniform memory representation. Attempts to create a `Compact_array` type using ordinary variants and objects fail due to type inference and memory allocation issues. Finally, using GADTs, the author successfully creates a flexible and efficient memory representation for arrays of different data types, showcasing GADTs' usefulness beyond compiler writing—particularly in high-performance applications demanding fine-grained memory control.

Read more
Development

Jane Street's Decade-Long Journey: From Jenga to Dune

2025-01-30
Jane Street's Decade-Long Journey: From Jenga to Dune

Jane Street initially built Jenga, an OCaml build system, but its limitations led to its limited adoption and even a reversal of its open-source status. They then created the simpler Jbuilder, which unexpectedly gained popularity due to its speed, eventually evolving into Dune. After years of effort, the Jane Street team successfully migrated their internal build system from Jenga to Dune for their 70 million lines of code, boosting build speeds and setting a strong foundation for Dune's future.

Read more
Development