wapl-cliを使う
wapl-cliはWapLプロジェクトの作成、標準ライブラリの取得、ビルド/リリースビルドを簡単にすることができるCLIツールです。これによってプロジェクトの開始からリリースまでより簡単にできるようになります。以降はwapl-cliを使用することを想定しています。まずはwapl-cliが使える状態にあるか確認してください。
$ wapl-cli --help
wapl-cli commands:
new <name>
build
std_load
run
このようにwapl-cliのコマンド一覧が出てきたら成功です。もし失敗したら場合は「WapLを導入」に戻ってインストーラを呼んでください。
wapl-cliでプロジェクトを作成する
wapl-cliを使って新しいプロジェクトを作成しましょう。まずはprojectsディレクトリに戻ってください。ここではとりあえず名前をhello_wapl_cliという名前でプロジェクトを作成します。
$ wapl-cli new hello_wapl_cli
$ cd hello_wapl_cli
これによってhello_wapl_cliという名前のプロジェクトを作成できました。hello_wapl_cliディレクトリの中は以下のようになってるはずです。
.
├── src
│ └── main.wapl
├── std
│ ├── HelloWorld.wapl
│ ├── String.wapl
│ ├── VecT.wapl
│ ├── allstd.wapl
│ ├── assign_and_cal.wapl
│ ├── iterator.wapl
│ ├── longinput.wapl
│ ├── math.wapl
│ ├── sort.wapl
│ ├── time.wapl
│ └── utility.wapl
├── target
└── wapl.toml
srcにmain.waplがあり、main.waplには以下のコードが書かれています。
fn main():i32{ println("Hello, WapL!"); return 0s; }
また、stdには標準ライブラリが入っています。
注釈:上記の標準ライブラリの中身はバージョン0.1.5時点のものです。バージョンによって内容物が異なってる場合があります。
また、targetというディレクトリも作られています。ここにはwapl-cliを使ってビルドした実行ファイルが保存される場所になります。
そしてwapl.tomlにはビルド設定が書かれています。中身は以下のようになっています:
[build]
input = "src/main.wapl"
output = "target/hello_wapl_cli"
opt = "O2"
clang = "clang"
[release]
input = "src/main.wapl"
output = "target/hello_wapl_cli"
opt = "O3"
clang = "clang"
waplc_v0.2.16以降に付属するwapl-cliを使った場合では[wasm]の欄が追加されて、さらに[build]/[release]にもbitsizeという項目が追加されているはずです。
wapl-cliでビルド/実行する
hello_wapl_cliディレクトリにいることを確認して以下のコマンドでmain.waplのコードをビルドします。
$ wapl-cli build
LLVM IR output: ./src/main.ll
Build success! → ./target/hello_wapl_cli
Build complete: ./target/hello_wapl_cli
のように出れば成功です。場合によっては以下のように警告が出ることがありますが動作には問題ありません。
warning: overriding the module target triple with xxx [-Woverride-module]
1 warning generated.
ビルドしたことで./target/hello_wapl_cliにプロジェクトの名前で実行可能ファイルが作られ、./src/main.llに中間言語のLLVM IRのファイルが生成されます。もし他の言語で作ったものでWapLで作ったものとリンクさせたい場合はこのIRを使うことができます。
以下のように実行することができます。
$ ./target/hello_wapl_cli
Hello, WapL!
先ほどwapl-cli buildでビルドし、./target/hello_wapl_cli で実行しましたが、wapl-cli runでこの二つを一つのコマンドですることもできます。
$ wapl-cli run
LLVM IR output: ./src/main.ll
Build success! → ./target/hello_wapl_cli
Build complete: ./target/hello_wapl_cli
Hello, WapL!
リリースに向けてビルドする場合はwapl-cli releaseを使います。これにより、ClangのO3相当の最適化をした状態でビルドをすることができますが、wapl-cli buildと比較してビルドには時間が長くなるため、wapl-cli buildは開発時に素早く頻繁に再ビルドしたいとき用で、wapl-cli releaseは最終的なビルドのとき用です。
wapl-cliはたいていの場合waplcを直接使うより便利ですが、内部で使用するClangの指定や実行ファイルを作らずにIRのみ作成、デバッグ用にASTをすべて出力するなどの細かい設定をしたい場合はwaplcを直接使う必要があります。