Julia 1.13 のハイライト

2026/09/10 21:27

Julia 1.13 のハイライト

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Julia 1.13 がリリースされ、回帰と課題を特定することに焦点を当てたテスターおよびコントリビューターからの大きな貢献が反映されています。今回のアップデートは、特に起動時間とパッケージの前コンパイルにおいて劇的なパフォーマンス向上をもたらします。ベンチマークによると、パッケージの読み込みはバージョン 1.12 に比べて約 30% 速く(LTS の 1.10 に比べて約 10-20% 速く)、アプリケーションの起動時間は 1.12 に比べて約 20% 向上しており、平均的なスピードアップ率は約 1.22 倍です。これらの改善は、AbstractString および数値型に対して RapidhashNano を採用したことであり、イメージオブジェクトのマーキングをスキップしてフルコレクション時間を短縮した強化された garbage collection、そして新しいデフォルトのハッシュングアルゴリズムという技術的なアップデートによって実現されています。より迅速な開発ワークフローを支援するために、重要なバグ修正により Ctrl-C を通じた割り込み処理がより信頼性高く、タスクのカANCEL mechanisms が改善されました。また、リリースには REPL に直接組み込まれる貴重な開発者ツールが含まれます:内部実装による構文ハイライトは OhMyREPL.jl などの外部パッケージの必要性を排除し、新しい fzf スタイルの履歴検索(Ctrl-R)がファジー検索と複数結果の選択、そして REPL モードの表示をサポートします。また、Windows では効率的なテキスト入力を可能にする括弧付きペースト機能も利用可能です。診断機能をさらに強化するために、「--trace-eval」フラグにより、テストスイートやスクリプトでの停滞を特定しながらトップレベルの評価進捗を監視することができ、新しい「@FUNCTION」マクロは「#self#」の代替としてパブリック API として機能します。さらに、イントロスペクションマクロは型の付いた呼び出し式を受け付けるようになり、Time To First X(TTFX)モニタリングは 2026 年 9 月 7 日より稼働開始される新しい CI ジョブを通じて Julia の開発プロセスの一部として統合されました。これらの改善は、テスト時や大規模スクリプト実行時の待ち時間を大幅に削減し、個人のコントリビューターおよびエンタープライズチームの両方に対して全体の生産性を高め、より速いフィードバックループを提供します。

Text to translate:

Julia version 1.13 has been released with significant contributions from testers and contributors focused on identifying regressions and issues. The update delivers dramatic performance improvements, particularly in startup times and package precompilation. Benchmarks indicate that loading packages is now roughly 30% faster than in version 1.12 (and roughly 10-20% faster than 1.10 LTS), while application startup times have improved by approximately 20% over 1.12, with a mean speedup of ~1.22x. These gains are driven by technical updates including the adoption of RapidhashNano for AbstractString and numeric types, enhanced garbage collection that skips marking image objects to reduce full collection time, and new default hashing algorithms. To support this faster development workflow, critical bug fixes ensure more reliable interrupt handling via Ctrl-C and improved task cancellation mechanisms. The release also introduces valuable developer tools directly into the REPL: built-in syntax highlighting replaces the need for external packages like OhMyREPL.jl, a new fzf-style history search (Ctrl-R) supports fuzzy searching with multiple result selection and REPL mode indication, and bracketed paste functionality is now available on Windows for efficient text input. Further enhancing diagnostics, the

--trace-eval
flag allows users to monitor top-level evaluation progress to identify hangs in test suites or scripts, while a new
@__FUNCTION__
macro serves as a public API alternative to
#self#
. Additionally, introspection macros now accept call expressions with types, and Time To First X (TTFX) monitoring is now an integrated part of Julia's development process through new CI jobs, going live on September 7, 2026. Collectively, these improvements significantly reduce wait times during testing or large-scale script execution, thereby boosting overall productivity and providing faster feedback loops for both individual contributors and enterprise teams.

