Protocol defines how code accesses an object's underlying memory (for example, bytes, bytearray, and array.array). Nathan Goldbaum's summit talk focused on three areas: consolidating documentation, adding protocol-level support for safe concurrent access, and enabling custom data types in the format language.
The Buffer Protocol supports a struct-style format language that covers records, field names, subarrays, byte order, alignment, and complex numbers. Parts of this grammar are underspecified across PEP 3118 and third-party implementations like NumPy. Goldbaum proposed documenting the full grammar in the official Python docs and publishing a HOWTO for exporters and consumers. The HOWTO would include complete C examples covering validation, cleanup, ownership, and safe thread use.
Current protocol facilities expose stable storage addresses but do not coordinate concurrent reads and writes at the protocol level. A readonly flag exists per view, but writable access cannot be made exclusive across multiple views.
This proposal leaves existing APIs (PyObject_GetBuffer, PyBuffer_Release, etc.) unchanged. Exporters would advertise available access modes via PyObject_GetBufferAccessModes(), and consumers would request leases only when the exporter supports them. An implementation similar to this idea is already being developed, and Kumar Aditya is working on NumPy changes to interoperate with the proposed PEP.
Custom data types in the format language
Community questions and constraints
Draft PEPs and prototype implementations are available for review. The proposal aims to provide clearer documentation, safer concurrency for buffer access, and a practical path for interoperable custom data types while avoiding changes to the existing Stable ABI.