標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

golang․org/x/sys が Go 1.20 では使えなくなっていた

コマンドプロンプトの実行中のウインドウの左上のアイコンを差し替えるパッケージ:go-windows-consoleicon

という警告が来ていたので、ライブラリをアップデートしようとしたのだけれども

> go1.20.14.exe get -u
go: upgraded golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0 => v0.31.0

> go1.20.14.exe mod tidy

> go1.20.14.exe build
golang.org/x/sys/windows: cannot compile Go 1.23 code

というエラーになってしまった。golang.org/x/sys の go.mod の履歴を確認したところ、2025年2月14日のコミット分(v0.31.0)から Go 1.23 が必須になったようだ。このパッケージは Windows 7, 8 でも動くことを保証したいので、1.20 でビルドしたいんだ。

Go言語本体の "syscall" パッケージを使うことも考えたが、"syscall" には NewLazyDLL はあっても、 NewLazySystemDLL がない。NewLazyDLL はDLLプリロード攻撃に対する脆弱性があるので、システム系のDLLに対しては使うべきではないと言われている。

仕方がないので、v0.30 の golang.org/x/sys を使うよりなさそうだ。

> go1.20.14.exe get golang.org/x/sys/windows@v0.30.0
go: upgraded golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0 => v0.30.0

> go1.20.14.exe mod tidy

> go1.20.14.exe build

こちらだとエラーはでない。だが、もうそろそろ限界が近くなってきたようだ。