<font size="2">I think that&#39;s operating according to spec, no?<br></font><br><div class="gmail_quote">2011/3/17 Stephen Chung <span dir="ltr">&lt;<a href="mailto:Stephen.Chung@intexact.com">Stephen.Chung@intexact.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div dir="ltr" bgcolor="#ffffff" text="#000000">
<div dir="ltr">
<div style="font-family:&#39;Droid Sans&#39;;color:#080000;font-size:14pt">
<div><font size="4">Strange.  I was bitten by a bug that took me ages to 
figure out.  I was running Chrome 10 and it seems that V8’s native 
implementation of array prototype functions don’t iterate over sparse 
arrays.  Try “Array.prototype.map.call(new Array(10), function(x) { return 
999; })” which still returns a sparse array.</font></div>
<div><font size="4"></font> </div>
<div><font size="4">Neither does Safari 5, nor FireFox 4.</font></div>
<div><font size="4"></font> </div>
<div><font size="4">Currently, the dojo.* array functions are mapped to native 
implementations only for the webkitMobile flag.  We’ve got to be careful 
about this because, if the user turns on webkitMobile, obviously he/she intends 
to build for WebKit on a mobile device, which most likely will be running Nitro 
or V8...</font></div>
<div><font size="4"></font> </div>
<div><font size="4">- Stephen</font></div>
<div><font size="4"></font> </div>
<div style="font-style:normal;display:inline;font-family:&#39;Calibri&#39;;color:#000000;font-size:small;font-weight:normal;text-decoration:none">
<div style="font:10pt tahoma">
<div><font color="#080000" size="4" face="Droid Sans"></font> </div>
<div style="background:#f5f5f5">
<div><b>From:</b> <a title="dante@dojotoolkit.org" href="mailto:dante@dojotoolkit.org" target="_blank">Peter Higgins</a> </div>
<div><b>Sent:</b> Wednesday, 16 March, 2011 8:51 PM</div>
<div><b>To:</b> <a title="dojo-contributors@mail.dojotoolkit.org" href="mailto:dojo-contributors@mail.dojotoolkit.org" target="_blank">dojo dev.</a> </div>
<div><b>Subject:</b> Re: [dojo-contributors] Dojo 1.7 Goals: has() and granular 
dependency lists</div></div></div>
<div><font color="#080000" size="4" face="Droid Sans"></font> </div></div>
<div style="font-style:normal;display:inline;font-family:&#39;Calibri&#39;;color:#000000;font-size:small;font-weight:normal;text-decoration:none"><div><div></div><div class="h5">On 
3/15/11 11:18 PM, Bill Keese wrote: 
<blockquote type="cite"><font size="2">I&#39;d suggest just leaving array.js as is.</font> 
  <div><font size="2"><br></font></div>
  <div><font size="2">Although you could have a &quot; config-use-native-array&quot; flag, 
  it&#39;s probably not worth the confusion for users, especially since you need to 
  explain how dojo.forEach() etc. would behave differently depending on the 
  browser.</font></div>
  <div><font size="2"><br></font></div>
  <div><font size="2">About the webkitMobile build flag, I&#39;m not even sure that 
  anyone is using it, so don&#39;t take those code paths too 
  seriously.<br></font><br></div></blockquote>While it is very likely few people 
