Zig v0.13.0 リリース⚡
イントロ
Zig v0.13.0がリリースされたみたいです。めでたいですね!⚡⚡⚡
Zigといえば、アップデートのたびに破壊的変更がまだ入る言語です。今回はv0.12.0との違いに注目して、v0.13.0での変更点をかる〜くだけ見ていきましょう。
概要
- リリース日: 2024.06.07
-
リリースノート
- ちなみにZigのリリースノートはv0.12.0には破壊的変更やAPIの変更点については列挙されなくなりました。試してみるまで分からない、それがZigです。
変更点
基本的な変更点についてはリリースノートを参照してください。ここでは、v0.12.0からのマイグレーションの際に気をつける必要がある点や、個人的に気になった点だけをピックアップしています。
LazyPath
が.path
フィールドを削除
std.Build.LazyPath
(ソース)から.path
フィールドが削除された模様です。LazyPath
といえばソースファイルのパスを指定する際などに以下のように使うことが出来ていました:
# v0.12.0
dwarf_exe = b.addExecutable(.{
.name = "out",
.root_source_file = .{ .path = "src/main.zig" },
});
v0.13.0では素直にstd.Build.path()
を使いましょう:
dwarf_exe = b.addExecutable(.{
.name = "main",
.root_source_file = b.path("src/main.zig"),
});
zig-cache
が.zig-cache
に改名
Zig v0.12.0までビルド生成物はビルドツリーのルートのzig-cache
に置かれてきました。これがv0.13.0からは.zig-cache
に置かれるようになります。ドットが付きました、可愛いですね。
皆様におかれましては、.gitignore
を更新するのをお忘れなきよう。
glibc 2.39のサポート
クロスコンパイルの際にglibc 2.39を使うことができるようになったらしいです。因みにZigはlibcをたくさん同包しています。
というか、もうglibcって2.39なんですね...。ちょっと前に2.32か出たと思ってました。
std.debug.getStderrMutex()
がdeprecatedに
std.debug.getStderrMutex()
がdeprecatedになりました。その代わりに、std.debug.lockStdErr()
のようにロックを取るためのメソッドが生えました。一手間消えて嬉しいですね:
# v0.12.0
std.debug.getStderrMutex().lock();
# v0.13.0
std.debug.lockStdErr()
LLVMが18に
LLVMが18.1.7になりました。
その影響なのかわからないけど、ELFヘッダに.relro_padding
というセクションヘッダが追加されていることに気が付きました。LLD18からこういうセクションが入るようになったとか、なっていないとか...。
アウトロ
正直(自分に関係する範囲で)そんなに大きな変更はないかな〜という感じです。破壊的変更も、このくらいは可愛いものですね。
他の変更点で何かこれは気をつけておけというものがあれば、教えてください。
それでは、しば犬を撫でようと思います。
Discussion