Rust 1.94.1がリリース、WASM・Windows・Clippyの3つのリグレッションとCargo依存クレートのCVEを修正

リリースの概要 Rustプロジェクトは2026年3月26日、Rust 1.94.1をリリースした。これはRust 1.94.0で発生した3つのリグレッションを修正するメンテナンスリリースであり、加えてCargoが依存するtarクレートに発見されたセキュリティ脆弱性(CVE-2026-33055およびCVE-2026-33056)への対応も含まれている。1.94.0ユーザーには速やかなアップデートが推奨されており、rustup update stableコマンドで更新できる。 修正された3つのリグレッション 1つ目は、WebAssembly(wasm32-wasip1-threads)環境におけるstd::thread::spawnの不具合修正だ。1.94.0ではWASMスレッド対応に問題が発生しており、PR #153634によってスレッド生成機能が正常に動作するよう復旧された。 2つ目は、Windows API互換性に関する問題である。std::os::windows::fs::OpenOptionsExtトレイトに追加された新しい不安定メソッドが、デフォルト実装を持たないためトレイトの後方互換性を破壊していた。PR #153491によりこれらの不安定メソッドの追加がリバートされた。 3つ目は、Clippyのmatch_same_armsリントにおける内部コンパイラエラー(ICE)の修正だ。特定のパターンマッチ構文でClippyがクラッシュする問題がPR #16685で解消された。 セキュリティ修正とその他の対応 セキュリティ面では、Cargoが使用するtarクレートがバージョン0.4.45に更新され、CVE-2026-33055およびCVE-2026-33056に対応した。ただし、crates.ioのユーザーはこれらの脆弱性の影響を受けないとされている。このほか、FreeBSD環境における証明書関連の問題に対応するため、curl-sysがバージョン0.4.83にダウングレードされる修正(PR #16787)も含まれている。

March 29, 2026

Java 26正式リリース、HTTP/3対応やAOTキャッシュの全GC対応など10件のJEPを搭載

概要 Oracleは2026年3月17日、Java 26(JDK 26)を正式リリースした。JDK 25に続く非LTS(Long-Term Support)リリースとして、10件のJEP(Java Enhancement Proposal)が含まれている。そのうち5件はプレビューまたはインキュベーター段階の機能であり、残り5件が新規または確定済みの変更となる。近年のJavaリリースの中では比較的コンパクトなリリースだが、HTTP/3対応やGCの改善など実用的な機能強化が盛り込まれた。 搭載された10件のJEP 言語機能 JEP 500: Prepare to Make Final Mean Final — finalキーワードの意味をより厳密にするための準備。ディープリフレクションによるfinalフィールドの変更に対して警告が発せられるようになり、将来的には例外がスローされる予定。 JEP 525: Structured Concurrency(第6プレビュー) — タスク階層とリソース管理を通じて、より明確で保守しやすい並行処理コードを記述できる構造化された並行性パターンの改良を継続。 JEP 530: Primitive Types in Patterns, instanceof, and switch(第4プレビュー) — パターンマッチングをプリミティブ型に拡張し、条件分岐をより表現力豊かに記述可能にする。無条件の正確性の定義強化やswitch構文でのドミナンスチェックの厳格化が変更点。 ライブラリ改善 JEP 517: HTTP/3 for the HTTP Client API — 標準のHTTP Client APIにHTTP/3プロトコルのサポートを追加。最新のプロトコル標準を利用可能にする。 JEP 524: PEM Encodings of Cryptographic Objects(第2プレビュー) — 暗号鍵、証明書、証明書失効リストをPEM形式でエンコードするAPIを提供。PEMRecordクラスがPEMにリネームされ、KeyPairやPKCS8EncodedKeySpecクラスの暗号化・復号化サポートが強化された。 JEP 526: Lazy Constants(第2プレビュー) — 最大1回だけ初期化される不変の値ホルダーである「計算定数」を導入。finalフィールドのパフォーマンスと安全性の利点を持ちつつ、初期化タイミングの柔軟性を提供する。前回の「Stable Values」から名称が変更された。 パフォーマンス向上 JEP 516: Ahead-of-Time Object Caching with Any GC — JDK 24で提供されたJEP 483(Ahead-of-Time Class Loading & Linking)を拡張し、低レイテンシのZGCを含むすべてのガベージコレクタで起動時間とウォームアップ時間を改善。Project Leydenの一環。 JEP 522: G1 GC: Improve Throughput by Reducing Synchronization — G1ガベージコレクタの同期オーバーヘッドを削減し、スループットを向上させる最適化。 その他 JEP 529: Vector API(第11インキュベーター) — ベクトル計算を最適なCPU命令にコンパイルするVector APIの11回目のインキュベーション。Project Valhallaの機能が利用可能になった時点でプレビューに移行予定。 JEP 504: Remove the Applet API — JDK 9およびJDK 17で非推奨化されていたApplet APIを完全に削除。ブラウザアプレットの時代の終焉を反映した変更。 今後の展望 次期リリースのJDK 27は2026年9月のGAリリースが予定されている。現時点でターゲットされているJEPとして、JEP 527(Post-Quantum Hybrid Key Exchange for TLS 1.3)がある。また、Lazy Constantsの第3プレビューやProject Valhallaに基づくValue Classes and Objects(プレビュー)なども候補として挙がっている。BellSoftもLibericaJDK 26をリリースしており、OpenJDKからの2,665件を含む合計2,825件の修正が含まれるなど、Javaエコシステム全体がJDK 26への対応を進めている。

