依存関係

他の 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 に依存関係を追加したあとは、その依存関係の moduleinterfacepackageを使うことができます。以下は 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.00.1.10.2.0があった場合、0.1.1 が選択されます。これは以下のように決定されます。

  • 0.1.00.1.0 と互換性がある
  • 0.1.10.1.0 と互換性がある
  • 0.2.00.1.0 と互換性がない
  • 0.1.1 は互換性のある最新バージョン

version フィールドは =0.1.0 のような指定も可能です。詳細は Rust のバージョン要求についてのドキュメントを参照してください。Specifying Dependencies.