6
6
msgstr ""
7
7
"Project-Id-Version : Python 3.13\n "
8
8
"Report-Msgid-Bugs-To : \n "
9
- "POT-Creation-Date : 2025-06-27 07:36 +0000\n "
9
+ "POT-Creation-Date : 2025-07-24 00:16 +0000\n "
10
10
"PO-Revision-Date : YEAR-MO-DA HO:MI+ZONE\n "
11
11
"Last-Translator : FULL NAME <EMAIL@ADDRESS>\n "
12
12
"Language-Team : Chinese - TAIWAN (https://github.com/python/python-docs-zh- "
@@ -268,68 +268,74 @@ msgid ":c:func:`PyList_GetItem`"
268
268
msgstr ":c:func:`PyList_GetItem`"
269
269
270
270
#: ../../howto/free-threading-extensions.rst:160
271
+ #: ../../howto/free-threading-extensions.rst:162
271
272
msgid ":c:func:`PyList_GetItemRef`"
272
273
msgstr ":c:func:`PyList_GetItemRef`"
273
274
274
275
#: ../../howto/free-threading-extensions.rst:162
276
+ #, fuzzy
277
+ msgid ":c:func:`PyList_GET_ITEM`"
278
+ msgstr ":c:func:`PyList_GetItem`"
279
+
280
+ #: ../../howto/free-threading-extensions.rst:164
275
281
msgid ":c:func:`PyDict_GetItem`"
276
282
msgstr ":c:func:`PyDict_GetItem`"
277
283
278
- #: ../../howto/free-threading-extensions.rst:162
279
284
#: ../../howto/free-threading-extensions.rst:164
285
+ #: ../../howto/free-threading-extensions.rst:166
280
286
msgid ":c:func:`PyDict_GetItemRef`"
281
287
msgstr ":c:func:`PyDict_GetItemRef`"
282
288
283
- #: ../../howto/free-threading-extensions.rst:164
289
+ #: ../../howto/free-threading-extensions.rst:166
284
290
msgid ":c:func:`PyDict_GetItemWithError`"
285
291
msgstr ":c:func:`PyDict_GetItemWithError`"
286
292
287
- #: ../../howto/free-threading-extensions.rst:166
293
+ #: ../../howto/free-threading-extensions.rst:168
288
294
msgid ":c:func:`PyDict_GetItemString`"
289
295
msgstr ":c:func:`PyDict_GetItemString`"
290
296
291
- #: ../../howto/free-threading-extensions.rst:166
297
+ #: ../../howto/free-threading-extensions.rst:168
292
298
msgid ":c:func:`PyDict_GetItemStringRef`"
293
299
msgstr ":c:func:`PyDict_GetItemStringRef`"
294
300
295
- #: ../../howto/free-threading-extensions.rst:168
301
+ #: ../../howto/free-threading-extensions.rst:170
296
302
msgid ":c:func:`PyDict_SetDefault`"
297
303
msgstr ":c:func:`PyDict_SetDefault`"
298
304
299
- #: ../../howto/free-threading-extensions.rst:168
305
+ #: ../../howto/free-threading-extensions.rst:170
300
306
msgid ":c:func:`PyDict_SetDefaultRef`"
301
307
msgstr ":c:func:`PyDict_SetDefaultRef`"
302
308
303
- #: ../../howto/free-threading-extensions.rst:170
309
+ #: ../../howto/free-threading-extensions.rst:172
304
310
msgid ":c:func:`PyDict_Next`"
305
311
msgstr ":c:func:`PyDict_Next`"
306
312
307
- #: ../../howto/free-threading-extensions.rst:170
313
+ #: ../../howto/free-threading-extensions.rst:172
308
314
msgid "none (see :ref:`PyDict_Next`)"
309
315
msgstr ""
310
316
311
- #: ../../howto/free-threading-extensions.rst:172
317
+ #: ../../howto/free-threading-extensions.rst:174
312
318
msgid ":c:func:`PyWeakref_GetObject`"
313
319
msgstr ":c:func:`PyWeakref_GetObject`"
314
320
315
- #: ../../howto/free-threading-extensions.rst:172
316
321
#: ../../howto/free-threading-extensions.rst:174
322
+ #: ../../howto/free-threading-extensions.rst:176
317
323
msgid ":c:func:`PyWeakref_GetRef`"
318
324
msgstr ":c:func:`PyWeakref_GetRef`"
319
325
320
- #: ../../howto/free-threading-extensions.rst:174
326
+ #: ../../howto/free-threading-extensions.rst:176
321
327
msgid ":c:func:`PyWeakref_GET_OBJECT`"
322
328
msgstr ":c:func:`PyWeakref_GET_OBJECT`"
323
329
324
- #: ../../howto/free-threading-extensions.rst:176
330
+ #: ../../howto/free-threading-extensions.rst:178
325
331
msgid ":c:func:`PyImport_AddModule`"
326
332
msgstr ":c:func:`PyImport_AddModule`"
327
333
328
- #: ../../howto/free-threading-extensions.rst:176
334
+ #: ../../howto/free-threading-extensions.rst:178
329
335
msgid ":c:func:`PyImport_AddModuleRef`"
330
336
msgstr ":c:func:`PyImport_AddModuleRef`"
331
337
332
- #: ../../howto/free-threading-extensions.rst:179
338
+ #: ../../howto/free-threading-extensions.rst:181
333
339
msgid ""
334
340
"Not all APIs that return borrowed references are problematic. For example, :"
335
341
"c:func:`PyTuple_GetItem` is safe because tuples are immutable. Similarly, "
@@ -340,18 +346,18 @@ msgid ""
340
346
"context is safe."
341
347
msgstr ""
342
348
343
- #: ../../howto/free-threading-extensions.rst:187
349
+ #: ../../howto/free-threading-extensions.rst:189
344
350
msgid ""
345
351
"Some of these functions were added in Python 3.13. You can use the "
346
352
"`pythoncapi-compat <https://github.com/python/pythoncapi-compat>`_ package "
347
353
"to provide implementations of these functions for older Python versions."
348
354
msgstr ""
349
355
350
- #: ../../howto/free-threading-extensions.rst:195
356
+ #: ../../howto/free-threading-extensions.rst:197
351
357
msgid "Memory Allocation APIs"
352
358
msgstr ""
353
359
354
- #: ../../howto/free-threading-extensions.rst:197
360
+ #: ../../howto/free-threading-extensions.rst:199
355
361
msgid ""
356
362
"Python's memory management C API provides functions in three different :ref:"
357
363
"`allocation domains <allocator-domains>`: \" raw\" , \" mem\" , and \" object\" . "
@@ -361,36 +367,36 @@ msgid ""
361
367
"where this was only a best practice and not a hard requirement."
362
368
msgstr ""
363
369
364
- #: ../../howto/free-threading-extensions.rst:206
370
+ #: ../../howto/free-threading-extensions.rst:208
365
371
msgid ""
366
372
"Search for uses of :c:func:`PyObject_Malloc` in your extension and check "
367
373
"that the allocated memory is used for Python objects. Use :c:func:"
368
374
"`PyMem_Malloc` to allocate buffers instead of :c:func:`PyObject_Malloc`."
369
375
msgstr ""
370
376
371
- #: ../../howto/free-threading-extensions.rst:213
377
+ #: ../../howto/free-threading-extensions.rst:215
372
378
msgid "Thread State and GIL APIs"
373
379
msgstr ""
374
380
375
- #: ../../howto/free-threading-extensions.rst:215
381
+ #: ../../howto/free-threading-extensions.rst:217
376
382
msgid ""
377
383
"Python provides a set of functions and macros to manage thread state and the "
378
384
"GIL, such as:"
379
385
msgstr ""
380
386
381
- #: ../../howto/free-threading-extensions.rst:218
387
+ #: ../../howto/free-threading-extensions.rst:220
382
388
msgid ":c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release`"
383
389
msgstr ":c:func:`PyGILState_Ensure` 和 :c:func:`PyGILState_Release`"
384
390
385
- #: ../../howto/free-threading-extensions.rst:219
391
+ #: ../../howto/free-threading-extensions.rst:221
386
392
msgid ":c:func:`PyEval_SaveThread` and :c:func:`PyEval_RestoreThread`"
387
393
msgstr ":c:func:`PyEval_SaveThread` 和 :c:func:`PyEval_RestoreThread`"
388
394
389
- #: ../../howto/free-threading-extensions.rst:220
395
+ #: ../../howto/free-threading-extensions.rst:222
390
396
msgid ":c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS`"
391
397
msgstr ":c:macro:`Py_BEGIN_ALLOW_THREADS` 和 :c:macro:`Py_END_ALLOW_THREADS`"
392
398
393
- #: ../../howto/free-threading-extensions.rst:222
399
+ #: ../../howto/free-threading-extensions.rst:224
394
400
msgid ""
395
401
"These functions should still be used in the free-threaded build to manage "
396
402
"thread state even when the :term:`GIL` is disabled. For example, if you "
@@ -399,68 +405,68 @@ msgid ""
399
405
"Python thread state."
400
406
msgstr ""
401
407
402
- #: ../../howto/free-threading-extensions.rst:228
408
+ #: ../../howto/free-threading-extensions.rst:230
403
409
msgid ""
404
410
"You should continue to call :c:func:`PyEval_SaveThread` or :c:macro:"
405
411
"`Py_BEGIN_ALLOW_THREADS` around blocking operations, such as I/O or lock "
406
412
"acquisitions, to allow other threads to run the :term:`cyclic garbage "
407
413
"collector <garbage collection>`."
408
414
msgstr ""
409
415
410
- #: ../../howto/free-threading-extensions.rst:235
416
+ #: ../../howto/free-threading-extensions.rst:237
411
417
msgid "Protecting Internal Extension State"
412
418
msgstr ""
413
419
414
- #: ../../howto/free-threading-extensions.rst:237
420
+ #: ../../howto/free-threading-extensions.rst:239
415
421
msgid ""
416
422
"Your extension may have internal state that was previously protected by the "
417
423
"GIL. You may need to add locking to protect this state. The approach will "
418
424
"depend on your extension, but some common patterns include:"
419
425
msgstr ""
420
426
421
- #: ../../howto/free-threading-extensions.rst:241
427
+ #: ../../howto/free-threading-extensions.rst:243
422
428
msgid ""
423
429
"**Caches**: global caches are a common source of shared state. Consider "
424
430
"using a lock to protect the cache or disabling it in the free-threaded build "
425
431
"if the cache is not critical for performance."
426
432
msgstr ""
427
433
428
- #: ../../howto/free-threading-extensions.rst:244
434
+ #: ../../howto/free-threading-extensions.rst:246
429
435
msgid ""
430
436
"**Global State**: global state may need to be protected by a lock or moved "
431
437
"to thread local storage. C11 and C++11 provide the ``thread_local`` or "
432
438
"``_Thread_local`` for `thread-local storage <https://en.cppreference.com/w/c/"
433
439
"language/storage_duration>`_."
434
440
msgstr ""
435
441
436
- #: ../../howto/free-threading-extensions.rst:251
442
+ #: ../../howto/free-threading-extensions.rst:253
437
443
msgid "Building Extensions for the Free-Threaded Build"
438
444
msgstr ""
439
445
440
- #: ../../howto/free-threading-extensions.rst:253
446
+ #: ../../howto/free-threading-extensions.rst:255
441
447
msgid ""
442
448
"C API extensions need to be built specifically for the free-threaded build. "
443
449
"The wheels, shared libraries, and binaries are indicated by a ``t`` suffix."
444
450
msgstr ""
445
451
446
- #: ../../howto/free-threading-extensions.rst:256
452
+ #: ../../howto/free-threading-extensions.rst:258
447
453
msgid ""
448
454
"`pypa/manylinux <https://github.com/pypa/manylinux>`_ supports the free-"
449
455
"threaded build, with the ``t`` suffix, such as ``python3.13t``."
450
456
msgstr ""
451
457
452
- #: ../../howto/free-threading-extensions.rst:258
458
+ #: ../../howto/free-threading-extensions.rst:260
453
459
msgid ""
454
460
"`pypa/cibuildwheel <https://github.com/pypa/cibuildwheel>`_ supports the "
455
461
"free-threaded build if you set `CIBW_ENABLE to cpython-freethreading "
456
462
"<https://cibuildwheel.pypa.io/en/stable/options/#enable>`_."
457
463
msgstr ""
458
464
459
- #: ../../howto/free-threading-extensions.rst:263
465
+ #: ../../howto/free-threading-extensions.rst:265
460
466
msgid "Limited C API and Stable ABI"
461
467
msgstr ""
462
468
463
- #: ../../howto/free-threading-extensions.rst:265
469
+ #: ../../howto/free-threading-extensions.rst:267
464
470
msgid ""
465
471
"The free-threaded build does not currently support the :ref:`Limited C API "
466
472
"<limited-c-api>` or the stable ABI. If you use `setuptools <https://"
@@ -470,24 +476,24 @@ msgid ""
470
476
"API when building with the free-threaded build."
471
477
msgstr ""
472
478
473
- #: ../../howto/free-threading-extensions.rst:273
479
+ #: ../../howto/free-threading-extensions.rst:275
474
480
msgid ""
475
481
"You will need to build separate wheels specifically for the free-threaded "
476
482
"build. If you currently use the stable ABI, you can continue to build a "
477
483
"single wheel for multiple non-free-threaded Python versions."
478
484
msgstr ""
479
485
480
- #: ../../howto/free-threading-extensions.rst:279
486
+ #: ../../howto/free-threading-extensions.rst:281
481
487
msgid "Windows"
482
488
msgstr "Windows"
483
489
484
- #: ../../howto/free-threading-extensions.rst:281
490
+ #: ../../howto/free-threading-extensions.rst:283
485
491
msgid ""
486
492
"Due to a limitation of the official Windows installer, you will need to "
487
493
"manually define ``Py_GIL_DISABLED=1`` when building extensions from source."
488
494
msgstr ""
489
495
490
- #: ../../howto/free-threading-extensions.rst:286
496
+ #: ../../howto/free-threading-extensions.rst:288
491
497
msgid ""
492
498
"`Porting Extension Modules to Support Free-Threading <https://py-free-"
493
499
"threading.github.io/porting/>`_: A community-maintained porting guide for "
0 commit comments