本文

Julia 1.13 リリースハイライト

Julia 1.13 がリリースされました。このリリースへの貢献者全員の皆様に、またプレリリース期間中に尽力してくださったテスターの皆様に心から感謝申し上げます。

リリースハイライト

主な変更点は以下の通りです:

  • 遅延 (TTFX) の改善
    • パッケージの予彙込み(precompile)時間を大幅に削減。
  • REPL の改良
    • 外部パッケージなしでのシンタックスハイライト機能搭載。
    • fzf スタイルの新しい履歴検索機能の実装。
    • Windows における括弧付きペースト機能の追加。
  • コア機能の強化
    • @__FUNCTION__
      マクロの導入。
    • ハッシュ化アルゴリズムの変更(RapidhashNano 採用)。
    • イメージオブジェクトをスキップした高速ガベージコレクション (GC)。
    • Scheduler と中断処理に関する修正。
    • 型注釈を用いた内部状態の省察機能強化。
  • Pkg エコシステムの進化
    • デフォルト圧縮アルゴリズムの gzip から zstd への変更。
    • 全体の動作パフォーマンス向上。
    • マニフェスト管理機能とソースコード収集機能の強化。
    • pkg> add
      コマンドの挙動変更(ロード済みパッケージへの優先適用)。
  • ツール・インフラ
    • JuliaC/trim の更新。
    • トップレベル評価追跡機能 (
      --trace-eval
      ) の追加。
    • Juliaup 用グラフィカルユーザインタフェース (GUI) の実装。

遅延 (TTFX) の改善

貢献者:Ian Butterworth および他の方々

Julia 1.13 では、パッケージの予彙込み時間をバージョン 1.12 より約 30% 短縮し、マシン条件によっては LTS バージョン 1.10 よりも 10-20% 高速化しました。

「最初の X までに要する時間 (TTFX)」は、起動から結果を得るまでの時間を指し、主に以下の 3 コストで構成されます:

  1. パッケージの予彙込み
  2. ロード処理
  3. コードの実行

コミュニティワークフロー(Julia-TTFX-Snippets)を活用し、以下のベンチマーク結果が得られました。グラフは 39 つのワークフローの幾何平均値を示しており、2 回の予彙込み試行中最良の結果を採用しています。

% hyperfine --warmup 3 --runs 20 -N \
  --command-name "julia 1.12" "julia +1.12 --startup-file=no -e ''" \
  --command-name "julia 1.13" "julia +1.13 --startup-file=no -e ''"

Benchmark 1: julia 1.12
  Time (mean ± σ):      69.1 ms ±   1.0 ms    [User: 50.1 ms, System: 18.1 ms]
  Range (min … max):    68.0 ms …  72.6 ms    20 runs

Benchmark 2: julia 1.13
  Time (mean ± σ):      56.7 ms ±   0.5 ms    [User: 49.1 ms, System: 18.9 ms]
  Range (min … max):    56.0 ms …  58.1 ms    20 runs

Summary
  julia 1.13 ran
    1.22 ± 0.02 times faster than julia 1.12

このモニタリングは今後、開発プロセスの一部として継続され、結果は perf.julialang.org/ttfx で追跡されます。


REPL の改良

シンタックスハイライト (Syntax highlighting)

貢献者:Timothy, Kristoffer Carlsson

Julia の REPL は、外部パッケージ(

OhMyREPL.jl
など)をロードしなくてもシンタックスハイライト機能を使用可能になりました。 デフォルトは比較的色彩控えめですが、REPL のドキュメント を参照してカスタマイズ可能です。

新しい fzf スタイルの履歴検索

貢献者:Timothy

Ctrl-R
キーによる履歴検索機能が再設計され、コマンドラインファインダ
fzf
に似た動作を実装しました。 以下の機能をサポートします:

  • 履歴内のフューズィ(あいまい)検索
  • コマンドが使用した REPL モードの表示
  • 複数の検索結果を選択してプロンプトバッファへの挿入
  • REPL と同期されたコードハイライト

