[Python-Dev] PEP 332 revival in coordination with pep 349? [ Was:Re: release plan for 2.5 ?] (original) (raw)
Jim Jewett jimjjewett at gmail.com
Wed Feb 15 19:38:41 CET 2006
- Previous message: [Python-Dev] PEP 332 revival in coordination with pep 349? [ Was:Re: release plan for 2.5 ?]
- Next message: [Python-Dev] PEP 332 revival in coordination with pep 349? [ Was:Re: release plan for 2.5 ?]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2/14/06, Neil Schemenauer wrote:
People could spell it bytes(s.encode('latin-1'))
Guido wrote:
At the cost of an extra copying step.
I asked:
... why not just add some smarts to the bytes constructor?
Guido wrote:
... the VM usually keeps an extra reference on the stack so the refcount is never 1. But you can't rely on that
I did miss this, but _PyString_Resize seems to work around it, and I'm not sure that the bytes object can't be just as intimate.
Even if that is insurmountable, bytes objects could recognize two states -- one normal, and one for "I'm delegating to a string, and have to copy to my own buffer before I actually mutate anything."
Then a new bytes object would still need its own header, but the data copying could often be avoided.
But back to the possibility of not creating even a new object header...
the str's underlying array is allocated inline with the str header, this require str and bytes to have the same object layout. But since bytes are mutable, they can't.
Looking at the arraymodule, the only extra fields in an array are weakrefs, description (which will no longer be needed) and tracking for the indirection. There are even a few extra bytes leftover that could be used to indicate that ob_item was redirected later, the way tables do with small_table.
-jJ
- Previous message: [Python-Dev] PEP 332 revival in coordination with pep 349? [ Was:Re: release plan for 2.5 ?]
- Next message: [Python-Dev] PEP 332 revival in coordination with pep 349? [ Was:Re: release plan for 2.5 ?]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]