Skip to content

v4.0.0

Compare
Choose a tag to compare
@sksat sksat released this 02 Nov 05:53
3481aba

v4.0.0 (2023-11-02)

arkedge/c2a-core v4.0.0 は ArkEdge Space Inc. による C2A の先行開発のための ut-issl/c2a-core の fork 後最初のリリースとなる.
v4.0.0 では,fork に伴う開発体制の変更に加え,以下の大きなセマンティクス的な変更を行ったため,major update とした.

  • 大規模な rename
  • 各ツールの c2a-core リポジトリへの吸収合併
  • Rust のエコシステム / C2A 標準開発環境 C2A Boom の導入

大規模な rename はあくまで現在の設計・コードの責務をできるだけ明らかにし,(特に C2A の開発経験の無い一般的なソフトウェアエンジニアを中心とした)開発者のディスコミュニケーションを低減する目的で実施した.

ex: IfWrapper -> HAL, Driver -> Component Driver

また,ディレクトリ名に大文字・小文字があったりなかったりする,不必要に階層構造が深いといった歪なディレクトリ構造の修正も行った.

ex: src/src_core/System -> src/src_core/system, src/src_user/Settings/TlmCmd/data_base -> tlm-cmd-db

これらの rename は大規模ではあるものの,C2A としてのロジックの変更やリファクタリングはほぼ行っていない.
この移行については migration script を用意している(CHANGELOG.md の Migration Guide 参照).

各ツールの c2a-core リポジトリへの吸収合併については,ut-issl/c2a-enum-loaderut-issl/c2a-tlm-cmd-code-generator などの c2a-core のコード構成に依存したツールのリリース単位は c2a-core と同一であると判断し実施した.
これらのツールについては,今後は各 C2A user で使用している c2a-core と同じバージョンのものを使用してもらうことになる(実務上は src/src_core から使うことになる).

Rust エコシステム / C2A Boom の導入については,ArkEdge Space Inc. 内での開発成果を OSS 化しつつ実施した.
これらについては c2a-core v3 系に対しても互換性があり導入可能だが,新機能の開発や積極的なサポートは c2a-core v4 系以降を前提として行われる可能性がある.

