From 890f997c2a0d862c9b155a06b0b18881a02a72d3 Mon Sep 17 00:00:00 2001 From: h-east Date: Thu, 5 Oct 2023 22:51:06 +0900 Subject: [PATCH 1/2] Update if_python.{txt,jax} --- doc/if_pyth.jax | 31 ++++++++++++++++++++++++++++--- en/if_pyth.txt | 26 +++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/doc/if_pyth.jax b/doc/if_pyth.jax index d682df604..590e8810f 100644 --- a/doc/if_pyth.jax +++ b/doc/if_pyth.jax @@ -757,9 +757,21 @@ Unix ~ 'pythondll' と 'pythonthreedll' オプションを、コンパイル時に DYNAMIC_PYTHON_DLL と DYNAMIC_PYTHON3_DLL で指定されている Python の共有ライブ -ラリのファイルの、代わりを指定するのに使えます。共有ライブラリのバージョンは -Vim をコンパイルする時に用いた Python 2.x または Python 3 のバージョンと一致し -ていなければなりません。 +ラリのファイルの、代わりを指定するのに使えます。共有ライブラリのバージョン +は、|python3-stable-abi| を使用しない限り、Vim がコンパイルされた Python 2.x +または Python 3 のバージョン (|v:python3_version|) と一致しなければなりません。 + + +Stable ABI and mixing Python versions ~ + *python-stable* *python-stable-abi* *python3-stable-abi* +Vim が Stable ABI (Python 3 でのみ使用可能) でコンパイルされていない場合、 +Python 共有ライブラリのバージョンは Vim がコンパイルされたバージョンと一致して +いなければなりません。そうでないと、バージョンが混在して予期せぬクラッシュや失 +敗を引き起こす可能性があります。Stable ABI ではこの制限は緩和され、少なくとも +|v:python3_version| のバージョンを持つ Python 3 ライブラリであれば動作します。 +Stable ABI がサポートされているかどうかを確認する方法については、|has-python| +を参照するか、バージョン出力に |+python3/dyn-stable| が含まれているかどうかを +確認してください。 ============================================================================== 10. Python 3 *python3* @@ -872,6 +884,19 @@ Note: Python の 2 と 3 の両方が利用可能で、Python が動的ロード endif endif +ライブラリを動的にロードする場合、Vim は Python 3 Stable ABI +(|python3-stable-abi|) をサポートするようにコンパイルすることができ、Vim がコ +ンパイルしたものとは異なるバージョンの Python 3 ライブラリをロードすることがで +きます。確認するには: > + if has('python3_dynamic') + if has('python3_stable') + echo 'support Python 3 Stable ABI.' + else + echo 'does not support Python 3 Stable ABI.' + echo 'only use Python 3 version ' .. v:python3_version + endif + endif + 実行時ライブラリが見つからなかった場合は Python の動的ローディングは失敗します が、このコードは正しくロードされたかどうかを表示することにもなります。 diff --git a/en/if_pyth.txt b/en/if_pyth.txt index c2a0094b6..3d3b92a66 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -769,7 +769,19 @@ Unix ~ The 'pythondll' or 'pythonthreedll' option can be used to specify the Python shared library file instead of DYNAMIC_PYTHON_DLL or DYNAMIC_PYTHON3_DLL file what were specified at compile time. The version of the shared library must -match the Python 2.x or Python 3 version Vim was compiled with. +match the Python 2.x or Python 3 version (|v:python3_version|) Vim was +compiled with unless using |python3-stable-abi|. + + +Stable ABI and mixing Python versions ~ + *python-stable* *python-stable-abi* *python3-stable-abi* +If Vim was not compiled with Stable ABI (only available for Python 3), the +version of the Python shared library must match the version that Vim was +compiled with. Otherwise, mixing versions could result in unexpected crashes +and failures. With Stable ABI, this restriction is relaxed, and any Python 3 +library with version of at least |v:python3_version| will work. See +|has-python| for how to check if Stable ABI is supported, or see if version +output includes |+python3/dyn-stable|. ============================================================================== 10. Python 3 *python3* @@ -881,6 +893,18 @@ python support: > endif endif +When loading the library dynamically, Vim can be compiled to support Python 3 +Stable ABI (|python3-stable-abi|) which allows you to load a different version +of Python 3 library than the one Vim was compiled with. To check it: > + if has('python3_dynamic') + if has('python3_stable') + echo 'support Python 3 Stable ABI.' + else + echo 'does not support Python 3 Stable ABI.' + echo 'only use Python 3 version ' .. v:python3_version + endif + endif + This also tells you whether Python is dynamically loaded, which will fail if the runtime library cannot be found. From 7fc686ba13248019f869897c4aa3a85b68d0b15f Mon Sep 17 00:00:00 2001 From: h-east Date: Fri, 6 Oct 2023 14:29:13 +0900 Subject: [PATCH 2/2] Fix review points --- doc/if_pyth.jax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/if_pyth.jax b/doc/if_pyth.jax index 590e8810f..ca4ba0da9 100644 --- a/doc/if_pyth.jax +++ b/doc/if_pyth.jax @@ -757,12 +757,12 @@ Unix ~ 'pythondll' と 'pythonthreedll' オプションを、コンパイル時に DYNAMIC_PYTHON_DLL と DYNAMIC_PYTHON3_DLL で指定されている Python の共有ライブ -ラリのファイルの、代わりを指定するのに使えます。共有ライブラリのバージョン -は、|python3-stable-abi| を使用しない限り、Vim がコンパイルされた Python 2.x -または Python 3 のバージョン (|v:python3_version|) と一致しなければなりません。 +ラリのファイルの、代わりを指定するのに使えます。共有ライブラリのバージョンは、 +|python3-stable-abi| を使用しない限り、Vim がコンパイルされた Python 2.x また +は Python 3 のバージョン (|v:python3_version|) と一致しなければなりません。 -Stable ABI and mixing Python versions ~ +Stable ABI と Python バージョンの混在 ~ *python-stable* *python-stable-abi* *python3-stable-abi* Vim が Stable ABI (Python 3 でのみ使用可能) でコンパイルされていない場合、 Python 共有ライブラリのバージョンは Vim がコンパイルされたバージョンと一致して