-
Notifications
You must be signed in to change notification settings - Fork 121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rustへの移行 #126
Rustへの移行 #126
Conversation
95623da
to
5746d6a
Compare
機能を追加していくのはOSS的に見ると、あとから見返しがしやすかったり議論しやすかったりなので、別PRだと嬉しそうです! あといきなりお1人で全部ガラッと変えるのは難しいかもなので、またVOICEVOX側にrust用のbranchを作って、そちらにPRしていく形も良いかもと思いました。 |
そうですね。branchがあると良さそうです。 |
branch作りました! https://github.com/VOICEVOX/voicevox_core/tree/rust APIに関して、良さそうに感じました。 |
@Hiroshiba target branch変えました。専用ブランチできたのであれば、CI通ってない状態でもmergeして大丈夫かなと思うのでとりあえずこのままmergeしてしまってよいかなと思います。CI修正するのはかなりかかるので |
デフォルト引数ないことについてですが、今後の修正でこれと似たような対応が必要になりそうです |
Rust 移行、C++ の辛い点をいくつか回避できそうで良さそうですね! Rust を勉強中なので、自分も今後できる範囲で議論や PR 等で貢献したいと思いました。 少し前に version 0.11 のコアを使う想定の Rust TTS クレートを作ってみていました https://github.com/PickledChair/voicevox-tts-rs |
そちらのコードをベースにすればsynthesize部分を実装して割と早くmainにmergeできそうですね |
そうですね、そのつもりでもうちょっと自分のコードを見直しておこうと思います……! |
すみませんdraftのままでした |
openjtalkを静的リンクする場合を考えるとcargo projectをworkspace化してしておいたほうがよさそうだったので変更 |
すみませんもう少し修正したいのでいちどdraftに戻します。 |
軽い実装をするつもりでしたがどの機能も何かしらのライブラリに依存しているため、やはり一度mergeしてから順次実装を追加していく方向にしたいと思います。 |
165a2b4
to
3c677b6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
気になったところに対していくつか質問させていただきました。コード自体は全体的に問題なさそうでした!
- バイナリ名を従来通りcoreに変更 - ヘッダを従来どおりcore.hに変更 - workaroundでworkspaceのルートディレクトリを取得しその配下のtargetにヘッダを出力するようにした
b4fbf40
to
adc9d65
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
追加で気になったところがあったので確認よろしくお願いします!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
小刻みなコメントになってしまいすみません。もう一箇所だけコメントしました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! PR ありがとうございました……!
今後の実装作業について、方針や進捗状況などを整理するための Issue があると便利そうですね。作っておこうと思います。
…ratesサブディレクトリ内に移動させた
@PickledChair あ、LGTMいただいてたんですね。ちょっとソースコード配置するディレクトリをcrates配下にするようにしちゃいました。(実装は変えてないです。workspaceを採用しているcargo projectの場合cratesディレクトリ配下に各crateのディレクトリを作成するのはよく見ます) とりあえずこれ以上の自分からの修正はこのPRでは行わないようにします |
了解です! 問題ないです。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rustちゃんとわかってないので、メンテナンス面からコメントしてみました!
build.yml
が落ちる関係で、CIが必ず失敗するようになっていそうです。
別に良いのですが、テンションが下がってしまうのと、テストが通ってるかぱっとわかりにくいので、いったん消してしまっても良いかもと思いました。
Co-authored-by: Hiroshiba <[email protected]>
@Hiroshiba build.yml消してみました! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!!
* いったんC++関係のコードを削除 * とりあえずcargo initializeと関数定義だけ * APIを既存のものに合わせて定義しなおした * cargo projectをworkspace化 * テストCI追加 * last_error_messageの定義が抜けていたので修正 * internal関数に定義を分けた * anyhowやめた * 元あったヘッダーファイルに合わせて出力されるように定義を変更した * result 変換方法を変更 * 従来どおりの出力をするように修正 - バイナリ名を従来通りcoreに変更 - ヘッダを従来どおりcore.hに変更 - workaroundでworkspaceのルートディレクトリを取得しその配下のtargetにヘッダを出力するようにした * ERROR_MESSAGEをonce cell化 * Succeed渡したときでもメッセージを返すように修正 VOICEVOX#126 (comment) * VoicevoxResultCodeのエラーメッセージとErrorのベースとなる文字列を同一にするようにした * output_binary_sizeの型をCのintに変更 * output_binary_sizeの型をc_intに変更 * 不要な文言を削除 * 今後workspace内にcrateが増えるとサブディレクトリがいっぱいできるのでrootディレクトリにディレクトリが増えすぎないようにcratesサブディレクトリ内に移動させた * 無駄な空行を削除 * 不要な空白行を削除 Co-authored-by: Hiroshiba <[email protected]> * 現状かならずCIテストが失敗するようになっているのでbuild.ymlを削除 Co-authored-by: Hiroshiba <[email protected]>
内容
voicevox_coreをRustに移植する話が配信でされていたのでおためしでrustへの移行をしてみるPR
その他
どうせ大きく変えるのであれば、非同期APIとかもやりたいのでdllのインターフェースも変えようかと考えてます