Breaking Changes

  • ut-issl/c2a-core v3.10.0 から ArkEdge Space Inc. による先行開発のために fork し,リポジトリを arkedge/c2a-core に移行
    • #1: ライセンス情報の更新
  • 94: メジャーバージョンアップ中は煩雑さ軽減のために c2a-core の Pre-Release の免除を可能に
  • #18: CommandDispatcher の統一的なテレメの提供
  • #19: App の initializer, entry_point の返り値を void から RESULT にする
  • 各ディレクトリ名・構造の変更
    • #15: example user を minimum_user -> mobc, 2nd_obc_user -> subobc に変更
    • #20: ディレクトリ名のコーディング規約を CamelCase から snake_case に変更
      • v4 系統ではこの変更は移行期間とし,あらゆるディレクトリ名を一気に変更する必要はないものとしている
      • #42: Rust の crate のためのディレクトリは小文字の - 区切りとする
    • #8: C2A 用語の rename
      • #21, #24: IfWrapper -> HAL (Hardware Abstraction Layer)
      • #146, #147, #149: Driver -> Component Driver
      • #143, #144, #150: Driver instances -> Component Service
      • #153: c2a-tlm-cmd-code-generator -> c2a-code-generator
      • #165, #166, #169: IF list -> CDS HAL handler registry
      • #151: これは v4.0.0 以降も継続的に実施していく
    • #28: 歪なディレクトリ構造の修正
      • #122, #124: src/src_core/Drivers/Super -> src/src_core/driver, src/src_core/Drivers/Protocol -> src/src_core/driver
      • #138: src/src_user/Test -> src/src_user/test, src/src_user/Test/test -> src/src_user/test
      • #10: ディレクトリ名の CamelCase をやめて snake_case にする
        • #20: コーディング規約の変更
        • #21, #24: IfWrapper -> hal
        • #26: c2a-core/Examples -> c2a-core/examples
        • #31: Docs -> docs
        • #33, #39: Script -> script
        • #46, #48, #140: Applications -> applications
        • #50, #51, #53: Library -> library
        • #54, #55, #125: System -> system
        • #79, #80: TlmCmd -> tlm_cmd
        • #122, #124: Drivers -> driver
        • #138: src/src_user/Test -> src/src_user/test
        • #167, #168: src/src_user/Settings -> src/src_user/settings
      • #172: src/src_user/settings/tlm_cmd/data_base -> tlm-cmd-db
    • 移行には scripts/migration/ 以下の v4-rename-*.sh の migration script を使用可能
      • example user についてはこの migration script のみで移行しているが,あらゆる C2A user の状況について考慮できているわけではないため,適宜対応が必要
  • #23, #25, #129, #130, #131: hal(旧 IfWrapper)のうち,古すぎるインターフェースを排除
    • 既に使われてしまっているものについては,各 C2A user で一旦雑に古いヘッダファイルを各々で持って対応可能(今後再設計する予定)
  • #97: check_coding_rule.py の設定ファイルである check_coding_rule.json の場所を C2A user のトップディレクトリに変更
    • 対応方法
      • Script/CI/check_coding_rule.json ないし script/ci/check_coding_rule.json を C2A user のトップディレクトリに移動
      • 設定ファイルから c2a_root_dir を削除
      • 設定ファイル中のディレクトリの設定を C2A user のトップディレクトリからの相対パスに変更
  • #99: ut-issl/c2a-enum-loader を c2a-core リポジトリで管理するように変更
  • #111: ut-issl/c2a-tlm-cmd-code-generator を c2a-core リポジトリで管理するように変更
  • #83, #86, #132, #139: CMake option の整理
    • C2A_ prefix に統一した(これはコーディング規約にも追加)
    • 意味が分かりにくい命名の変更,今後 optional としていく挙動を default OFF とした
    • option() の挙動はユーザ指定によってかなり変わるため,該当する変更は単なるビルドチェックなどではなくすべて grep して変更すること
    • BUILD_C2A_AS_UTF8 -> C2A_BUILD_AS_UTF8
    • BUILD_C2A_AS_C99 -> C2A_BUILD_AS_C99
    • BUILD_C2A_AS_CXX -> C2A_BUILD_AS_CXX
    • (NOT USE_32BIT_COMPILER) -> C2A_BUILD_FOR_32BIT: ON の時に明示的に 32bit ターゲットとしてビルドする(-m32 をつける)
    • (NOT C2A_USE_STDINT_WRAPPER) -> C2A_USE_STDINT_WRAPPER: C89 ターゲットでビルドする際に ON にすることでユーザ定義の stdint.h を使う
    • BUILD_C2A_AS_SILS_FW -> C2A_BUILD_FOR_SILS
    • USE_ALL_C2A_CORE_APPS -> C2A_USE_ALL_CORE_APPS
    • USE_ALL_C2A_CORE_TEST_APPS -> C2A_USE_ALL_CORE_TEST_APPS
    • USE_ALL_C2A_CORE_LIB -> C2A_USE_ALL_CORE_LIB
    • USE_SCI_COM_WINGS -> C2A_USE_SCI_COM_WINGS: 今後 WINGS 向けビルドは optional なものとなるので,default で OFF に変更.使う場合はビルド時に指定するか,S2E user の CMakeLists.txt で設定すること
    • USE_SCI_COM_UART -> C2A_USE_SCI_COM_UART
    • USE_SILS_MOCKUP -> C2A_BUILD_WITH_SILS_MOCKUP
    • SHOW_DEBUG_PRINT_ON_SILS -> C2A_BUILD_WITH_SILS_MOCKUP

Enhancements

  • #35, #37: c2a-core crate で Rust 向けの binding を提供する
  • #38: C2A 単体での SILS のための C2A のランタイム実装である c2a-sils-runtime crate を追加
  • 共通して使用可能な C2A HAL(旧 IfWrapper)実装群を追加
    • #40: C2A HAL 実装のテンプレートや,モックとして使用可能な noop 実装を追加
    • #41: kble を使った SILS 向け UART 実装を追加
  • #44, #45: c2a-sils-runtime と Rust 製の C2A HAL 実装を使って,example user の C2A 単体での SILS(S2E なし)を実装
  • #56: 新たな C2A 標準環境である C2A Boom を example user に導入
  • #59: example user に対して,Gaia を用いた pytest を導入
    • python-wings-interface 互換の Gaia(tmtc-c2a)向けインターフェースとして c2a-pytest-gaia を導入
    • これに伴い,Python の仮想環境・ツールチェーン管理に rye を導入
    • #60: example user の Gaia pytest CI を導入
  • #117: tlm-cmd-code-generator/settings.json を commit しないようにし,example user 用の設定ファイルを追加した
  • #127: Import README.md as crate documentation

