依存関係
他の Veryl プロジェクトへの依存関係をプロジェクトに追加したい場合、Veryl.toml
に [dependencies]
セクションを追加します。エントリの左辺は依存関係へのパス、右辺はバージョンです。
[dependencies]
"https://github.com/veryl-lang/sample" = "0.1.0"
デフォルトでは依存関係の名前空間はそのプロジェクト名と同じです。もし名前空間を指定したい場合は、 name
フィールドを使います。
[dependencies]
"https://github.com/veryl-lang/sample" = {version = "0.1.0", name = "veryl_sample_alt"}
同じ依存関係の複数のバージョンを使う場合は、以下のようにそれぞれの名前を指定できます。
[dependencies]
"https://github.com/veryl-lang/sample" = [
{version = "0.1.0", name = "veryl_sample1"},
{version = "0.2.0", name = "veryl_sample2"},
]
依存関係の使用
Veryl.toml
に依存関係を追加したあとは、その依存関係の module
、interface
、package
を使うことができます。以下は veryl_sample
の依存関係に含まれる delay
モジュールを使った例です。
module ModuleA (
i_clk: input clock,
i_rst: input reset,
i_d : input logic,
o_d : output logic,
) {
inst u_delay: veryl_sample::delay (
i_clk,
i_rst,
i_d ,
o_d ,
);
}
注:上記のコードのプレイボタンの結果は依存関係解決を行わないので正確ではありません。実際のモジュール名は
veryl_sample_delay
になります。
バージョン要求
[dependencies]
セクションの version
フィールドはバージョン要求を示します。例えば、version = "0.1.0"
は 0.1.0
と互換性のある最新バージョンを意味します。互換性はセマンティックバージョニングで判定されます。バージョンは以下の3つの部分からなります。
メジャー
バージョンはAPI非互換な変更マイナー
バージョンは互換性のある機能追加パッチ
バージョンは互換性のあるバグ修正
もし メジャー
バージョンが 0
なら、マイナー
が非互換変更と解釈されます。
バージョン 0.1.0
、0.1.1
、0.2.0
があった場合、0.1.1
が選択されます。これは以下のように決定されます。
0.1.0
は0.1.0
と互換性がある0.1.1
は0.1.0
と互換性がある0.2.0
は0.1.0
と互換性がない0.1.1
は互換性のある最新バージョン
version
フィールドは =0.1.0
のような指定も可能です。詳細は Rust のバージョン要求についてのドキュメントを参照してください。Specifying Dependencies.