<HTML><HEAD></HEAD>
<BODY 
style="WORD-WRAP: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space" 
dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt">
<DIV>Hi Ben,</DIV>
<DIV>&nbsp;</DIV>
<DIV>I have it working for 1.6 – there is a doc here: <A 
title=http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf 
href="http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf">http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf</A></DIV>
<DIV>&nbsp;</DIV>
<DIV>I’ve put my changed scripts into a Github project: <A 
title=https://github.com/schungx/Dojo-Closure-Advanced 
href="https://github.com/schungx/Dojo-Closure-Advanced">https://github.com/schungx/Dojo-Closure-Advanced</A></DIV>
<DIV>&nbsp;</DIV>
<DIV>With this and 1.6, I have some stats with a mobile web app I wrote: about 
10-15% faster on iPad, 25% faster on an Android tablet.&nbsp; I was able to 
eliminate (flatten) the “dojo”, “dijit” and “dojox” objects and the entire 
sub-trees underneath.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I suppose it can be done much better with 1.7 since AMD is easier to 
process than the original dojo.require/dojo.provide/dojo.declare combos, and the 
new build system will be much better since it can process AST instead of relying 
on regex’s.&nbsp; I have just started looking at 1.7 now it is out...</DIV>
<DIV>&nbsp;</DIV>
<DIV>- Stephen</DIV>
<DIV>&nbsp;</DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">
<DIV style="FONT: 10pt tahoma">
<DIV>&nbsp;</DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=neonstalwart@gmail.com 
href="mailto:neonstalwart@gmail.com">ben hockey</A> </DIV>
<DIV><B>Sent:</B> Sunday, 4 December, 2011 10:41 AM</DIV>
<DIV><B>To:</B> <A title=dojo-contributors@mail.dojotoolkit.org 
href="mailto:dojo-contributors@mail.dojotoolkit.org">dojo dev.</A> </DIV>
<DIV><B>Subject:</B> Re: [dojo-contributors] Closure Compiler advanced 
optimizationswith dojo/AMD code</DIV></DIV></DIV>
<DIV>&nbsp;</DIV></DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">optimizing 
property names of objects is definitely one big part of what advanced mode 
does.&nbsp; as stephen pointed out, renaming "_setFooAttr" to "x" breaks/changes 
all calls to widget.set('foo', xyz) since we expect the setter function to be 
named "_setFooAttr".&nbsp; however, if there are other things to be gained by 
advanced mode (which i understand there is) and we can stop (or work around or 
fix) the property name optimizations then we have a net gain. 
<DIV>&nbsp;</DIV>
<DIV>hmm... i just had a thought about my recent compose.js ramblings.&nbsp; i 
think you could make something similar to my DefineProperty work in a way that 
property name optimizations would still work.&nbsp; in fact, rawld does 
something similar in backdraft and to be honest, i should give backdraft some 
credit as inspiration for playing with these ideas.</DIV>
<DIV>&nbsp;</DIV>
<DIV>what i mentioned previously was this:</DIV>
<DIV>&nbsp;</DIV>
<DIV>
<DIV>var MyWidget = WidgetBase.extend({</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>foo: 
DefineProperty({</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>get: function () 
{</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>return 
this.foo;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>},</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>set: function 
(value) {</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>this.foo = 
value;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>},</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>value: 
'xyz'</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>})</DIV>
<DIV>&nbsp; });</DIV>
<DIV>&nbsp;</DIV>
<DIV>changing to the form below would probably be safe with property name 
optimizations since DefineProperty would actually return something like: </DIV>
<DIV>{</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>foo: ...</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>_setFooAttr: 
...</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>_getFooAttr: 
...</DIV>
<DIV>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>and the usage would be:</DIV>
<DIV>&nbsp;</DIV>
<DIV>
<DIV>var MyWidget = WidgetBase.extend(DefineProperty('foo', {</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>get: function () 
{</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>return 
this['foo'];</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>},</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>set: function 
(value) {</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>this['foo'] = 
value;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>},</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>value: 
'xyz'</DIV>
<DIV>}));</DIV></DIV>
<DIV>&nbsp;</DIV>
<DIV>that's certainly a more substantial reason to use that style than just 
syntactic sugar or looking cool.&nbsp; some property names probably still need 
to be quoted but "helper" functions like _setFooAttr don't need to be quoted 
everywhere since they're programatically generated and not actually mentioned in 
the source code.</DIV>
<DIV>&nbsp;</DIV>
<DIV>ben...<BR>
<DIV>&nbsp;</DIV>
<DIV>
<DIV>&nbsp;</DIV>
<DIV>
<DIV>On Dec 3, 2011, at 9:05 PM, Bill Keese wrote:</DIV><BR 
class=Apple-interchange-newline>
<BLOCKQUOTE type="cite"><FONT size=2>Isn't the point of using closure 
  [advanced mode] to optimize the export names (known in the old world as global 
  variables)?&nbsp;&nbsp; If it was just a question of optimizing local 
  variables, shrinksafe etc. can do it.&nbsp;&nbsp; I thought the charm of 
  closure was that it converted every reference to "getComputedStyle" into "g7" 
  or something.</FONT> 
  <DIV>&nbsp;</DIV>
  <DIV>
  <DIV class=gmail_quote>On Sun, Dec 4, 2011 at 10:55 AM, ben hockey <SPAN 
  dir=ltr>&lt;<A 
  href="mailto:neonstalwart@gmail.com">neonstalwart@gmail.com</A>&gt;</SPAN> 
  wrote:<BR>
  <BLOCKQUOTE 
  style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
  class=gmail_quote>i was wondering about that issue myself...<BR><BR>have you 
    confirmed that this problem is NOT solved?&nbsp; i haven't looked<BR>at this 
    in depth yet so i don't know if that was even considered.<BR>however, i 
    would imagine that it might be possible that if you could<BR>make the 
    closure compiler understand AMD then you might be able to<BR>make it also 
    realize that the property names for anything exported<BR>from a module 
    cannot be minified.&nbsp; that's just a wild guess.&nbsp; i think<BR>if the 
    compiler understood that much about AMD then it should work.<BR>is that 
    right?<BR><SPAN class=HOEnZb><FONT 
color=#888888><BR>ben...<BR></FONT></SPAN>
    <DIV class=HOEnZb>
    <DIV class=h5><BR>On Dec 3, 2011, at 7:58 PM, Stephen Chung 
    wrote:<BR><BR>&gt; Sorry to disappoint you, but not so fast...&nbsp; 
    Translating AMD code to<BR>&gt; Closure<BR>&gt; modules is only the easy 
    part.&nbsp; The really hard part involves<BR>&gt; automatic<BR>&gt; handling 
    of all property accesses via string names -- and all those<BR>&gt; 
    on("event"...), _setXXXAttr() etc. calls, eliminate/translate-away<BR>&gt; 
    object<BR>&gt; alias usages, as well as converting Dojo-style docs to 
    Closure-style<BR>&gt; JsDoc-variants.<BR>&gt;<BR>&gt; - 
    Stephen<BR>&gt;<BR>&gt; -----Original Message-----<BR>&gt; From: Chris 
    Mitchell<BR>&gt; Sent: Saturday, 3 December, 2011 6:25 AM<BR>&gt; To: dojo 
    dev.<BR>&gt; Subject: Re: [dojo-contributors] Closure Compiler 
    advanced<BR>&gt; optimizations<BR>&gt; with dojo/AMD code<BR>&gt;<BR>&gt; 
    excellent!<BR>&gt;<BR>&gt; On Fri, Dec 2, 2011 at 5:14 PM, James Burke 
    &lt;<A 
    href="mailto:jburke@dojotoolkit.org">jburke@dojotoolkit.org</A>&gt;<BR>&gt; 
    wrote:<BR>&gt;&gt; Malte Ubl has been doing some interesting transforms for 
    AMD and<BR>&gt;&gt; commonjs code to allow the use of advanced mode 
    optimizations in<BR>&gt;&gt; Closure Compiler on AMD code, and in particular 
    on Dojo:<BR>&gt;&gt;<BR>&gt;&gt; <A 
    href="https://plus.google.com/u/0/116910304844117268718/posts/5gLAFP4eK9f" 
    target=_blank>https://plus.google.com/u/0/116910304844117268718/posts/5gLAFP4eK9f</A><BR>&gt;&gt;<BR>&gt;&gt; 
    See his most recent comment.<BR>&gt;&gt;<BR>&gt;&gt; James<BR>&gt;&gt; 
    _______________________________________________<BR>&gt;&gt; 
    dojo-contributors mailing list<BR>&gt;&gt; <A 
    href="mailto:dojo-contributors@mail.dojotoolkit.org">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>&gt; 
    _______________________________________________<BR>&gt; dojo-contributors 
    mailing list<BR>&gt; <A 
    href="mailto:dojo-contributors@mail.dojotoolkit.org">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>&gt;<BR>&gt; 
    _______________________________________________<BR>&gt; dojo-contributors 
    mailing list<BR>&gt; <A 
    href="mailto:dojo-contributors@mail.dojotoolkit.org">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><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></DIV></DIV></BLOCKQUOTE></DIV>
  <DIV>&nbsp;</DIV></DIV>_______________________________________________<BR>dojo-contributors 
  mailing list<BR><A 
  href="mailto:dojo-contributors@mail.dojotoolkit.org">dojo-contributors@mail.dojotoolkit.org</A><BR>http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors<BR></BLOCKQUOTE></DIV>
<DIV>&nbsp;</DIV></DIV></DIV></DIV>
<P>
<HR>
_______________________________________________<BR>dojo-contributors mailing 
list<BR>dojo-contributors@mail.dojotoolkit.org<BR>http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors<BR></DIV></DIV></DIV></BODY></HTML>