are using it, the reality of it is that we&#39;ve sent natives there for [however 
long] and no one seems have been bitten by the fact they are able to walk over 
sparse arrays. All the major libraries (afaik) don&#39;t do sparse arrays unless 
deferring to native, and it seems like either a) no one [as in more than just 
the no ones that use webkitmobile] uses sparse arrays in real life or b) see a. 
<br><br>~phiggins<br><br><br>
<blockquote type="cite">
  <div>
  <div class="gmail_quote">2011/3/16 Kris Zyp <span dir="ltr">&lt;<a href="mailto:kzyp@dojotoolkit.org" target="_blank">kzyp@dojotoolkit.org</a>&gt;</span><br>
  <blockquote style="border-left:rgb(204,204,204) 1px solid;margin:0pt 0pt 0pt 0.8ex;padding-left:1ex" class="gmail_quote">
    <div text="#000000" bgcolor="#FFFFFF">Interesting. Should we do 
    this?<br>if(has(&quot;array-foreach&quot;) &amp;&amp; 
    has(&quot;config-use-native-array&quot;)){<br>  /* native array methods 
    */<br><br>(where config-use-native-array defaults to 
    false)<br>Thanks,<br><font color="#888888">Kris</font> 
    <div>
    <div><br><br>On 3/15/2011 9:09 AM, Eugene Lazutkin wrote:<br>
    <blockquote type="cite">If memory serves me correctly, this decision (use 
      our implementation in<br>all browsers) was done because of two factors: in 
      almost all browsers<br>native implementations were *slower* than trivial 
      JavaScript once, and<br>because of space considerations --- why ship two 
      implemntations + a<br>switch between them, if there are no other 
      benefits?<br><br>Just ran a test in Chrome 11 on Linux --- native versions 
      2-3 times<br>slower on this benchmark: <a href="http://www.perfjs.com/#638003" target="_blank">http://www.perfjs.com/#638003</a><br><br>I tried it 
      on FF3.6 --- forEach is twice slower, yet reduce* is almost<br>the 
      same.<br><br>It appears that the current generation of browsers do not 
      give us clear<br>incentive to switch, other than for possible build 
      reduction purposes.<br><br>Cheers,<br><br>Eugene Lazutkin<br><a href="http://lazutkin.com/" target="_blank">http://lazutkin.com/</a><br><br>On 03/15/2011 08:32 
      AM, Peter Higgins wrote:<br>&gt; All the array utilities do this in the 
      webkit mobile build (use natives,<br>&gt; weird weird pragma at the 
      bottom), but we were never serving native<br>&gt; iterators as our own 
      even in browsers that support it.<br><br>&gt; On 3/15/11 9:13 AM, Kris Zyp 
      wrote:<br>&gt;&gt; On 3/14/2011 10:24 PM, Bill Keese 
      wrote:<br>&gt;&gt;&gt; Doesn&#39;t your patch break 
      backwards-compatibility?     Note the<br>&gt;&gt;&gt; 
      comment in all the methods in the current 
      code:<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; //This method corresponds to the 
      JavaScript 1.6 Array.indexOf method,<br>&gt;&gt;&gt; with one difference: 
      when<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; //run over sparse arrays, the Dojo 
      function invokes the callback for<br>&gt;&gt;&gt; every index whereas 
      JavaScript<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; //1.6&#39;s indexOf skips the holes 
      in the sparse 
      array.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; I didn&#39;t 
      write any new code, I just switched from the old build pragma<br>&gt;&gt; 
      to has() branching. If it is not backwards-compatible, it hasn&#39;t 
      been<br>&gt;&gt; backwards-compatible for sometime... So it is 
      backwards-compatible<br>&gt;&gt; with the old backwards-incompatibility 
      ;).<br>&gt;&gt;<br>&gt;&gt; Kris<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; 
      _______________________________________________<br>&gt;&gt; 
      dojo-contributors mailing list<br>&gt;&gt; <a href="mailto:dojo-contributors@mail.dojotoolkit.org" target="_blank">dojo-contributors@mail.dojotoolkit.org</a><br>&gt;&gt; 
      <a href="http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors" target="_blank">http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors</a><br><br><br><br>&gt; 
      _______________________________________________<br>&gt; dojo-contributors 
      mailing list<br>&gt; <a href="mailto:dojo-contributors@mail.dojotoolkit.org" target="_blank">dojo-contributors@mail.dojotoolkit.org</a><br>&gt; 
      <a href="http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors" target="_blank">http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors</a><br></blockquote><span style="white-space:pre-wrap">&gt;<br>
_______________________________________________<br><br>&gt; 
    dojo-contributors mailing list<br><br>&gt; <a href="mailto:dojo-contributors@mail.dojotoolkit.org" target="_blank">dojo-contributors@mail.dojotoolkit.org</a><br><br>&gt;<br><a href="http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors" target="_blank">http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors</a></span><br>
<br><br></div></div></div><br>_______________________________________________<br>dojo-contributors 
    mailing list<br><a href="mailto:dojo-contributors@mail.dojotoolkit.org" target="_blank">dojo-contributors@mail.dojotoolkit.org</a><br><a href="http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors" target="_blank">http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors</a><br>
<br></blockquote></div>
  <div> </div></div><pre><fieldset></fieldset>
_______________________________________________
dojo-contributors mailing list
<a href="mailto:dojo-contributors@mail.dojotoolkit.org" target="_blank">dojo-contributors@mail.dojotoolkit.org</a>
<a href="http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors" target="_blank">http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors</a>
</pre></blockquote><br>
</div></div><p>
</p><hr><div class="im">
_______________________________________________<br>dojo-contributors mailing 
list<br><a href="mailto:dojo-contributors@mail.dojotoolkit.org" target="_blank">dojo-contributors@mail.dojotoolkit.org</a><br><a href="http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors" target="_blank">http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors</a><br>

</div><p>
</p><hr>
<br>No virus found in this incoming message.<br>Checked by AVG - <a href="http://www.avg.com" target="_blank">www.avg.com</a> 
<br>Version: 9.0.894 / Virus Database: 271.1.1/3509 - Release Date: 03/16/11 
03:34:00<br><p></p><p></p></div></div></div></div>
<br>_______________________________________________<br>
dojo-contributors mailing list<br>
<a href="mailto:dojo-contributors@mail.dojotoolkit.org">dojo-contributors@mail.dojotoolkit.org</a><br>
<a href="http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors" target="_blank">http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors</a><br>
<br></blockquote></div><br>