Fixed

  • #77: Use locked version dependencies for install jrsonnet
  • #92: Build C2A example users for i686 target
  • #96: Use released version tools

Documentation

  • #1: v4 fork に伴う README,Licence の修正
  • #3: Issue/PR template の更新
  • #16: Docs の中でコードを参照している URL の行数を修正
  • #29: Update repository URL in Rust package due to fork
  • #52: Update README about SILS runtime
  • #62: 関連リポジトリをreadmeに追加
  • #65: 通信プロトコルについてのドキュメントを更新
  • #85: Create CHANGELOG.md & write v4 current change log
  • #93: リリースルールの明瞭化
  • #123: c2a-sils-runtime や C2A DevTools での開発のためのドキュメントを追加
  • #135: Fix CHANGELOG.md
  • #157: Update v4 changelog
  • #177: インデントのスペースを GFM に準拠する

Internal

  • #4: Update Rust crate semver to 1.0.18
  • #27: エンコーディングチェック CI に subobc が抜けていたので追加
  • #30: c2a-core crate のためのソースファイルを src/lib.rs から c2a_core.rs に移動し,紛らわしい src ディレクトリを削除
  • #34: Make c2a-core repository as cargo workspace
  • #36: Add rustfmt check
  • #47: Update Swatinem/rust-cache action to v2.6.2
  • #57: Run Rust CI on develop
  • #61: Update reviewdog/action-setup action to v1.0.6
  • #63: Pre Release (v4.0.0-beta.0): v4 の最初の beta release
  • #66: Update actions/setup-node action to v3.8.1
  • #67: 主に S2E の更新のために Renovate regexManager で GitHub Actions workflow 内のバージョン直打ちの依存の自動更新
  • #68: Update dependency ut-issl/s2e-core to v6.4.0
  • #69: Remove Renovate regexManager match v prefix
  • #72: Update arkedge/workflows-c2a action to v4
  • #74: pytest CI の 重複を除去する
  • #75: Update sksat/setup-rye action to v0.7.0
  • #78: Automatically add bug label to bug report issue
  • #81: Update actions/checkout action to v4
  • #87: Update Rust crate bindgen to 0.68.1
  • #89: Update crazy-max/ghaction-github-labeler action to v5
  • #90: Update Swatinem/rust-cache action to v2.7.0
  • #98: Update arkedge/workflows-c2a action to v4.3.0
  • #101: Update actions/checkout action to v4.1.0
  • #102: Update Rust crate semver to 1.0.19
  • #109: Update sksat/setup-rye action to v0.8.0
  • #110: Update arkedge/workflows-c2a action to v4.4.0
  • #112: Update python Docker tag to v3.12
  • #113: Update sksat/setup-rye action to v0.9.0
  • #118: Remove unneeded directory
  • #120: Update Rust crate semver to 1.0.20
  • #126: Add example user's tlm_cmd code generation check workflow
  • #136: Update arkedge/workflows-c2a action to v4.5.1
  • #137: Update arkedge/workflows-c2a action to v4.5.2
  • #152: Update dependency ut-issl/s2e-core to v7
  • #158: Update actions/checkout action to v4.1.1
  • #159: Update sksat/setup-rye action to v0.9.1
  • #160: Update sksat/action-clippy action to v0.3.0
  • #161: Update Swatinem/rust-cache action to v2.7.1
  • #164: Update actions/setup-node action to v4
  • #173: Fix missing rename/drop in scripts

Compatible C2A Tools

