-
Notifications
You must be signed in to change notification settings - Fork 119
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
C-unwind ABIに切り替える #541
Comments
issue作成ありがとうございます! 正直 なのでまあメリットはぶっちゃけわからんなと思いました! プルリクいただけたらマージすると思います! |
よく考えたら当たり前だったのですが、RustのパニックはそのままC++の例外とかとしては解釈されません。 なので この形式がちゃんと動作するかですが、試した人が既におり、ちゃんと動くと言ってよいように思えました。 |
なるほどです! このissueはcloseして新たにissueを作る感じでしょうか? |
#561 を作りました。 #561 とは別に#556 (comment)に気付いてしまったので、このissueは残したままになるかと思います。 |
内容
C APIの
extern "C"
を、Rust 1.71で使えるようになったextern "C-unwind"
に置き換えます。C-unwind ABI - Announcing Rust 1.71.0 - Rust Blog
これにより、C APIも #505 のようにできることが期待できます。
Pros 良くなる点
extern "C"
からパニックを送出しようとする行為がそもそもUBらしく、プロセスの強制終了も実は保証されている動作ではなかったらしい?(追記) Rustのパニックを出したときの挙動は保証されていて、コールバックからC++の例外とかが発射されたときがUBだったらしい (例え
panic=abort
であっても) 2945-c-unwind-abi - The Rust RFC BookCons 悪くなる点
実現方法
❯ sed -i 's/extern "C"/extern "C-unwind"/' ./crates/voicevox_core_c_api/src/lib.rs && cargo fmt
VOICEVOXのバージョン
N/A
OSの種類/ディストリ/バージョン
その他
The text was updated successfully, but these errors were encountered: