Hi, While waiting for more folks to examine the release branch packages, I try find time to find easy ways to make HelloWorld smaller. Currently, it is 62K of minified JS. IMO, that's too big!
I think I can get some classes to drop away via more @flexjsignorecoercions. The list of interfaces in the output is pretty large and I'll bet most are not needed at runtime. But another sore spot for me is the CSS output. This is true even for regular Flex: the CSS output contains EVERY class selector. The compiler knows how to prune out unused type selectors, but it always keeps every class selector. IOW, if you look at the CSS and see ".DataGridListArea", that's a class selector. But if you see "DataGrid" (no starting '.') that’s a type selector and for HelloWorld, which has just a Label, the DataGrid type selector is not in the output and any dependencies it brings it are not in the output either. But in HelloWorld today, ".DataGridListArea" is in the output for HelloWorld. In looking at the compiler code, we could somehow mark our class selectors in a way that they will be removed if the type related to the name isn't in the output. IOW, we need to know to keep class selectors like ".myClassSelector", but know to get rid of .DataGridListArea if DataGrid is not in the output. I've worked around this in the past by creating new classes. In this case, if .DataGridListArea is applied to a Group, then make a subclass of Group called DataGridListArea and change the class selector to a type selector. The problem is that the definition of the DataGridListArea class takes up room in the output, so it would be slightly better to find a way to prune class selectors. Maybe class selectors we want to prune should start with the type name surrounded by '$", so .$DataGrid$ListArea. Then the compiler could easily check for two '$' and see if the class in-between is being kept in the output or not. Thoughts? -Alex