What's Changed (auto generated)

  • v4 fork に伴う README,Licence の修正 by @meltingrabbit in #1
  • Update template by @meltingrabbit in #3
  • minimum_user, 2nd_obc_user の rename by @meltingrabbit in #15
  • Docs の中でコードを参照している URL の行数を修正 by @meltingrabbit in #16
  • App の initializer, entry_point の返り値を void から RESULT にする by @meltingrabbit in #19
  • Change dir name coding rule to snake_case by @sksat in #20
  • Rename component: IfWrapper -> hal by @sksat in #21
  • Apply rename migration to example users: IfWrapper -> hal by @sksat in #24
  • Remove old HAL for DC by @sksat in #25
  • Rename Examples/ -> examples/ by @sksat in #26
  • Update repository URL in Rust package due to fork by @sksat in #29
  • エンコーディングチェック CI に subobc が抜けていたので追加 by @meltingrabbit in #27
  • Move c2a-core crate source file to top dir for avoid misleading by @sksat in #30
  • CommandDispatcher の統一的なテレメの提供 by @meltingrabbit in #18
  • Update Rust crate semver to 1.0.18 by @renovate in #4
  • Rename docs dir to snake case by @sksat in #31
  • Make c2a-core repository as cargo workspace by @sksat in #34
  • Generate Rust bindings for c2a_core_main & hal by @sksat in #35
  • Add rustfmt check by @sksat in #36
  • Extern System functions for SILS runtime by @sksat in #37
  • Update directory name rule for Rust crate by @sksat in #42
  • Introduce c2a-sils-runtime by @sksat in #38
  • Add HAL noop implementation by @sksat in #40
  • Add kble-based c2a-hal UART emulation by @sksat in #41
  • Rename script dir to snake case by @sksat in #33
  • Apply rename migration to example users: Script -> script by @sksat in #39
  • Run examples/subobc on c2a-sils-runtime by @sksat in #44
  • Run examples/mobc on c2a-sils-runtime by @sksat in #45
  • Rename Applications dir to snake case by @sksat in #46
  • Apply rename migration to example users: Applications -> applications by @sksat in #48
  • Rename library to snake case by @sksat in #50
  • Apply rename migration to example users: Library -> library by @sksat in #51
  • Update README about SILS runtime by @sksat in #52
  • Fix missing Library rename in cargo config by @sksat in #53
  • Run Rust CI on develop by @sksat in #57
  • Introduce C2A Boom to example users by @sksat in #56
  • Introduce Gaia pytest by @sksat in #59
  • 関連リポジトリをreadmeに追加 by @meltingrabbit in #62
  • Add Gaia pytest CI by @sksat in #60
  • Pre Release (v4.0.0-beta.0): v4 の最初の beta release by @sksat in #63
  • 通信プロトコルについてのドキュメントを更新 by @meltingrabbit in #65
  • Renovate specified version in GitHub Actions workflow by @sksat in #67
  • Remove Renovate regexManager match v prefix by @sksat in #69
  • Update dependency ut-issl/s2e-core to v6.4.0 by @renovate in #68
  • Rename System dir to snake case by @sksat in #54
  • Apply rename migration to example users: System -> system by @sksat in #55
  • pytest CI の 重複を除去する by @meltingrabbit in #74
  • Automatically add bug label to bug report issue by @sksat in #78
  • Use locked version dependencies for install jrsonnet by @sksat in #77
  • Rename TlmCmd dir to snake case by @sksat in #79
  • Apply rename migration to example users: TlmCmd -> tlm_cmd by @sksat in #80
  • Create CHANGELOG.md & write v4 current change log by @sksat in #85
  • Update Swatinem/rust-cache action to v2.6.2 by @renovate in #47
  • Update reviewdog/action-setup action to v1.0.6 by @renovate in #61
  • Update actions/setup-node action to v3.8.1 by @renovate in #66
  • Update actions/checkout action to v4 by @renovate in #81
  • Update sksat/setup-rye action to v0.7.0 by @renovate in #75
  • Update Rust crate bindgen to 0.68.1 by @renovate in #87
  • Update arkedge/workflows-c2a action to v4 by @renovate in #72
  • Build C2A example users for i686 target by @sksat in #92
  • Update Swatinem/rust-cache action to v2.7.0 by @renovate in #90
  • リリースルールの明瞭化 by @meltingrabbit in #93
  • Use released version tools by @sksat in #96
  • Move check coding rule setting file to C2A user top by @sksat in #97
  • Update arkedge/workflows-c2a action to v4.3.0 by @renovate in #98
  • Switch rye build-system backend from hatchling to pdm by @sksat in #100
  • Update actions/checkout action to v4.1.0 by @renovate in #101
  • Update crazy-max/ghaction-github-labeler action to v5 by @renovate in #89
  • Update Rust crate semver to 1.0.19 by @renovate in #102
  • Pre Release (v4.0.0-beta.1): メジャーバージョンアップ中のリリースルールの修正 by @meltingrabbit in #94
  • Import c2a-enum-loader by @sksat in #99
  • Update sksat/setup-rye action to v0.8.0 by @renovate in #109
  • Import c2a-tlm-cmd-code-generator by @sksat in #111
  • Update sksat/setup-rye action to v0.9.0 by @renovate in #113
  • Pre Release (v4.0.0-beta.2): Refactor cmake option by @sksat in #86
  • Remove unneeded directory by @sksat in #118
  • Update arkedge/workflows-c2a action to v4.4.0 by @renovate in #110
  • Update Rust crate semver to 1.0.20 by @renovate in #120
  • Update tlm-cmd-code-generator example settings & docs by @sksat in #117
  • Refactor driver directory structure by @sksat in #122
  • Apply direcotory refactor migration(Drivers -> driver) by @sksat in #124
  • Add example user's tlm_cmd code generation check workflow by @sksat in #126
  • Fix missing system rename by @sksat in #125
  • Drop AA HAL support by @sksat in #129
  • Drop PA HAL support by @sksat in #130
  • Drop SPWIRE HAL support by @sksat in #131
  • Import README.md as crate documentation by @sksat in #127
  • Fix CHANGELOG.md by @meltingrabbit in #135
  • Update arkedge/workflows-c2a action to v4.5.1 by @renovate in #136
  • Update arkedge/workflows-c2a action to v4.5.2 by @renovate in #137
  • Refactor user cmake option by @sksat in #132
  • Add missing user_defined application dirname migration by @sksat in #140
  • Pre Release (v4.0.0-beta.3): Change C2A_USE_SCI_COM_WINGS default OFF by @sksat in #139
  • Rename Driver -> Component Driver by @sksat in #146
  • Apply rename migration: Driver -> Component Driver by @sksat in #147
  • Component Driver の rename に伴う微修正 by @meltingrabbit in #149
  • Rename driver_instances -> component_service by @sksat in #143
  • Apply rename migration: driver_instances -> component_service by @sksat in #144
  • Pre Release (v4.0.0-beta.4): DI → CSRV rename に伴う,手動での user 側微修正 by @meltingrabbit in #150
  • Rename code-generator by @sksat in #153
  • c2a-sils-runtime や C2A DevTools での開発のためのドキュメントを追加 by @meltingrabbit in #123
  • Update dependency ut-issl/s2e-core to v7 by @renovate in #152
  • Update actions/checkout action to v4.1.1 by @renovate in #158
  • Update Swatinem/rust-cache action to v2.7.1 by @renovate in #161
  • Update sksat/action-clippy action to v0.3.0 by @renovate in #160
  • Update sksat/setup-rye action to v0.9.1 by @renovate in #159
  • Update python Docker tag to v3.12 by @renovate in #112
  • Refactor user test dir by @sksat in #138
  • Update actions/setup-node action to v4 by @renovate in #164
  • Rename component driver prefix by @sksat in #154
  • Apply rename migration: component driver prefix by @sksat in #155
  • Rename & Refactor IF list to CDS handler registry by @sksat in #165
  • Apply rename migration: IF list by @sksat in #166
  • Pre Release (v4.0.0-beta.5): フォーマット微修正 / 変数名修正 by @meltingrabbit in #169
  • Rename user Settings dir by @sksat in #167
  • Apply rename migration: user Settings dir by @sksat in #168
  • Move tlmcmddb dir by @sksat in #172
  • Fix missing rename/drop in scripts by @sksat in #173
  • Update v4 changelog by @sksat in #157
  • インデントのスペースを GFM に準拠する by @meltingrabbit in #177
  • Update version (v4.0.0) by @sksat in #174
  • Update main (v4.0.0) on 2023-11-02 by @meltingrabbit in #178

New Contributors

Full Changelog: v3.10.0...v4.0.0