Richard Eisenberg on Jane Street's OCaml Experiments

Jane Street's compiler team is exploring unboxed types, locality modes, and data-race-free parallelism to make OCaml's performance and memory management better suited to its needs.

RERichard Eisenberg登壇者 · Jane Street
チャンネル
Jane Street
公開日
2024年3月13日
動画
3:30
読了時間
2 分
原文
英語
YouTube で開く
スクロールすると動画は右下に小さくなって再生を続けます。字幕は閲覧言語に合わせて切り替わります。
閲覧言語2 言語で読めます
この記事はまだ日本語に翻訳されていないため、英語の原文を表示しています。
要約

30 秒でわかる

Richard Eisenberg, a software engineer on Jane Street's compiler team, introduces the OCaml Unboxed video series. He explains why Jane Street values OCaml's strong typing, functional style, and predictable performance, and outlines three areas where the team is working to improve the language.

  1. 1Why OCamlJane Street uses OCaml for almost everything. Eisenberg values the assurance of strong typing, a functional style he finds close to how people think, and predictable performance.
  2. 2The memory-management tradeoffFloating-point values can require heap allocation and subsequent garbage collection. The team wants OCaml's reasoning power with more of the performance and memory-management characteristics of C, C++, or Rust.
  3. 3Unboxed typesUnboxed types would let floating-point values and other types be placed directly on the stack, avoiding separate memory management for those values.
  4. 4Locality modesModes controlling locality would allow more allocations to be placed on the stack and automatically released when their lifetimes follow the appropriate stack structure.
  5. 5Data-race-free parallelismThe team is adding language features intended to detect and prevent data races, making it possible to write fast parallel code without worrying about conflicting access.

ポイント

  1. Jane Street uses OCaml broadly, valuing its strong typing, functional style, and predictable performance.
  2. Heap allocation and garbage collection for values such as floating-point numbers can impose unwanted memory-management costs.
  3. Unboxed types aim to let values such as floating-point numbers be placed on the stack without separate heap allocation.
  4. Locality modes can allow stack allocation when the lifetime of an allocation follows the right stack structure.
  5. The team is exploring language features to detect and prevent data races while enabling fast parallel code.
全文

チャプターごとに整えた全文を読む

文字起こしのみ
01

Why Jane Street uses OCaml

Eisenberg introduces the compiler team's work and explains the appeal of strong typing, functional programming, and predictable performance. Jane Street uses the language for almost everything.

I'm Richard Eisenberg, a software engineer at Jane Street, where I work on the OCaml compiler. Our compiler team is making a series of videos about some of the things we're working on. We use the OCaml programming language for just about everything at Jane Street.

OCaml is a strongly typed functional programming language. Strong typing gives us a high degree of assurance about the correctness of our programs. Its functional style offers a different way of programming that works well for us and, I think, is closer to the way many people think.

Another nice thing about OCaml is its predictable performance. When we write a program, we know roughly how fast it will run and that it will continue to run that fast. Even so, there are areas where a language that already suits our needs could be a little better.

02

The case for better memory management

Some floating-point values require heap allocation and garbage collection. The team wants to combine OCaml's ability to support reasoning with performance and memory-management characteristics associated with lower-level languages.

Memory management is one example. A floating-point number can require us to allocate information on the heap and then come back and garbage collect it. We want to combine the power and ability to reason that OCaml gives us with some of the performance and memory-management characteristics of C, C++, or Rust.

Our compiler team is working on improvements in three main areas. The first is unboxed types: these would let us put a floating-point number directly on the stack, without having to manage a separate heap allocation for it. The same idea can apply to many other types as well.

03

Unboxed types and locality

Unboxed types could put values such as floats directly on the stack. Locality modes would also make more stack allocation possible when allocation lifetimes follow the right structure.

We're also introducing a system of modes, some of which control locality and allow more stack allocation. Even with unboxed types, we may still need to allocate memory. If we know when it should be deallocated and its lifetime follows the right stack structure, that can happen automatically without garbage collection, which can sometimes slow us down.

04

Parallelism without data races

The team is working on language features to detect and prevent conflicting access between threads. Eisenberg introduces the series as an exploration of these and other innovations.

The third area is data-race-free parallelism. Running multiple threads at once can be dangerous if one thread edits the same data as another and their operations conflict. We want language features that detect and prevent those data races, so we can write fast parallel code without worrying about them.

The OCaml Unboxed series will explain these innovations and others we're working on at Jane Street. I hope you enjoy it.

同じチャンネルの記事

1:48:29EN
JSJane Street· 2026年10月16日How AI Is Changing Programming: John Krazit and Ron MinskyRon Minsky, John Krazit · Jane StreetJane Street’s AI tooling lead and the Signals and Threads host examine agent infrastructure, security, code review and the changing experience of writing software.コーディングエージェントDeveloper productivity評価(Evals)+2
1:36:37EN
JSJane Street· 2026年9月23日Aaron Bauer on Teaching Software Engineering in the Age of AIRon Minsky, Aaron Bauer · Jane StreetHow learning goals, active practice and editor design shape engineering education when models can generate the code.AI in EducationSoftware engineeringEducation+2
スライド 9 枚1:05:45EN
JSJane Street· 2026年9月11日Cyrus Omar on Live Programming and a Computational Commons for Humans and AICyrus OmarA demonstration of Hazel shows how immediate feedback, structured collaboration and carefully scoped permissions could support people and AI agents working together.Programming LanguagesHuman-AI Collaboration開発ワークフローとテスト+2
1:25:00EN
JSJane Street· 2026年9月2日Eric Mannes on Turning Messy External Data Into Trading ResearchRon, Eric Mannes · Jane StreetFrom commodity futures and an Excel risk system to point-in-time datasets and AI, Eric Mannes explains the domain knowledge behind data engineering at Jane Street.Data quality & curation開発ワークフローとテストInvesting+2
スライド 7 枚1:16:29EN
JSJane Street· 2026年8月26日Grant Sanderson and Alok Puranik: Positional Encodings Through Group TheoryGrant Sanderson, Alok Puranik · 3Blue1BrownStarting with assumptions about attention, they derive matrix exponentials and connect rotations, decay and Jordan blocks to RoPE and ALiBi.Transformers & attentionMathematics機械学習の基礎+1
4:41EN
JSJane Street· 2026年7月6日Inside Jane Street’s Internship: Projects, Mentorship and LearningCody · Jane StreetInterns and employees describe collaborative interviews, learning finance from the basics, and working on projects used by the firm.CareersCompany CultureMachine Learning+1