Skip to content
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

unsafe impl Send for SynthesisEngineをやめる #307

Closed
qryxip opened this issue Oct 11, 2022 · 3 comments · Fixed by #725
Closed

unsafe impl Send for SynthesisEngineをやめる #307

qryxip opened this issue Oct 11, 2022 · 3 comments · Fixed by #725
Labels
優先度:低 要議論 実行する前に議論が必要そうなもの

Comments

@qryxip
Copy link
Member

qryxip commented Oct 11, 2022

内容

#175 により原則#[deny(unsafe_code]になっているようですが、ここがまだ残っています。

#[allow(unsafe_code)]
unsafe impl Send for SynthesisEngine {}

Pros 良くなる点

  • 新たにこのリポジトリを訪れる人に無用な不安を与えずにすむようになる

Cons 悪くなる点

  • ↓の方法を取る場合、依存ライブラリの数が一つ増える

実現方法

OSの種類/ディストリ/バージョン

全部

その他

@qryxip qryxip added 優先度:低 要議論 実行する前に議論が必要そうなもの labels Oct 11, 2022
@qryxip
Copy link
Member Author

qryxip commented Oct 12, 2022

よく考えたらsend_wrapperは駄目ですね。実際に複数スレッドから触れる必要があります。

@qryxip
Copy link
Member Author

qryxip commented Oct 12, 2022

これ無理にunsafeを消そうとするとenum VoicevoxCoreCommandをcrossbeamで…という面倒なことになりそうですね。
実際ORTとOpenJTalkの構造体ってスレッドセーフでなくてもSend相当であると見ていいですよね?

追記: enum作らなくても Box<dyn FnOnce(&mut VoicevoxCore) -> _ + Send> Box<dyn FnOnce(&mut SynthesisEngine) -> _ + Send>でもよさそう。ただそれでも面倒です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
優先度:低 要議論 実行する前に議論が必要そうなもの
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant