JVMLSに来ています。
JVM Language Summit — July 29–31, 2019
JVMLSはJava VM Language Summitの略で、JVMで動く言語に関するイベントだったのですけど、JVM言語の話はJavaも含めて減っていて、JVMの話がメインになっています。
場所はサンタクララのOracleキャンパスで、元はSunだったところ。
これは去年の写真ですが、普段は社員しか入れないところにSunの看板が、しかも初期のロゴのものです。
技術的な内容につっこんでいくとキリがないので、気になる人は動画を見てもらって、セッションの雰囲気のメモを。
Clojure Futures
まず最初はClojureの話
IFnというクラスを中心にいろんな実装の話をしていたのですが、最初なんでiPhoneの話をしてるんだろう?って思ってしまいました。
そんなかで、constantDynamicを使う話をしてたら、JVMアーキテクトのJohn Rose氏からツッコミが入るという、JVMLSの恐ろしさをいきなり見せられてしまった。
Clojure Futures with Ghadi Shayban
Loom Update
Project Loomの話。
まずはBatemanさんからAPI関係。
tryブロックによって構造的並行化を行い、キャンセルやデッドライン・タイムアウトの処理をやるのが難しい〜という話。
あと、ThreadとFiberが両方Strandを継承するという話になっていたのですが、継承関係のない独立したクラスになるようです。
それからThreadLocalなどの話。
実装状況として、すでにJDK11、12でもちょっとずつ変更が入ってて、13ではSocketが対応するなど準備は進んでるようです。
で、登壇者交代してBackmanさんがVMの話
frameをどう保持するかって話ですが、VMのことは ようわからん。
最後にJohn Roseさんが出てきて、Fiberを集めたThreadをLoomで編んだタペストリ作ったのであとでみんなに送るね!と。
Roseさんデザインですごくかわいい。
Project Loom Update with Alan Bateman and Rickard Bäckman
Amber Workshop
ここで1階と2階にわかれてワークショップです。というか、質疑応答の時間、という感じですね。
1階ではLoom、2階でAmberですが、2階のAmberのほうに来ました。
ホワイトボードに書いていくスタイル。Amberでの言語拡張をまず並べて。
Pattern Matchingのところで、Neal Gafterさんのツッコミ。NealさんはJava Puzzlerとかやってた人で、いまはMicrosoftで.NETやってます。
だいたいこんな感じの話。
if (!(s instanceof T1 x)) { return; } // ここでxは使える?
とか
switch (s) { case instanceof T1 x1: case instanceof T2 x2: }
とか。
まあBike Shedの話だったねーとお昼ご飯のときに隣のグループの人が言ってました。だれか見てないけど、Javaのなにかを実装してる人じゃないかな。
Thread Sanitizing for Java
Thread Sanitizerの話。Googleの若手二人が登壇して、オレンジのBeylerさんは後ろから見てました。
Thread Sanitizer(TSan)はJavaのレースコンディションを見つけるものです。JEPのドラフトも出てますね。
JEP draft: Java Thread Sanitizer
デモとして、同じ変数を複数スレッドから1万回+1するコードを実行します。
TSanを有効にすると警告がたくさん。コードを修正してsynchronizedをつけると警告がなくなりました!
LLVMにはすでにTSanがあるということで、JavaのTSanもそれを利用するっぽい。
ただし、いまはまったくパフォーマンスを考えていないので、TSanを有効にすると3倍から9倍遅くなって、メモリも1.5倍から4倍使うそうな。
あと、JavaのプロダクトマネージャーのMark Reinholdさんからなんかツッコミが入ってましたね。やっぱり怖いイベントや。
Thread Sanitizing for Java with Jean Christophe Beyler, Arthur Eubanks, and Man Cao
Lunch
ランチはビュッフェです。
おいしい。
食べ終わって外にでてみると、日本ではあまり見ない雲がでてました。
Valhalla Update
Valhallaの話。
最近L2というプロトタイプが出ていろいろ試せるようになったんですが、L10でプレビューが出て、L100でSpecializationが入るのでは〜って言ってた。先の長い話や。
ベンチマークを出していたのですが、サンプルコードの最初のComplexクラスにinlineとついているのが見えます。Value Typeからinlineクラスに名前が変わったっぽい。
あとはデフォルト値の話とかNullilyの話とか。
あと、Objectクラスの下にRefObjectとValObjectが入って既存の参照型とinlineクラスがそれぞれその下に入るようなことを議論しているっぽい。
最後に、やっぱJohn Rose氏がツッコミをw。マイク係をMark Reinhold氏がやってて、時間単価高いマイク係だ!と思っていました。
Valhalla Update with Brian Goetz
Value Types in the CLR
.NETのCLRでのValuetypesの話。AgendaではValue Typesって書いてあったけど、.NETではValuetypesと空白なし小文字で書くのがただしいのかな。 最初はWrightonさん。
JavaのValue Type(いまはinlineクラス)との違いから。しかしこの人、紙を見ながら話していて、棒読みではないものの、資料繰りそこねて話してるところと表示してるものが違ってたり、どこ読んでるか見逃してしばらく止まってしまったり、プレゼン修行中ぽい感じでした。
最後にNeal Gafterさんが話を。
Value Types in the CLR with David Wrighton
Vectors and Numerics on the JVM
今日の最後のセッションはVector
最初はIvanovさんが「JohnがVector APIの話をするのでそのまえに会場をあっためておきます」とのことw
"I will warm the audience up before the John's part"
APIデザインについて、取らなかったものとそうした理由などを並べていました。
型をちゃんとつけるということで、「TypeNnnVector」という形のクラスができています。
とかやって、Roseさんのターン
デモをやってました。
あと、API一覧
そのまとめ
あとはパフォーマンスの落とし穴とかいろいろ話してたけど、あとでまとめる。。。
最後にQ&AをBrian Goetzさんと一緒にやって、そのままぐだぐだと終了。
ということで、Jyukutyoによる終わったのポーズで今日は終了です。
Vectors and the Numerics on the JVM with Vladimir Ivanov and John Rose
Dinner
参加している日本人5人で、チーズステーキバーガーが食べれるSt. John's Bar&Grillへ
こんな感じ。ジャンク感!
今回渡米したメインコンテンツである、skrbさんが写真を撮るところ、も撮れたので満足。
ということでJVMLS1日目おつかれさまでした。明日のブログはもっと適当に書きます・・・