PaperCall is shutting down on August 31, 2026. Existing events and submissions will remain available until then. New events can no longer be created.

JVM上で動くPython処理系cafebabepyの実装詳解

By yotchang4s (Yoshiaki Shibutani)

Elevator Pitch

cafebabepyというJVM上で動くPython3処理系を実装しています。 本セッションではPython3の言語仕様に悪戦苦闘し、どのように実装していったのかをお話します。

Description

cafebabepyというJVM上で動くPython3処理系の実装

cafebabepyというJVM上で動くPython3処理系を実装しています。 本セッションではPython3の言語仕様に悪戦苦闘し、どのように実装していったのかをお話します。 言語実装の苦しさや楽しさ、そしてPythonの美しい言語設計、処理系がどのように動いているかについてを共有をしたいと考えております。 cafebabeとはJavaクラスファイルのマジックナンバーです。 JVM上で動くJythonは2.7(2015年)で更新が止まっているため、じゃあ作るか! というのが実装している理由です。

基本の流れ

  1. PythonのAST(抽象構文木)を作成する話。
  2. ASTから実際に処理を実行する話。
  3. PythonとJavaの境界線の実装。
  4. 実装における躓きポイント。
  5. Pythonのちょっとだけ深い言語仕様。

上記以外に関係のある小ネタがあれば入れます。

Notes

本セッションについて

トークも資料も日本語です。

リポジトリ

https://github.com/cafebabepy/cafebabepy

登壇経歴

  1. PyCon JP 2017 LT Pythonが動く仕組み(の概要)
  2. JJUG CCC 2017 Fall JVM上で動くPython処理系実装のススメ (https://www.wantedly.com/companies/f-code/post_articles/92729
  3. ScalaMatsuri 2018 もしScala初心者がMonoidを投げ込まれたら (https://2018.scalamatsuri.org/ja/candidates/YoshiakiShibutani_2/
  4. ScalaMatsuri 2018 アンカンファレンス JVM上で動く Python処理系を作ってるよ