March 28, 2026

TypeScript 6.0正式リリース、JavaScript実装最後のメジャー版でGo製7.0への橋渡しに

概要 Microsoftは2026年3月23日、TypeScript 6.0を正式にリリースした。本バージョンは、現行のJavaScriptで書かれたコンパイラによる最後のメジャーリリースであり、Go言語で全面的に再実装される次期TypeScript 7.0(Project Corsa)への「橋渡し」となる重要なリリースと位置付けられている。プリンシパルプロダクトマネージャーのDaniel Rosenwasser氏は「TypeScript 7.0は完成に極めて近い状態にある」と述べ、6.0を導入したプロジェクトにはネイティブプレビュー版の7.0も試すよう呼びかけている。 主な新機能と改善点 TypeScript 6.0では、ES2025ターゲットのサポートが追加され、RegExp.escape()、Temporal API(Stage 4到達)、Promise.try、Iteratorメソッド、Setメソッドなどの型定義が利用可能になった。特にTemporal APIは、JavaScriptにおける日付・時刻処理の長年の課題を解決するものとして注目されており、Temporal.Now.instant()などの操作がTypeScriptの型安全性のもとで利用できるようになる。ブラウザ側ではFirefox 139以降、Chrome 144以降で対応している。 型推論の面では、thisを使用しない関数における文脈依存性が緩和され、プロパティの宣言順序に関係なく型パラメータの推論が改善された。また、ジェネリックJSX式における関数式の型チェックも強化されている。モジュール解決では、Node.js 20以降で利用可能な#/プレフィックスによるサブパスインポートのサポートや、--moduleResolution bundlerと--module commonjsの組み合わせが可能になった。DOM型ライブラリでは、dom.iterableとdom.asynciterableの内容がdomに統合され、設定がシンプルになった。 デフォルト設定の大幅な変更 6.0ではデフォルト設定が大きく変更されている。strictがデフォルトでtrueに、moduleがesnextに、targetがes2025にそれぞれ変更された。また、typesがデフォルトで空配列となり@typesパッケージの自動検出が行われなくなったため、"types": ["node"]などの明示的な指定が必要になる。rootDirもデフォルトで.(tsconfig.jsonのあるディレクトリ)に固定され、推論されなくなった。 非推奨機能とTypeScript 7.0への移行 多くのレガシーオプションが非推奨または削除された。target: es5、--moduleResolution node(nodenextやbundlerへの移行を推奨)、--baseUrlなどは非推奨となり、一時的に"ignoreDeprecations": "6.0"で抑制できるが、7.0では完全に削除される予定だ。一方、--module amd/umd/systemjsや--outFileは6.0で既に削除されている。また、import assertion構文(assert)の非推奨がimport()呼び出しにも拡大され、with構文への移行が求められる。 7.0への移行を支援する--stableTypeOrderingフラグも導入された。6.0では型IDが出現順に割り当てられるが、7.0では決定論的なコンテンツベースのソートが採用されるため、このフラグで事前に挙動を揃えることができる。ただし型チェックが最大25%遅くなるため、あくまで診断用途であり、本番利用は推奨されていない。TypeScript 7.0のネイティブプレビューはVisual Studio Code拡張およびnpmパッケージ(@typescript/native-preview)として既に利用可能で、ネイティブコード速度と共有メモリマルチスレッドによる大幅なパフォーマンス向上が期待されている。

