Jane Street Sommerpraktika-Projekte: Schnelleres JSQL, verbesserte Torch-Bindings und verteilter Speicher

2025-08-29
Jane Street Sommerpraktika-Projekte: Schnelleres JSQL, verbesserte Torch-Bindings und verteilter Speicher

Jane Street hebt drei herausragende Projekte aus dem diesjährigen Sommerpraktikum hervor: Leo Gagnons JSQL-Evaluator, der durch Indexierung eine bis zu hundertfache Beschleunigung erreicht; Aryans Khatris verbesserte OCaml-Torch-Bindings, die OxCaml für eine sichere und effiziente GPU-Speicherverwaltung nutzen; und Anthony Lis Bibliothek für verteilten Speicher, die Serialisierungsaufwand durch Referenzzählung eliminiert. Diese Projekte steigern nicht nur die Effizienz interner Tools, sondern liefern auch wertvollen Code für die Open-Source-Community.

Mehr lesen
Entwicklung

Jagd auf einen Higgs-Bugson: Debugging eines Kernel-Level-Problems mit NFS/Kerberos

2025-07-03
Jagd auf einen Higgs-Bugson: Debugging eines Kernel-Level-Problems mit NFS/Kerberos

Ingenieure stießen auf einen schwer reproduzierbaren Bug, der zu Fehlern beim Kopieren von Dateien (-EACCES) in Gord, einem kritischen System für Handelsdaten, führte. Das Deaktivieren von Kerberos behob das Problem, was auf Authentifizierungsprobleme hinwies. Untersuchungen ergaben, dass der Kernel Kerberos-Anmeldeinformationen über den rpc_gssd-Daemon erhält, die Logs jedoch keine Anomalien zeigten. Umfangreiche Tests, einschließlich der Erstellung eines Fake-Dateisystems im Speicher und der Verwendung von bpftrace zur Kernel-Tracing, führten schließlich zur Identifizierung des Problems: Hohe Last auf dem NFS-Server führte zu erneuten Übertragungen von Anfragen. Der Kernel verarbeitete Anfragen/Antworten mit identischen XIDs, aber unterschiedlichen GSS-Sequenznummern falsch, was zu Prüfsummenfehlern und Fehlern führte. Der Ingenieur korrigierte den Kernel, um sofortige erneute Übertragungen aufgrund von Sequenznummern-Diskrepanzen zu verhindern.

Mehr lesen
Entwicklung Kernel-Bug

Effiziente Speicherrepräsentation mit GADTs in OCaml

2025-05-12
Effiziente Speicherrepräsentation mit GADTs in OCaml

Dieser Artikel untersucht die Verwendung von Generalized Algebraic Data Types (GADTs) in OCaml zur Optimierung der Speicherrepräsentation. Der Autor erklärt zunächst die Einschränkungen des Polymorphismus in OCaml, insbesondere die Ineffizienz von List.iter bei der Behandlung verschiedener Datentypen aufgrund der einheitlichen Speicherrepräsentation. Versuche, einen `Compact_array`-Typ mithilfe gewöhnlicher Varianten und Objekte zu erstellen, scheitern aufgrund von Problemen mit der Typinferenz und der Speicherzuweisung. Schließlich erstellt der Autor mithilfe von GADTs erfolgreich eine flexible und effiziente Speicherrepräsentation für Arrays verschiedener Datentypen und zeigt damit die Nützlichkeit von GADTs über das Schreiben von Compilern hinaus auf, insbesondere in Hochleistungsanwendungen, die eine präzise Speicherkontrolle erfordern.

Mehr lesen
Entwicklung

Jane Streets zehnjährige Reise: Von Jenga zu Dune

2025-01-30
Jane Streets zehnjährige Reise: Von Jenga zu Dune

Jane Street entwickelte zunächst Jenga, ein OCaml-Build-System, aber seine Einschränkungen führten zu einer begrenzten Akzeptanz und sogar zur Rücknahme des Open-Source-Status. Anschließend entwickelten sie das einfachere Jbuilder, das unerwartet aufgrund seiner Geschwindigkeit populär wurde und sich schließlich zu Dune entwickelte. Nach jahrelanger Arbeit migrierte das Jane Street-Team erfolgreich sein internes Build-System von Jenga zu Dune für seine 70 Millionen Codezeilen, was die Build-Geschwindigkeit erhöhte und eine solide Grundlage für die zukünftige Entwicklung von Dune schuf.

Mehr lesen
Entwicklung