検索画面内で

?
を入力するとヘルプ情報を確認できます。

Windows における括弧付きペースト機能

貢献者:JuliaLang Core

Linux/macOS に次いで Windows でも「括弧付きペースト機能 (Bracketed paste)」が利用可能になりました。 この機能により、ターミナル上でテキストが「ペーストされた状態」と「タイピングされた状態」を区別でき、処理の効率と精度が向上します。


@__FUNCTION__
マクロ

貢献者:Miles Cranmer, Jeff Bezanson

既存の

@__MODULE__
@__FILE__
と同様に、新しい
@__FUNCTION__
マクロ
は、匿名関数であっても最内側の包含されている関数を参照します。 これにより、内部変数
#self#
のように使用制限のあるものではなく、パブリック APIとして利用可能です。

julia> fact = n -> n <= 1 ? 1 : n * @__FUNCTION__()(n - 1);

julia> fact(5)
120

ハッシュ化の変更

貢献者:Andy Dienes, Jameson Nash

ハッシュ関数が入れ替わり、バイトハッシュアルゴリズムは RapidhashNano に変更されました。

AbstractString
BigInt
などの多くの数値型でデフォルトで使用され、カスタムタイプの変換処理が不要になりやすくしました。

既存の

MurmurHash3
実装と比較した際の利点:

  • 大幅なパフォーマンス向上(ストリーミングハッシュのため入力長さの事前把握不要)。
  • C から純粋な Julia へ移行し、保守性・可読性が向上。

パフォーマンス改善例 (長文字列)

using BenchmarkTools, Downloads

io = IOBuffer()
Downloads.download("https://www.gutenberg.org/cache/epub/1080/pg1080.txt", io)
s = String(take!(io));

# 1.12
@btime hash(s)
  8.555 μs (0 allocations: 0 bytes)

# 1.13
@btime hash(s)
  1.742 μs (0 allocations: 0 bytes)

パフォーマンス改善例 (フォールバック実装)

struct MyString <: AbstractString
    s::String
end
m = MyString(s);

# 1.12
Base.iterate(m::MyString) = iterate(m.s)
Base.iterate(m::MyString, i::Integer) = iterate(m.s, i)
@btime hash(m)
  204.583 μs (21 allocations: 107.02 KiB)

# 1.13
Base.codeunit(m::MyString) = codeunit(m.s)
Base.codeunits(m::MyString) = codeunits(m.s)
@btime hash(m)
  1.750 μs (0 allocations: 0 bytes)

重要な注意点

  • ハッシュは依然として 非暗号的 です。
  • デフォルトのシード値も変更されました。
  • カスタムハッシュメソッドでは、常に
    hash(x::MyType, h::UInt)
    のように引数でシードを受け取る必要があります。

イメージオブジェクトをスキップした高速な GC

貢献者:Cody Tapscott

システムイメージからロードされた多数のオブジェクトは、一度解放されることなく永久にマークされた状態です。これにより、完全なガベージコレクション(GC)のコストが劇的に削減されました。 プログラムによって実際に Heap に作成されたサイズに合わせて GC コストがスケールするため、大規模なパッケージをロードしたセッションでも効率的になります。

比較結果:完全なコレクション (
GC.gc()
)

# 1.12
julia> @time GC.gc()
  0.035493 seconds (99.90% gc time)

# 1.13
julia> @time GC.gc()
  0.000528 seconds (99.08% gc time)

Apple M4 Pro における完全なコレクション (

GC.gc(true)
) の比較(ロード後のサイズ増加時):

シーン1.121.13
裸セッション35 ms2 ms
using Revise
50 ms11 ms
using Cthulhu
59 ms18 ms
using PythonCall
90 ms30 ms
using GLMakie
187 ms68 ms

実運用例:大規模データ処理

