[Python-Dev] pre-PEP: The Safe Buffer Interface

Guido van Rossum guido@python.org
2002年7月29日 11:00:51 -0400


Thomas,
I like your PEP. Could you clean it up (changing 'large' into 'safe'
etc.) and send it to Barry? Some comments:
> Backward Compatibility
>> There are no backward compatibility problems.

That's a simplification of the truth -- you're adding two new fields
to an existing struct. But the flag bit you add makes that old and
new versions of the struct can be distinguished.
> It may be a good idea to expose the following convenience functions:
>> int PyObject_AsSafeReadBuffer(PyObject *obj,
> void **buffer,
> size_t *buffer_len);
>> int PyObject_AsSafeWriteBuffer(PyObject *obj,
> void **buffer,
> size_t *buffer_len);
>> These functions return 0 on success, set buffer to the memory
> location and buffer_len to the length of the memory block in
> bytes. On failure, they return -1 and set an exception.

Please make these a manadatory part of the proposal.
Please also try to summarize the discussion so far here. My personal
opinion: locking seems the wrong approach, given the danger of
deadlock; Scintilla can use the existing buffer protocol, assuming its
buffer doesn't move as long as you don't release the GIL and don't
make calls into Scintilla.
--Guido van Rossum (home page: http://www.python.org/~guido/)

AltStyle によって変換されたページ (->オリジナル) /