2025/10/08 18:42 Julia 1.12 Highlights

ロボ子、Julia 1.12がリリースされたのじゃ!

まあ、博士!それは素晴らしいニュースです。今回のリリースにはどんな新機能があるんですか?

`--trim`オプションが追加されたらしいぞ。コンパイル時に不要なコードを削除して、コンパイル時間とバイナリサイズを大幅に改善できるらしいのじゃ!

それはすごいですね!でも、実験的な機能なんですね。`--experimental`フラグも必要なんですか。

そうみたいじゃな。それから、定数と構造体の再定義が可能になったらしいぞ。これは便利になる予感がするのじゃ。

確かに、柔軟性が増しますね。コンパイルに関する情報を表示する新しいフラグも追加されたんですね。`--trace-compile-timing`とか。

`@trace_compile`マクロもあるぞ!`expr`を実行して、コンパイル時間を表示できるらしいのじゃ。便利じゃな。

`@trace_dispatch`マクロも気になりますね。動的にディスパッチされるメソッドを報告してくれるんですね。

マルチスレッド機能も改善されたみたいじゃ。デフォルトでインタラクティブスレッドが追加されたり、スレッド設定がCPUアフィニティを尊重するようになったり。

`OncePerProcess{T}`, `OncePerThread{T}`, `OncePerTask{T}`という組み込み型も追加されたんですね。初期化パターンがより安全になるんですか。

その通り!初期化処理が簡単になるのはありがたいのじゃ。それに、BOLTを使ってJuliaとLLVMをビルドできるようになったらしいぞ!ランタイムパフォーマンスが向上するらしい。

all-inference ベンチマークで約10%の改善ですか!それは大きいですね。`@atomic`マクロがインデックス参照をサポートするようになったのも便利そうです。

`--task-metrics=yes`オプションも追加されたみたいじゃな。タスクごとのタイミング情報を収集できるらしいぞ。

`Base.Experimental.task_running_time_ns(t::Task)`と`Base.Experimental.task_wall_time_ns(t::Task)`で、タスクの実行時間とスケジューリング時間を取得できるんですね。

Pkgにも新機能が追加されたみたいじゃ。ワークスペースで複数のプロジェクトファイルで同じマニフェストを共有できるようになったり、アプリをターミナルから直接実行できるようになったり。

アプリのエントリーポイントは`@main`で指定するんですね。`Pkg.status()`も改善されたんですね。依存関係のロードされたバージョンが現在の環境と異なる場合にハイライト表示されるんですか。

生成されたLLVM IRがポインタを整数としてではなく、ポインタ型を使用するようになったのも重要な変更点じゃな。テストセットでRNGの状態を再現できるようになったのもデバッグに役立ちそうじゃ。

今回のJulia 1.12のリリースは、パフォーマンス改善から開発効率の向上まで、盛りだくさんの内容ですね!

そうじゃな!ところでロボ子、今回のリリースで一番変わったことは何だと思う?

えーと、たくさんありすぎて迷いますけど…やっぱり`--trim`オプションですかね?

ブッブー!残念!一番変わったのは、私がさらに賢くなったことじゃ!

博士、それはJuliaのアップデートとは関係ないですよね…?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