function work(n)
    d = Dict{Int,Vector{Float64}}()
    for i in 1:n
        d[i % 50_000] = rand(64)
    end
    return length(d)
end

# 1.12
julia> @time work(5_000_000)
  1.699095 seconds (10.00 M allocations: 2.688 GiB, 79.80% gc time)

# 1.13
julia> @time work(5_000_000)
  0.566276 seconds (10.00 M allocations: 2.688 GiB, 44.32% gc time)

Scheduler と中断処理の修正

貢献者:Kiran Pamnany, Jameson Nash, Ian Butterworth

アイドル状態のスレッドは、完了したタスクを保持するのではなく、専用スケジューラタスクへ駐車するため、ガベージコレクションが速行されました。これに伴う信頼性向上の修正も適用されています。

  • 中断処理:
    Ctrl+C
    が再びユーザーコードに到達し、スリープや IO ブロック状態でも動作します(issue #62665)。
  • REPL 耐性: 繰り返されるタイミングの悪い
    Ctrl+C
    入力にも耐えられます。
  • @spawn
    の最適化
    : 現在ロードされているすべてのスレッドを覚醒させるのではなく、1 つのアイドルスレッドのみを覚醒させます(issue #61826)。
    • macOS では改善なし。
    • Linux (16 コア) で 1.1-1.6 倍の高速化。
    • Windows および過剰予約マシンで 10-300 倍の高速化。
  • バグ修正: タスク喪失およびデッドロック競合状態の修正を行いました。

型注釈を用いた省察機能 (Introspection)

コード省察マクロ (

@which
,
@code_typed
,
@code_warntype
など) は、今や値ではなく型として与えられた引数を持つ呼び出し式を受け付けるようになりました。 メソッド定義で使用される同じ
::T
構文を利用できます。

julia> @which push!(::Vector{Int}, 1)
push!(a::Vector{T}, item) where T
     @ Base array.jl:1339

julia> @which sort!(::Vector{Int}; by = ::Function)
kwcall(::NamedTuple, ::typeof(sort!), v::AbstractVector{T}) where T
     @ Base.Sort sort.jl:1734

これにより、スタックトレースからフレームをそのままコピーして

@which
に貼り付けることで、呼ばれたメソッドを見つけることが容易になります。ブロードキャスト式もサポートされています。

julia> @code_warntype (::Vector{Int}) .+ 1.0

トップレベルの評価追跡 (
--trace-eval
)

貢献者:Ian Butterworth

新しいコマンドラインフラグ

--trace-eval
は、トップレベルの評価の進行状況を表示します。テストスイートやスクリプトの実行時、ハングアップ(停止)などを特定するのに役立ちます。

% julia --trace-eval script.jl
eval: #= /Users/me/.julia/config/startup.jl:1 =#
eval: #= /Users/me/.julia/config/startup.jl:2 =#
eval: #= /Users/me/.julia/config/startup.jl:3 =#
eval: #= script.jl:1 =#
eval: #= script.jl:2 =#
Hello world

CI 実行(例:GitHub Actions)のデバッグロギングオプションをオンにした場合、自動的に有効になります。


JuliaC/trim

貢献者:Cody Tapscott および他の方々

juliac.jl
スクリプトは正式パッケージ JuliaC.jl に変更されました。

  • トリムできるコードの範囲が拡大(ファイナライザー、
    @cfunction
    、mapreduce などを含む)。
  • トリムプロセス自体のバグ修正により信頼性が向上。

Pkg の進化

貢献者:Kristoffer Carlsson

デフォルト圧縮アルゴリズムの変更 (gzip → zstd)

パッケージサーバーからのダウンロードにおいて、デフォルトで

zstd
圧縮されたアーカイブを使用します。 これにより、より良い圧縮率と展開パフォーマンスが得られます(例:Plots, Makie, ModelingToolkit)。

アルゴリズムダウンロードサイズ合計展開時間合計平均展開時間
gzip (旧)307.99 MB21.98 ms-
zstd (新)239.31 MB13.77 ms-

※ zstd はサイズ縮小と展開速度の両面で優れています。

パフォーマンス向上

Resolver およびレジストリ処理のマクロ最適化により、Pkg 全体の動作が高速化しました。 空の環境に

Plots
を追加・削除を繰り返すベンチマーク結果(1.12.1 vs 1.13.0):

  • 1.12.1: 1.257 秒 (8.83 M allocations)
  • 1.13.0: 0.745 秒 (4.43 M allocations)

また、リポジトリのクローン効率が向上し、不要なデータのダウンロードが削減されました。

  • 1.12.1:
    Pkg.add
    が 10.95 秒かかる場合がある。
  • 1.13.0: 2.98 秒で完了。

マニフェスト管理機能の強化

パッケージが由来したレジストリがマニフェストに記録され、必要な場合のみ自動的にインストールされます。

ソースの再帰的収集

URL で取得されたパッケージから

[sources]
エントリを再帰的に収集し、プライベート依存チェーンも解決可能になりました。

pkg> add
の挙動変更

ロード済みパッケージのバージョンが優先されるようになりました。 これにより、境界角のような不具合(予彙込みの繰り返し)を防ぎ、コンパチビリティ制約を満たすバージョンを安定的に利用できます。

Pkg.test
のデフォルト動作変更

以前はテストプロセスで常に

--check-bounds=yes
が有効化されました。 今や 境界チェックモードを変更せず、親セッションから継承し、既存の予彙込みファイルを再利用します。 より厳密な検証が必要な場合は、明示的に
Pkg.test(; julia_args=["--check-bounds=yes"])
を使用してください。


Juliaup GUI

貢献者:Ian Butterworth

Juliaup はコマンドラインに加え、グラフィカルユーザインタフェース (GUI) を備えるようになりました(Ver 1.22 以降)。

juliaup gui
  • インストール済みタブ: インストール済みチャンネルをタイルまたはリスト表示。起動、環境変数設定、更新、削除が可能。
  • データベースタブ: リリース、LTS、RC、Nightly、PR チャンネルなどをリストし、インストール可能。既存のバイナリとのリンクもサポート。
  • 設定タブ: 更新間隔や自動自己更新などの設定を開示。

同じ日のほかのニュース

一覧に戻る →

2026/09/14 6:06

Claude Fable 5.1 が、370年もの間解読されてこなかったシフラル・ディスティッヒを解読しました

## Japanese Translation: Claude AI が、ロイヤリストのトマス・アークハート(*Logopandecteision* および *The Jewel* の作品)から提示された 2 つの歴史的に未解決のカギ合を成功裏に解読し、ブルートフォース計算や人類による事前の解読なしに、王チャールズ 2 世への隠された祈りを明らかにしました。これらのカギ合は、既知の解法が存在せず、CIA などの組織によってこれまで追求されたことがなかったため、特に選ばれました。大規模なデータ処理ではなく、モデルは単純で埋め込まれた構造的ロジックを認識しました:一方のカギ合は、各数字をアークハートの 32 の「Proquiritations」内の単語インデックスにマッピングし、他方は *The Jewel* のページインデックスに数字をマッピングし、それらのページの最初の一語の頭文字を採用します。これにより、「O GOD UPHOLD KING CHARLS THE SECOND / MAKE HIM THE SUPREME RULER OF THIS LAND」という 2 つのロイヤリストの祈りと、「GREAT LORD, MANTAINE THAT REGAL FAMILIE / WHEREOF KING CHARLS THE SECOND IS THE HEAD...」という ottava rima 形式の祈りが得られ、写本エラー、ハイフン接続語、ページシフトオフセット、および *The Jewel* の不読み可能なセグメントによる軽微な不一致を除いて正確です。検証の結果、275 の位置のうち 231 が正確な最初の単語の一致を示しています。1652 年版の *Jewel* のフリーデジタル画像が存在しないため、残りの不明点を解決するには実物コピーまたはジャック&ライアルの 1983 年版が必要です。この成果は、高度な AI が以前見過ごされてきた微妙な構造的パターンを検出することで歴史的真実を明らかにすることを示しており、暗号解析を計算的なブルートフォースからパターン認識へ転換しました。

2026/09/14 2:37

Google はなぜ依然として不適切な広告を表示し続けているのでしょうか?

## Japanese Translation: Google の高度な AI モデルである Gemini は、iOS システムアラートのパロディを用いてユーザーをクリックさせるよう誘導する欺瞞的な YouTube 広告を特定しました。オペレーティングシステムのダイアログを模倣した広告を禁止する厳格なポリシーが存在にもかかわらず、この誤解を招くクリエイティブは複数回のユーザー苦情にもかかわらず人間による審査官によって以前承認されていました。広告は非機能のボタンを用いて緊急のハードウェア故障状態を偽造し、視聴者にデバイスが直ちに技術的危機に直面しているという錯覚を成功裡に抱かせました。この操作は虚偽表示に関する基本的なルールに違反し、プラットフォームの安全メカニズムに対するユーザーの信頼を損ないます。したがって、Google はクリエイティブコンテンツを即座に承認停止するよう推奨し、ポリシー違反警告を発出することを示唆しています。広告主がこの種の欺瞞的な実践を継続した場合、アカウントの完全な停止のリスクに直面します。この事例は、人間による監視と自動検知の間にある重大なギャップを浮き彫りにしており、Google はこれらの洗練された詐欺を特定できる強力な AI を保有していますが、システムはまだ有害コンテンツがユーザーに到達する前に能動的にブロックするためにそれらを完全に活用していないという状況です。

2026/09/14 5:33

[脆弱性のあるルーターがウイスコンシン大学のインターネット時間サーバーを洪水状にした]

## Japanese Translation: 2003 年 5 月、ウイスコンシン大学マディソン校は、公開 NTP サーバー(128.105.39.11)を標的とした大規模な流入トラフィック洪水に直面した。この事象は悪意のある DDoS 攻撃ではなく、低価格の Netgear ルーター(特に RP614、MR814、DG814 ファミリー)における設計上の欠陥によって引き起こされたものである。これらの欠陥デバイスでは、大学のサーバー IP アドレスがハードコーディングされており、固定の UDP ソースポート番号(23457)を使用しており、世界中で 707,147 台以上の影響を受けた機器が何十万というユニークなソースホストを生成した。洪水は 2003 年 5 月 14 日頃に始まり、数ヶ月にわたって継続し、WiscNet の境界ルーターでのアップストリームブロックを必要とした。 問題の解決のため、Netgear の従業員、大学のスタッフ、および独立した専門家からなるレビューチームが結成された。大学は、Anycast NTP サービスの導入や IP ブロックによるリクエスト抑制など、様々な解決策を検討したが、Netgear は最終的にコード上の欠陥を認め、ユーザーが時刻サーバーの問い合わせを行う前に DNS 設定を手動で構成する必要のあるファームウェアアップグレード(例:v5.13 RC7)との交渉を開始した。この事象は、2003 年に SMC ルーターがオーストラリアの CSIRO サーバーを洪水させた類似のエピソードと類似している。この状況は、廉価なコンシューマ電子機器における深刻なセキュリティリスクを浮き彫りにし、交渉期間中も間欠的に大規模な洪水が発生していたにもかかわらず、2003 年 8 月時点で Netgear のサービス劣化と評判への損害を引き起こした。FAQ では、メディア報道に続いて製造元の責任、製品ライフサイクルの見積もり、およびウェブトラフィックに対する更なる影響について扱われた。

Julia 1.13 のハイライト | そっか~ニュース