アドベントカレンダー日記3日目 JuliaLang/julia/HISTORY.md の面白いところ
begin
Julialang の Repository には julia のコンパイラのコードや標準パッケージ,CI の設定や README.md などがあります.
その中に 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 なアクセスをしたいときに便利です.
ただ begin
も end
も構文中でそれぞれ別の意味をもっているので,パースが大変そうだなぁと思いました.
ちなみ 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
言語に歴史あり.
今日の日記は以上,またあしたー