🎉

SwiftWasm 6.1のリリースを自慢したい

に公開

ここ数年、日本語のリリースノートはサボりがちだったんですが、今回はちょっと自慢したいトピックがいくつかあるので、その部分だけ頑張って書きます。
本当に興味がある方は公式の方で出したブログをご確認ください。(https://blog.swiftwasm.org/posts/6-1-released/)

とりあえず試したい人向け: https://book.swiftwasm.org/getting-started/setup.html

全てのパッチをアップストリームしました

これまで過去5年ほどSwiftの公式リポジトリにパッチを送りつつ、フォーク上で作業をしていました。
今回のリリースでは、初めてパッチなしでアップストリームのソースをそのままビルドして配布しています。
当然今後もアップストリームがビルド可能な状態を維持するために我々がメンテナンスし続ける必要はあります。ただ、アップストリームが一旦完了したことで、PRの必須CIでWebAssembly向けのテストをチェックしてもらえるようになり、アップストリームのPRマージ後にビルドの破損に気が付くことがかなり減りました。

じつは、アップストリーム作業は2024年の3月時点で完了しており、6.0のリリースブランチでもリリースの数ヶ月前まで完全アップストリームを達成できていたんですが、リリースブランチが切られてからswift-foundationのre-core作業が6.0へバックポートされた影響でびっくりするほど追加のパッチが必要になり、その大量の修正をバックポートするのに途中で力尽きてました。

LLVM本体へのコードカバレッジサポート追加

とある大きなアプリケーションで必要になったので、WebAssemblyにコンパイルされたコードのカバレッジ計測をできるようにしました。
これによって、どうやってもネイティブにコンパイルできないようなWasm特有のコードにもカバレッジが取れるようになります。

Swiftのカバレッジ計測機能はLLVMの上で実現されています。じつはこれまでLLVM自体がWasmターゲットをサポートしていなかったので、今回LLVM側にサポートを追加しました。
これによってC/C++などの他の言語ツールチェインでもカバレッジ計測できるはずです。フリーランチをお楽しみください。

https://github.com/llvm/llvm-project/pull/111332

おわりに

今回のリリースではそれなりに大きなマイルストーンを達成できましたが、まだまだやるべきことはたくさんあります。正式な公式プラットフォーム化への道筋や、JavaScriptとのInteroperabilityの強化、パフォーマンス改善など、本当に山積みです。

ぜひ触ってみて、何か気づいた点や改善点があればコントリビューションをお待ちしています。

Discussion