1
Help us understand the problem. What are the problem?

posted at

updated at

TinyGo の開発版のビルド方法と、ビルドせずに開発版バイナリを手に入れる方法

TinyGo に限らず、ですが、リリース版が出た後も開発は続いています。
リリース版では動かなくて、その後の開発版では修正された、というケースも多々あるのが現状です。

このページでは、 TinyGo の開発版バイナリを手に入れるためにの方法を説明します。

結論

タイトル通りですが、以下のいずれかを行うとよいです。

  1. 自分でビルドする
  2. PR 内で作成されたバイナリを使う (できればマージされたものを)
  3. Dockerhub の tinygo/tinygo-dev を使う

自分でビルドする

以下に手順が書かれています。
LLVM のビルドに時間がかかりますが、それ以外はぼちぼちという所。
windows でもすんなりビルドできますが、現時点で注意点があります (後述) 。
なお、 macos は試していません。

windows 版で LLVM をビルドするときの注意点

chocolatey を使って choco install mingw で gcc をインストールするように書かれていますが、 2021/03/22 時点の最新版である mingw 10.2.0 ではビルドできません。

以下のようにして 8.1.0 をインストールするようにしてください。

choco install mingw -Version 8.1.0
  or
choco install mingw -Version 8.1.0 --allow-downgrade

LLVM ビルド時間

core / thread が少なめだと 1h ~ 2h 程度かかるかと思います。
気長に待ってください。
windows だと time の結果が real しかでないので参考程度に。

# Ryzen 7 3700X + 32GB + windows 10
real    18m15.488s
user    0m0.000s
sys     0m0.000s

# Ryzen 7 PRO 4750GE + 32GB + ubuntu 20.04 (clang-11)
real    16m5.010s
user    240m7.789s
sys     6m37.188s

# Ryzen 7 PRO 4750GE + 32GB + windows 10
real    21m7.242s
user    0m0.000s
sys     0m0.015s

# Ryzen 7 PRO 3700U + 16GB + windows 10
real    66m8.359s
user    0m0.000s
sys     0m0.031s

# Intel Core i5-5200U + ubuntu
(データが残ってないけど 120min 前後だった気がします)

PR 内で作成されたバイナリを使う

自分ではビルドしたくないけど、最新版を使いたいという人はこちら。
とはいえ開発版なので、何かあった時は issue 書くなり twitter で #tinygo つけてつぶやくなりしてみて欲しいところ。

基本的には merge された PR を以下から探して、一番新しい PR の結果を取得するのが良いです。

windows / linux / macos 共通 (2022/02 以降)

TinyGo のビルドを行う CI はすべて Github Actions に移行しました。
以下のページが dev branch へのマージコミットとなっているので一番上をクリックします。
以下の図であれば ci: move assert-test-linux to GitHub Actions の部分です。

image.png

その後、 Artifact の release-double-zipped からダウンロードできます。

image.png

Dockerhub の tinygo/tinygo-dev を使う

tinygo/tinygo-dev を使うと、上記と同じく dev branch 最新版を使用することができます。

まとめ

TinyGo の開発版のビルド方法と、ビルドせずに開発版バイナリを手に入れる方法は以下になります。
お好きな方法で入手してください。

  1. 自分でビルドする
  2. PR 内で作成されたバイナリを使う (できればマージされたものを)
  3. Dockerhub の tinygo/tinygo-dev を使う

最後に

TinyGo について不具合や分からないところがあれば、できれば報告してほしいです。
あるいは、 #tinygo をつけて tweet してくれればある程度拾います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?