Julia v1.11.0 リリース
Julia言語の最新バージョン,v1.11.0が2024年10月9日にリリースされました。 それと同時に,v1.10がLTSになることが伝えられています。
v1.11は待望のリリースではあるのですが,1.10から内部が大幅に変更されていて,
最速インストールした方々から1.11は1.10より遅いんじゃね?とかの声も多々あるようです。
これは,1.9や1.10の初実行の高速化や一度実行したコードのバイナリキャッシュの効果がよく出来ていて,1.11の内部コンパイラの変更の影響で やや遅くなっていることだと思うのですが,ベンチマークでもms単位なので,本当かどうかよく分かりません。
それ以外にも1.11に関する話題がdiscourseに多く投稿されていて,いつも以上にバージョンアップ時の動かない協奏曲の様相を呈しているようです。
なお個人的には会社のPCでは,急ぎの業務が入っているので1.10のままで,家のPCは1.11を使ってみようかと思っています。
家で使って目につくのはREPL実行時の補完機能ですかね。 それ以外はあまり使っていないのでよく分かりません。
Julia v1.11.1 リリース
とか何とか言っている間(2024年10月16日)にv1.11.1がリリースされました。
わりとJulia言語のリリースではよくある感じですが,1.10の時とかと比べると間隔が短いような気がします。 でも注目度も高い感じでjulia discourseにも「v1.11になってから…」っていう投稿が多いような気がします。
Julia v1.10.6(LTS)リリース
この記事を公開しようとした直前(2024年10月28日)に,現行LTSの最新版v1.10.6がリリースされました。今月はリリースてんこもりですね。
OhMyREPLが1.11になったら自動起動できない?
v1.11リリースの話題に関係するのですが,
discourseでStartup.jl error with OhMyREPL.jl as of v1.11という記事がありました。
公式が例示しているコードで自動起動したらエラーになるというもの。
頭にusing Pkgをつけたらうまくいったよ
というのが解決策のようです。
ただ,startup.jlに直にusing OhMyREPLならいけるんですよね。私の家の環境では普通に起動しているので。原因はPkgがJulia本体の外のパッケージになったことが関係しているのだとか。
公式が示している通りにしないで,実行環境を汚すことに無頓着だといけるとか,不思議な世界です。
Julia Tokai 20th
Julia Tokai #20が10/14(月)に開催されたようです。祭日だったのをうっかり勘違いしていましたが, 私はJuliaのコミュニティ規約が守れない人なので,参加は難しいところです。
さて,発表資料Julia 新 LTS v1.10 解説が公開されていて, これがかなり参考になります。
CIではだいたい最新版とLTSで動かすことが多いので,LTSが1.10になったことによってパッケージ開発者の負担も変わります。 1.6はネィティブキャッシュが効かないなど,現行のバージョンと 機能の乖離が少しあったのでパッケージ開発者としてはかなり楽になるのではないかと思います。
普段使いの人は1.11を使うと思うので,主なターゲットはCIでLTSバージョンでテストを動かすパッケージ開発者だとは思うのですが, 私的には知らない機能がたくさん(ほとんど)ありました。
公式ドキュメント見るのも面倒なので,こういうまとまった内容の記事は私的にはすごく役に立ちます。
Julia言語で今さら知った文法
プロパティ分割代入
struct Point2d x y end
という構造体があった時に,
pt = Point2d(1, 2)
というのがあってptのx, yプロパティについて同じ名前の変数に
(; x, y) = pt
という書き方で代入できるというものです。
構造体でなく名前付きタプルでもできるので,たくさんプロパティがある中,数個取り出す時とは 便利に使えそうです。
Julia言語には他の言語からするとえっ,こんな書き方できるの?ずるいと思う文法がありますが,
それが一つ増えたとも言えそうです。
for文の変数とかを_とする書き方
この_はループの中の文では参照しない時に使います。
for _ in 1:10 ... end
これを知らずにLanguageServerのチェックとかで,forの変数を使ってないよとか言われて困った時があったのですが,
この時に_を使うとOKということになります。
その他map関数とか色々使うケースがあると思います。
個人的なこと
以前から強腕でmozcのローマ字入力テーブルを作成して漢直を使っているのですが, メンテナンスしやすいようにツールをjulia言語で作成中です。 mozcのローマ字入力テーブルを利用して漢直を使う方法は以前次のような日記で言及したものです。
- T-code's night 第九夜 「漢直 Everywhere !!」 Google日本語入力でT-code
- T-code's night 第十夜 「あの頂を目指せ」 三角が出なければ部首合成じゃない
- T-code’s night 第十一夜 「ちょっとだけ漢直 for Everyone」 Yet Another入力
- T-code’s night 第十二夜 「メリークリスマスはT-codeで入力」 クリスマスプレゼント
強腕でローマ字テーブルを作ったのですが部首合成等の追加が難しいので, 部首合成のテーブルを分ける等を考えています。
やっつけの変換フィルターな感じですが,Julia言語だと少ない記述で実現できるのは 嬉しいところ。
また,作っている状況とかこの日記に残していくかもしれません。
さいごに
discourseでも話題になっていますが,Julia言語の場合結構メジャーなパッケージであってもメンテナンスが 滞っているものが散見され,かなり問題になってきています。
Julia言語本体についてはJuliaHubが大きくバックアップしてあまり問題になることはないですが, パッケージについては相対的に弱い感じがします。
今たくさんあるJulia言語のパッケージが継続的にメンテナンスされていくのかどうか, github上で風化してしまうのか,興味を持って見ていきたいところです。