おさかなせいざ

おさかなせいざ

プログラミングメモや日記がわりに

アドベントカレンダー日記3日目 JuliaLang/julia/HISTORY.md の面白いところ

adventar.org

begin

Julialang の Repository には julia のコンパイラのコードや標準パッケージ,CI の設定や README.md などがあります.

github.com

その中に NEWS.md と HISTORY.md というのがあって,NEWS.md には現在開発中のバージョンで追加された情報が追加されていき, バージョンあげます!と区切りがつけられたところで NEWS.md の内容が HISTORY.md に移され NEWS.md は真っ白になります. 今はこんな感じです.

https://github.com/JuliaLang/julia/blob/master/NEWS.md

https://github.com/JuliaLang/julia/blob/master/HISTORY.md

なので HISTORY.md を見れば julia の歴史が垣間見えるわけです. 今日はその中から自分が面白いと思ったところをピックアップしてみます.

いってみよう

以下では投稿時点で最新のハッシュを参照しています

v0.4

A custom triple-quoted string like x"""...""" no longer invokes an x_mstr macro

julia では macro x_str(x) x*x end と定義すると x"hoge"@x_str "hoge" の糖衣構文として使うことができます. 正規表現で使う r"" もこのように定義定義されています. なので help? で検索するときには ?@r_str と調べないとでてきません. この時までは triplet string 用に @x_mstr が定義されていたのが @x_str と一緒でいいとなったようです. 仕様を整えていっている様子が伺えますね.

v0.5

moved from Base to the Primes.jl package

AtCoder の julia で使えるライブラリである Primes.jl は最初 Base に含まれていたのが Combinatorics.jl と同時に別パッケージとして分けられたようです. Stdlib にもっていくだけでもよかったかなとも思いますが,どこまでを標準のライブラリとして含めるかって難しいですよね. あまりたくさん入れ過ぎても言語コアの規模が大きくなってしまいますしね.

v0.7

Nullable{T} has been deprecated and moved to the Nullables package

Nullable 他言語で見覚えがある人もいると思います. julia だと Union{T,Nothing} が代わりに使われている印象です. たしか v1.0 のころ Nullable が使われている julia のコードを見てどのパッケージを使ってるのか調べたとき, julia には Nullable が標準ではないんだなと思った覚えがありますがあったんですね. ここで Some が追加されたようですがまったく使ったことがないです.

古いコードを動かしたくて Nullable が必要なら以下のパッケージを使うようです.ただその場合は古いバージョンの julia を使えばいいという話もあります.

GitHub - JuliaAttic/Nullables.jl: Nullable type for Julia > 0.6

このバージョンでめちゃくちゃ Deprecated or removed されて整理されてますね.

v1.0.0

Julia v1.0.0 Release Notes

記念すべきはじめ?の Long Term support である v1.0.0 です. あまりアップデートの内容はありません. v0.7 の内容で正式バージョンにできるけどいろいろ変わるから一旦 v0.7 で体を慣らしてから v1.0 に来てね,という感じでした.

v1.2

UniformScaling instances are now callable such that e.g. I(3)

単位行列 I が導入されました. この出たあたり行列でDCTの計算してたのでめっちゃ便利でした.

v1.4

a[begin] can now be used

このときより前から a[end] とか a[1:end] で配列の最後の要素にアクセスできたんですけどその反対,最初の要素のアクセスに導入されたのが begin です. 0-index なアクセスをしたいときに便利です. ただ beginend も構文中でそれぞれ別の意味をもっているので,パースが大変そうだなぁと思いました. ちなみ julia のパースは flisp という lisp が行っています.

julia/julia-parser.scm at master · JuliaLang/julia · GitHub

v1.7

x√y and x∛y

10*√2 を 10√2 と素直に数式らしく書けるようになりました. とても julia っぽくて好きです.

あと全体的に julia は記号めちゃくちゃ追加していってるんで,増えすぎると把握できんくなりそうでちょっと困りそうですね.

end

言語に歴史あり.

今日の日記は以上,またあしたー