- From: Mark S. Miller <erights@google.com>
- Date: Thu, 13 May 2010 20:24:08 -0700
- To: Vladimir Vukicevic <vladimir@mozilla.com>
- Cc: Erik Arvidsson <erik.arvidsson@gmail.com>, arun@mozilla.com, public-script-coord@w3.org, es-discuss@mozilla.org
- Message-ID: <AANLkTimTwJ5QHf6xY3fbh3Gqnxk4_WgqW8GVLJs4ODv3@mail.gmail.com>
On Thu, May 13, 2010 at 5:43 PM, Vladimir Vukicevic <vladimir@mozilla.com>wrote:
> Ah right -- sorry, I keep thinking in terms of ES4. A sealed object
> certainly makes sense, though it also means that other named properties
> can't be attached... this was brought up as a desired thing,
>
No problem:
function UInt8Array(size) {
const result = [];
for (let i = 0; i < size; i++) {
let value = 0; // Relies on ES-Harmony block level scoping of "let"
Object.defineProperty(result, i, {
get: function() { return value; },
set: function(newValue) {
if (notUInt8(newValue)) { throw new TypeError("oops"); }
value = newValue;
},
enumerable: true
});
}
Object.defineProperty(result, 'length', {value: size});
return result;
}
> though I would be quite happy to just have them be sealed. Anyways,
> certainly something that should be discussed... the spec as written was
> using an odd mix of Web IDL and other language because we weren't sure where
> or how it would land. This is where I think the input of the ES group would
> be very welcome -- I don't think we have the ES language knowledge to really
> define this in terms of how it could look as an ES core feature.
>
> However, another consideration is that the WebGL spec isn't ES specific,
> and yet has to depend on typed arrays. So perhaps we're really talking
> about two different specs: a main typed array spec that uses Web IDL and can
> be implemented generically in any language, as well as a separate spec
> describing ES types that happen to fulfill the requirements of typed arrays.
>
> - Vlad
>
>
> ----- "Mark S. Miller" <erights@google.com> wrote:
>
> On Thu, May 13, 2010 at 5:15 PM, Vladimir Vukicevic <vladimir@mozilla.com>wrote:
>
>> This is difficult to do, given the goals of typed arrays -- they wouldn't
>> behave like normal Arrays in most meaningful ways. At the core, an
>> ArrayBuffer is of fixed size, and it doesn't make sense to index an
>> ArrayBuffer directly (because there's no indication of what format the data
>> should be accessed in). Making the array view types instances of Array
>> might work, but again given that they're fixed length, there's a significant
>> difference there.
>>
>
> in ES5:
>
> var x = [];
> for (var i = 0; i < N; i++) {
> x.push(0);
> }
> Object.seal(x);
>
> The x that results from the above code is fully populated, of fixed length,
> and must remain fully populated. It is much closer to what programmers
> coming from other languages might regard as an array.
>
> UInt8Array can even be described as
>
> function UInt8Array(size) {
> const result = [];
> for (let i = 0; i < size; i++) {
> let value = 0; // Relies on ES-Harmony block level scoping of "let"
> Object.defineProperty(result, i, {
> get: function() { return value; },
> set: function(newValue) {
> if (notUInt8(newValue)) { throw new TypeError("oops"); }
> value = newValue;
> },
> enumerable: true
> }
> }
> return Object.seal(result);
> }
>
> Since the result is simply a constrained array, it still inherits all our
> nice shiny higher order methods from Array.prototype.
>
> I am of course not suggesting that it be implemented that way. I'm not sure
> I'm even suggesting that it be specified that way. I'm only observing that a
> fixed length type-limited array is not necessarily at odds with the concepts
> already present in the language.
>
>
>
>
>>
>> - Vlad
>>
>>
>>
>> ----- "Erik Arvidsson" <erik.arvidsson@gmail.com> wrote:
>>
>> I'm surprised no one has said this yet but here goes:
>>
>> ArrayBuffer needs to extend Array. In other words instances of
>> ArrayBuffer needs to also be instances of Array
>>
>> var ab = new ArrayBuffer;
>> assert(ab instanceof ArrayBuffer);
>> assert(ab instanceof Array);
>>
>> You will also need to make sure that all the internal methods are
>> defined. See 8.12 Algorithms for Object Internal Methods of ES5. For
>> example what does it mean to do [[Delete]] on a byte array?
>>
>>
>> On Thu, May 13, 2010 at 05:57, Arun Ranganathan <arun@mozilla.com> wrote:
>> > Greetings, TC-39 WG and script mavens!
>> >
>> > Browser vendors participating in the WebGL WG intend to implement the
>> "Typed
>> > Arrays" specification, allowing for greater manipulation of binary data:
>> >
>> >
>> https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/TypedArray-spec.html
>> >
>> > The draft specification (a work in progress) resides at Khronos, which
>> is
>> > typically an unusual home for something integral to the rest of the web
>> > platform. Khronos is where we work on WebGL, which enjoys Google,
>> Opera,
>> > Mozilla, and Apple participation, amongst other organizations.
>> >
>> > The general usefulness of constructs such as ArrayBuffers (covered in
>> the
>> > "Typed Arrays" draft specification) lends itself to other web platform
>> > specifications, such as the File API, parts of which are implemented in
>> > Firefox 3.6.3:
>> >
>> > http://dev.w3.org/2006/webapi/FileAPI/
>> >
>> > In the above draft (also a work in progress), the Blob interface exposes
>> an
>> > ArrayBuffer property, which can then be used with different views.
>> >
>> > While implementations are currently proceeding unimpeded by
>> standards-track
>> > considerations, it would be useful if Typed Arrays were taken on as a
>> work
>> > item by TC-39, for more general inclusion in JavaScript. Should it live
>> > elsewhere, and if so, where?
>> >
>> > -- A*
>> > _______________________________________________
>> > es-discuss mailing list
>> > es-discuss@mozilla.org
>> > https://mail.mozilla.org/listinfo/es-discuss
>> >
>>
>>
>>
>> --
>> erik
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
>
> --
> Cheers,
> --MarkM
>
>
>
--
Cheers,
--MarkM
Received on Friday, 14 May 2010 03:25:27 UTC