以下の内容はhttps://ujimushisradjp.hatenablog.jp/entry/2024/08/30/212909より取得しました。


Julia言語雑感(2024年8月)

色々あってあまりJulia言語の記事が書けてませんでしたが,久しぶりに独断と偏見で最近のJulia言語的 ポジショントークをしたいと思います。

Julia バージョン1.10.5リリース

次期LTSとの噂(というかほぼ決定)の高いバージョン1.10.xの最新版,1.10.5がリリースされました。 基本的にバグフィックスなので,特に追加で説明することもないでしょう。

Julia言語今年の8月のTIOBE Indexは32位

昨年の8月は初の20位になる(日本語での紹介記事の例)など, 例年JuliaConの後は順位が上がる傾向のあるTIOBE Indexですが, 今回8月は32位でした。

ただそれだけなのですが,個人的に注目していたのでやや残念です。

今回のJuliaConはユーザーが一番多いアメリカ国内でなくユーロッパでの開催だったので,その点昨年と比較すると やや注目度が下がったとかあったのでしょうか?

LoopVectorization.jlは1.11までOK。1.12以降は対応未定…

前回紹介した時にはあまり理解していなかったのですが, LoopVectorization.jlで 懸念だったイシュー#526は, VectorizationBase.jl#109で 4月に既に解決していて,とりあえず1.11までは動作することが確認されているようです。

ただ,1.12以降のJulia言語本体の大きな変更に追随ができてないのは変わらずなのですが, LoopVectorization.jlに依存したパッケージの多い, SciMLの方から,LoopVectorizationのJulia 1.12変更への対応に対して ささかやな懸賞金 が出るようです。

1.12以降もLoopVectorizationがサポートされるかどうか,動向を追うだけでも十分サスペンスとして楽しめそうです。

ちょっと気の効いた「About.jl」パッケージ

Julia Discourseの記事を見ていて,ちょっと面白いと思ったパッケージが About.jlで,ただ一つabout()という関数だけなのですが, なかなかこれが気が効いているというか…

モジュールを引数とした出力は次のような感じです。 exportした型や関数の一覧が出力されるので,どんなものが使えるかが分かりやすいです。 julia言語のREPLのhelpモードと組み合わせると良さそうです。

julia> using DataFrames, About

julia> about(DataFrames)
Module DataFrames [a93c6f00-e57d-5684-b7b6-d8193f3e46c0]
  Version 1.6.1 loaded from ~/.julia/packages/DataFrames/58MUJ

Directly depends on 23 packages (+21 indirectly):
• Statistics (+6)    • PrecompileTools (+3)         • DataStructures (+2)  • Printf             
• InlineStrings      • REPL (+2)                    • Compat (+4)          • Markdown (+1)      
• Random (+1)        • InvertedIndices              • Tables (+2)          • PrettyTables (+3)  
• SortingAlgorithms  • LinearAlgebra (+5)           • Unicode              • Reexport           
• PooledArrays       • Missings                     • DataAPI              • SentinelArrays (+1)
• TableTraits        • IteratorInterfaceExtensions  • Future             

Exports 45 names:
• DataFrames        • fillcombinations  • mapcols!   • subset             • Between         
• aggregate         • flatten           • nonunique  • subset!            • ByRow           
• allowmissing!     • groupby           • order      • transform          • Cols            
• by                • groupcols         • proprow    • transform!         • DataFrame       
• combine           • groupindices      • rename     • unstack            • DataFrameRow    
• completecases     • insertcols        • rename!    • valuecols          • GroupedDataFrame
• disallowmissing!  • insertcols!       • repeat!    • AbstractDataFrame  • InvertedIndex   
• dropmissing       • leftjoin!         • select     • All                • Not             
• dropmissing!      • mapcols           • select!    • AsTable            • SubDataFrame    

Re-exports 43 names (from Base, Core, DataAPI, InvertedIndices, Missings, PrettyTables, Tables):
• InvertedIndices  • colmetadata!        • emptycolmetadata!  • metadatakeys     • rownumber       
• Missings         • colmetadatakeys     • emptymetadata!     • missings         • semijoin        
• PrettyTables     • columnindex         • emptymissing       • missingsmallest  • skipmissings    
• Tables           • crossjoin           • innerjoin          • ncol             • unique!         
• allcombinations  • delete!             • ismissing          • nonmissingtype   • Missing         
• allowmissing     • deletecolmetadata!  • leftjoin           • nrow             • MissingException
• antijoin         • deletemetadata!     • levels             • outerjoin        • missing         
• coalesce         • describe            • metadata           • passmissing    
• colmetadata      • disallowmissing     • metadata!          • rightjoin      

ユニコードの文字を引数とすると次のような感じです。 個人的にこれは地味に嬉しい出力です。

ユニコードutf-8の出力ってよく分からなかったので,これは有用な気がします。 冷静によくよく考えるとあまり使わないかもしれませんが。

ただ,罫線が半角文字幅でないとうまく表示ができないようですね。

julia> about('新')
Char (<: AbstractChar <: Any), occupies 4B.

     ┌6─┐   ┌5─┐┌──B──┐┌0─┐   
 11100110 10010110 10110000 00000000 
 └─0xe6─┘ └─0x96─┘ └─0xb0─┘ └─0x00─┘
 = U+65B0

 Unicode '新', category: Letter, other (Lo)

円周率をFloat64に変換したものを引数とした表示が次の通りです。

julia> about(Float64(π))
Float64 (<: AbstractFloat <: Real <: Number <: Any), occupies 8B.

 0100000000001001001000011111101101010100010001000010110100011000 
 ╨└────┬────┘└────────────────────────┬─────────────────────────┘
 +    2^1   ×                1.570796326794896558                
 = 3.1415926535897931

こちらも罫線が半角文字幅でないとうまく表示ができないようです。

以上のように,コードリーディングのちょっとしたツールとして利用できる感じのモジュールです。 通常の利用では動作が遅くなったりするようなので,依存しているモジュールや, ちょっとした興味で調べたい時とかに役立ちそうです。

JuliaCon 2024のYouTube動画がちょこちょこ更新中

YouTubeのプレイリスト, The 11th Annual JuliaCon(Eindhoven) に未発表の動画やら,タイトル別の動画がちょこちょこ更新されていっているようです。

ちょこちょこリストを確認して,見ようと思っていたタイトルの動画があるか確認してみては?

今月のまとめ

そろそろ1.11のリリース間近(rc3)といったところで,1.10.5のリリースがありました。 来月頃には1.11が正式リリースされているでしょうか?

最近あまりJulia言語に関する記事が書けていませんが,もう少し書けたらいいなと(色々な意味で)思う今日この頃です。




以上の内容はhttps://ujimushisradjp.hatenablog.jp/entry/2024/08/30/212909より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14