March 28, 2026

PHP、25年来の独自ライセンスからBSD 3条項ライセンスへ統一へ――投票は49対0で圧倒的支持

概要 PHPプロジェクトは、長年にわたって使用されてきた独自の二重ライセンス構造を廃止し、広く認知されたBSD 3条項ライセンス(Modified BSD License)に統一するRFC(Request for Comments)の投票を行っている。Ben Ramseyが主導するこの提案は、2026年4月4日まで投票が続けられており、現時点で賛成49票、反対0票、棄権2票と圧倒的な支持を集めている。採択には3分の2以上の賛成が必要だが、事実上可決は確実な情勢だ。 現行ライセンスの問題点 PHPは現在、コードベースの大部分をカバーするPHP License v3.01と、Zend/ディレクトリに適用されるZend Engine License v2.00という2つの独自ライセンスを使用している。この構造は2006年から続いているが、いくつかの深刻な問題を抱えていた。PHP License v3.01は2020年にOSIのレガシー承認プロセスを通じて承認されたものの、標準的な審査ではなく歴史的使用実績に基づく承認であった。Zend Engine License v2.00に至ってはOSI承認すら存在しない。さらに両ライセンスはGPLと互換性がなく、商用採用の障壁となっていた。Debianがこのライセンス下のPHP拡張機能の配布を拒否する事例も複数発生しており、ディストリビューターやコントリビューターに混乱をもたらしてきた。 なぜBSD 3条項ライセンスなのか RFCの分析によると、現行の両ライセンスから条件4・5・6(PHP GroupやPerforce固有の条項)を除去すると、残る条件1〜3はBSD 3条項ライセンスと同一になる。つまり、ユーザーやコントリビューターの権利を一切変更することなく、OSI承認済みかつGPL互換の標準ライセンスに移行できるという理論的根拠がある。FSF(Free Software Foundation)もBSD 3条項ライセンスをGPL互換の自由ソフトウェアライセンスとして認定しており、これにより他のOSSプロジェクトとの親和性が大幅に向上する。 歴史的経緯 PHPのライセンスの複雑さは、プロジェクトの長い歴史に根差している。PHP 1〜2はGPLv2でライセンスされていたが、PHP 3でGPLv2とApacheスタイルのカスタムライセンスの二重ライセンスに移行。PHP 4以降は、Richard Stallmanとの論争を経て独自のPHP Licenseに切り替えられた。Zend Engineには、共同創設者のAndi Gutmansが「Zend EngineはPHP以外の製品でも使用できるように設計された」と説明したように、スタンドアロンでの商用利用の余地を残すため別個のライセンスが設けられた。しかし25年の歳月を経て「両者は分離できないほど密接に絡み合っている」状態となり、別ライセンスの意義は失われていた。 合意形成と今後の影響 ライセンス変更にあたっては、PHP Groupの全メンバー(Rasmus Lerdorf、Andi Gutmans、Zeev Suraskiら10名)の承認と、Zend Licenseの権利を持つPerforce Software社からの法的な同意書が取得済みである。実装はphp-srcおよびweb-phpのプルリクエストとして既に準備されており、LICENSEファイルの置き換え、ソースファイルヘッダーの更新、ウェブサイトドキュメントの修正が含まれる。既存のPHP License v3.01で公開されている拡張機能は、アップグレード条項に基づき任意でBSD 3条項ライセンスへ移行可能だ。なお、PHPマニュアルはCreative Commons Attribution 3.0のまま変更されない。四半世紀にわたるライセンスの混乱が解消されることで、PHPエコシステム全体の法的明確性と他プロジェクトとの互換性が大きく改善されることが期待される。

March 27, 2026