Pulse 게시 ·

Python 버퍼 프로토콜, 읽기·쓰기 조율과 사용자 정의 타입 확장 제안

Python이 9월 30일 공개한 Language Summit 회고에서 메모리 버퍼의 동시 접근을 조율하는 API 제안을 소개했다. 공유 읽기·독점 쓰기 권한을 빌려 쓰며, 충돌하면 기다리지 않고 실패한다. 사용자 정의 데이터 타입 확장도 제안됐으며, 두 안 모두 초안 단계다.

PyBufferLease와 PyBufferAccessState를 통해 버퍼 접근 방식을 미리 선언하는 제안이다.

EXCLUSIVE_WRITE는 겹치는 메모리에 대한 다른 접근을 배제하며, 호환되지 않는 임대가 있으면 획득 요청이 즉시 실패한다.

기존 버퍼 API는 유지하고, 새 접근 모드를 명시적으로 지원하는 객체에만 임대 API를 사용한다.

사용자 정의 타입은 라이브러리 네임스페이스로 구분하며, 모르는 타입은 버퍼를 해석하지 않고 거부하도록 제안했다.

C 확장 작성자가 API를 잘못 사용하면 메모리 손상이 가능하다고 설명했다.

C 확장이 GIL을 해제하고 버퍼를 처리할 때, 메모리 주소의 안정성뿐 아니라 다른 작업의 내용 변경도 조율하려는 설계다.

원문