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

pyo3/experimental-asyncを使う #843

Open
3 tasks done
qryxip opened this issue Oct 1, 2024 · 0 comments
Open
3 tasks done

pyo3/experimental-asyncを使う #843

qryxip opened this issue Oct 1, 2024 · 0 comments
Labels

Comments

@qryxip
Copy link
Member

qryxip commented Oct 1, 2024

内容

このリポジトリではPyO3本体とは別にpyo3-asyncioというライブラリを使ってPython APIのasyncio版を作っています。

PyO3本体は今や十分に巨大になって安定した存在になっているんじゃないかと思ってます。しかしpyo3-asyncioはそうではなく個人が開発しているライブラリであり、現在メンテが完全に放棄されています。そのためPyO3本体をv0.21 (2024-03リリース)以降に上げることができなくなっています。

ただ調べたところPyO3 v0.21からexperimental-asyncという名のfeatureを有効化すれば、Rustのasync fn → Pythonのasync defの変換を標準機能としてやってくれるようになったらしいです。こうなるとpyo3/experimental-asyncが機能として固まるのを見てpyo3-asyncioの作者がやる気を失った、という説も立てられそうですが、ともかくpyo3/experimental-asyncがpyo3-asyncioの代わりになるかと思ってます。 #831 で脱Tokioしたし、上手く動いてくれるんじゃないかと。

Pros 良くなる点

  • PyO3のバージョンを更新できるようになる

Cons 悪くなる点

実現方法

PyO3本体をv0.21以降にアップデートし、それと同時にpyo3-asyncioの利用をすべてexperimental-async機能のものに置き換える。

VOICEVOXのバージョン

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

  • Windows
  • macOS
  • Linux

その他

ちなみにPyO3の新しいバージョンは「GIL抜きPython」に対応…しているわけではまだなさそうですが、それを見越しているっぽいAPIの変更はいくつか見えます。GILを掴まずにできる操作が増えるとしてVOICEVOX的にはそこまで恩恵は無いかもですが…

@qryxip qryxip added 機能向上 初心者歓迎タスク 初心者にも優しい簡単めなタスク labels Oct 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant