<html><head><base href="x-msg://40/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; " applecontenteditable="true"><br><div><div>On Jan 26, 2010, at 1:13 AM, Vladimir Vukicevic wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div><div style="font-family: Arial; font-size: 10pt; color: rgb(0, 0, 0); ">I've got a standalone typed array spec pulled out here:<span class="Apple-converted-space"> </span><a href="http://people.mozilla.com/~vladimir/jsvec/TypedArray-spec.html">http://people.mozilla.com/~vladimir/jsvec/TypedArray-spec.html</a><br><br>It still needs a decent amount of work, but I think it conveys the basic idea.  Brendan Eich has suggested that I send this to the es-discuss list (ecmascript group) and to put a strawman proposal up for them to discuss during their meetings this week; I'll do that as well to get their feedback and thoughts.  It would be interesting to have this functionality be a core part of ES, or at least as part of a standard library of some kind.<br></div></div></span></blockquote><div><br></div><div>Comments:</div><div><br></div><div>1) I really liked the table in 5.14.3, which BYTES_PER_ELEMENT rather than 'Size', or have some other way to relate these two.</div><div><br></div><div>2) I'd like to see the WebIDL for everything</div><div><br></div><div>3) I think slice() should definitely return a reference to the original ArrayBuffer. You show the code you'd use make a copy, which I think is sufficient.</div><div><br></div><div>4) There is a good way to copy an ArrayBuffer:</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>var newBuf = (<span class="Apple-tab-span" style="white-space:pre">new Int8Array(otherArray.slice(1,10))</span>).buffer;</div><div><br></div><div>Isn't that sufficient?</div><div><br></div><div>5) I think endianness will be the biggest issue here. I think we need a way to load data into the array in a machine independent way. For instance, there should be a way to put an array of bytes into a FloatArray, when the bytes are in different orders, like big, little endian and network order. I like using the term "network order" because I never remember if that's big or little endian. Maybe a serialize/deserialize semantic could be used? For instance:</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>var bytes; // data from the network</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>var floats = new FloatArray(bytes, NetworkOrder);</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>var outBytes = new ByteArray(floats, NetworkOrder);</div><div><br></div><div>Some or all of the Array classes would have a new ctor which would take a ByteArray (or UnsignedByteArray?) and an enum saying it's byte order. Likewise ByteArray would have a ctor which would take any of the other types and an enum. Would that be enough?</div><div><br></div><div><br></div><div>My biggest concern about this is getting it out the door quickly. Is ECMA the way to do that? Would it be better as a W3C recommendation?</div><div><br></div></div><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div>-----</div><div>~Chris</div><div><a href="mailto:cmarrin@apple.com">cmarrin@apple.com</a></div><div><br class="khtml-block-placeholder"></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline"></span>
</div>
<br></body></html>