Would also be a great opportunity to eventually cleanup some really anoying quirks in the Language specification ... stuff like if you try to cast to Array, you get a new one containing the input as single element ...
var test:* = ["lalala", "dumdidum"]; var arr:Array = Array(test); trace(arr); returns something like this: [["lalala", "dumdidum"]] if I do var test:* = ["lalala", "dumdidum"]; var arr:Array = test as Array; trace(arr); I get: ["lalala", "dumdidum"] I think there were one or two other exceptions, that really really anoy me and probably others too. Chris ________________________________ Von: Josh Tynjala <joshtynj...@gmail.com> Gesendet: Mittwoch, 28. September 2016 02:50:12 An: dev@flex.apache.org Betreff: Re: Generics (was: Re: AW: [Falcon] Proposal for new ActionScript language feature: Optionally rename an import) I agree with your point about numerous changes. I think that's something that I didn't fully catch when reading your message. I think it's important to start very small. For one, to get familiar with the process, and two, to get a baseline for what might be too drastic, based on feedback and things. Changing a programming language is a big deal, especially for those of us who aren't primarily language designers. Let's take baby steps, but not shy away completely. I think focusing on specific things that cause annoyances, or hesitation to adopt, is a good way to focus and not go too crazy. Let's have developers come back to something familiar, but also a little improved. - Josh On Sep 27, 2016 5:05 PM, "Greg Dove" <greg.d...@gmail.com> wrote: > I think I expressed clear support for that feature. Please do not read > otherwise. > I support it, and I agree that it is a step forward, and I also don't think > it could have any real negative consequences in isolation so long as people > don't try the new code in an old compiler. > > My comments were more to provoke thinking of the possible implications of > making *numerous* changes to the language. It was not even intended to be > read as a reason 'not to do' something, but just to consider implications. > > I too have faced the exact same Event import annoyance so, as I said I > would welcome this change for sure. I don't have any personal issue with > *any* of this, including the other language features mentioned. Again, I > would welcome them for my own use. What I don't know is whether I (you, we) > acurately represent the bulk of people who would be interested in using > FlexJS (I was a marketer in a former career so spent a lot of time thinking > like this, dissociating my own views about what was 'obvious' from > decision-making, and collecting the type of feedback you described before > decisions were even made about changing things). > > I have also seen a number of discussions in the other project I mentioned > over the years where there was tension over new features ('complicated' vs. > 'familiar') so I am really just sharing that part of what I have observed > elsewhere. > > e.g. "How important is familiarity in terms of popularity" > > If (hypothetically) returning actionscripters will represent the bulk of > FlexJS users, will they be daunted by something that is unfamiliar? > If (also hypothetically) you knew this to be true, it doesn't mean you > can't do things about it, you could plan for it and make it more welcoming > for them with loads of examples, tutorials, and messages to make sure they > still felt 'at home' with the language etc. Not doing the right thing might > 'hinder' growth. > > The other point I think is not illogical either - the more you become > similar to something else that has other advantages (e.g. maturity), the > more your points of difference need to be strong (both in terms of their > actual implementation and in terms of how you manage their perception, the > latter not always being front-of-mind for developers). > > I left marketing because I much prefer the direct cause and effect > relationship associated with programming. But that doesn't stop me > sometimes from thinking in my old ways. However I shall switch off those > neurons now. > > The answer to all this (adding the extra features like generics and enums) > might simply be "we can't get distracted by all that other stuff, let's do > what works well for us". If this still results in a viable and vibrant > future for FlexJS, then I am sold. > > > > On Wed, Sep 28, 2016 at 11:30 AM, Josh Tynjala <joshtynj...@gmail.com> > wrote: > > > I want to add a small feature that is meant to help developers with a > real > > annoyance that I have seen repeated complaints about over the years. It's > > something I've run into myself, as you could see from the Starling > examples > > I included in my original post. I'm baffled that anyone would say that an > > optional new feature with this kind of targeted impact could possibly > > hinder the cause. > > > > ActionScript remaining completely stagnant for years is frequently stated > > as a reason why people choose to stop using it. It's been too long, and > > even if the improvements are small, I believe they will be welcomed. > Sure, > > we might see some "too little, too late" responses, but snarky comments > go > > with the territory. None of us would still be here if that kind of stuff > > bothered us. > > > > Finally, I'm all for comparisons being made to other technologies. If > we're > > a part of the conversation, it means we're doing something right. It's > okay > > if some people ultimately choose the other side of the comparison. If > > anything, the feedback about why they chose the other option will help us > > see where we need to improve. We need people talking about FlexJS and > > transpiled ActionScript. Even if it's "that's not right for me > because...", > > they cared enough to say something, and that's actually a big deal, in my > > opinion. > > > > - Josh > > > > On Tue, Sep 27, 2016 at 2:45 PM, Greg Dove <greg.d...@gmail.com> wrote: > > > > > My 2 cents: > > > Haxe as a language already has features like this (and many more) as > well > > > as being very mature, and not too distant from actionscript. > > > > > > I see the 'import as' feature as definitely helpful (I would use it for > > > sure), but I feel that if you tried to make actionscript too much like > > Haxe > > > (which also targets js and swf, along with numerous other targets) then > > the > > > mxml and framework side of things needs to be a very strong point of > > > differentiation when others seek to compare Haxe and Falcon/AS. (I > think > > > there may also be some xml based declarative support libraries for Haxe > > as > > > well, although I have not looked into that). > > > > > > A couple of things to consider before making changes: > > > -How important is familiarity in terms of popularity? > > > -The more you encroach on something else with those features, the more > > you > > > will have direct comparisons made. If you get 'too similar', it is I > > think > > > more likely that the more mature option will 'win' in a comparison. > > > > > > I like both Haxe and actionscript for different reasons, and I am > > > comfortable with liking both (some people tend to be more polar in > their > > > views!). > > > I personally would also welcome these features in actionscript. But I > do > > > wonder whether it helps or hinders the long term cause. > > > </2cents> > > > > > > > > > On Wed, Sep 28, 2016 at 9:40 AM, Christofer Dutz < > > > christofer.d...@c-ware.de> > > > wrote: > > > > > > > Hi Alex, > > > > > > > > > > > > No matter what language, I think Generics are usually a compile time > > > > thing. I bet the MS guys won't be able to implement Runtime generics > on > > > top > > > > of JavaScript :) > > > > > > > > I think the Parser part would be the part I can help with ... I like > > > Antlr > > > > (even the old versions) I should manage to adjust the parser grammar > to > > > > produce some additional AST nodes. It was more the other part that I > > was > > > > worried about. Seems together this would be a huge thing. Espsecially > > > > because I noticed people drop all their predudices against Flex as > soon > > > as > > > > you state: "We're more or less the same as TypeScript, but we have > > loads > > > of > > > > well established libraries to use" ... currently the thing I always > > here > > > is > > > > "but Typescript has Generics ... and I like Generics" I would so > > > > desperately like to get rid of that reply ;-) > > > > > > > > > > > > Chris > > > > > > > > ________________________________ > > > > Von: Alex Harui <aha...@adobe.com> > > > > Gesendet: Dienstag, 27. September 2016 22:25:46 > > > > An: dev@flex.apache.org > > > > Betreff: Generics (was: Re: AW: [Falcon] Proposal for new > ActionScript > > > > language feature: Optionally rename an import) > > > > > > > > It should be possible to add compile-time language features like > > > Generics. > > > > There might be issues around runtime type conversions though. > > > > > > > > I'd be willing to help with the AST->output side. For me the part > that > > > > wouldn't be any fun would be in changing the parser to build out the > > AST. > > > > If someone can make the changes to create a tree of new Node > > subclasses, > > > I > > > > will try to get the right JS and SWF output to happen. The SWF > output > > > > would probably be the hardest. > > > > > > > > -Alex > > > > > > > > On 9/27/16, 8:10 AM, "Christofer Dutz" <christofer.d...@c-ware.de> > > > wrote: > > > > > > > > >In general I have no objections and something like this could > > sometimes > > > > >be really handy. But I with this we could be writing code that is > > called > > > > >ActionScript3 but without it actually being ActionScript3. > > > > > > > > > > > > > > >While preparing my talk to Solutions.Hamburg a few weeks ago, I had > a > > > > >detailed look at Typescript and noticed with a little jealousy some > > > > >language features I would really like to have: > > > > > > > > > > > > > > >- Generics > > > > > > > > > >- Arrow Functions > > > > > > > > > >- Enum types > > > > > > > > > > > > > > >I guess we definitely shouldn't support all features, as I think a > lot > > > of > > > > >them are simply crap, but if we were supporting these features we > > could > > > > >eventually get more Typescript fans on board (Generics being the > most > > > > >important one from my point of view) > > > > > > > > > > > > > > >I was thinking about proposing to define an ActionScript4 with file > > > > >ending as4 so eventually this would be the better approach. > Eventually > > > it > > > > >would be a good idea to start collecting features as we wouldn't > want > > to > > > > >do an AS5, AS6, ... AS2000 every now and then. > > > > > > > > > > > > > > >Chris > > > > > > > > > >________________________________ > > > > >Von: Josh Tynjala <joshtynj...@gmail.com> > > > > >Gesendet: Dienstag, 27. September 2016 16:59:33 > > > > >An: dev@flex.apache.org > > > > >Betreff: [Falcon] Proposal for new ActionScript language feature: > > > > >Optionally rename an import > > > > > > > > > >I would like to propose a new feature for the ActionScript language > in > > > the > > > > >Apache Flex "Falcon" compiler. It would be nice if developers could > > > > >(optionally) rename an import. > > > > > > > > > >Background > > > > >========== > > > > > > > > > >Normally when you import a class, you can reference the name of the > > > class, > > > > >without the package (unless there is another class with the same > > name): > > > > > > > > > >// begin example > > > > > > > > > >import com.example.ImportedClass; > > > > > > > > > >var example:ImportedClass; > > > > > > > > > >//end example > > > > > > > > > >I would like to make it possible to optionally rename the shortened > > > > >version, like this: > > > > > > > > > >// begin example > > > > > > > > > >import NewName = com.example.ImportedClass; > > > > > > > > > >var test:NewName; > > > > > > > > > >//end example > > > > > > > > > >This would make it possible to resolve ambiguities without using the > > > > >fully-qualified class name. Consider the following situation that > > > commonly > > > > >comes up when developing Starling apps where the fully-qualified > name > > is > > > > >required for different types of events: > > > > > > > > > >// begin example > > > > > > > > > >import flash.events.Event; > > > > >import starling.events.Event; > > > > > > > > > >var one:flash.events.Event; > > > > >var two:starling.events.Event; > > > > > > > > > >// end example > > > > > > > > > >If we could rename imports, our code wouldn't require cumbersome > > > > >fully-qualified names. > > > > > > > > > >Consider the following example, references to FlashEvent will > resolve > > to > > > > >flash.events.Event and StarlingEvent will resolve to > > > > >starling.events.Event: > > > > > > > > > >// begin example > > > > > > > > > >import FlashEvent = flash.events.Event; > > > > >import StarlingEvent = starling.events.Event; > > > > > > > > > >var one:FlashEvent; > > > > >var two:StarlingEvent; > > > > > > > > > >// end example > > > > > > > > > >In the next example, references to FlashEvent will resolve to > > > > >flash.events.Event, similar to the previous example. References to > > Event > > > > >can resolve to starling.events.Event without ambiguity because > > > > >flash.events.Event has been given a different name. > > > > > > > > > >// begin example > > > > > > > > > >import FlashEvent = flash.events.Event; > > > > >import starling.events.Event; > > > > > > > > > >var one:FlashEvent; > > > > >var two:Event; > > > > > > > > > >// end example > > > > > > > > > >This would also be useful for transpile-to-JS workflow where the > > > top-level > > > > >package is littered with a ton of HTML classes that may conflict > with > > > > >names > > > > >user-defined classes. For instance, there's a top-level Event class. > > > There > > > > >is no way to specify a different fully-qualified name for things in > > the > > > > >top-level package, so it's hard to resolve ambiguity when using > these > > > > >classes. We have a bit of a workaround in Falcon by supporting a > fake > > > > >"window." package, but that's not ideal. Especially if you consider > > > > >Node.js, which doesn't actually have a global window object. > > > > > > > > > >Risks and Challenges > > > > >=================== > > > > > > > > > >* Renaming imports is a completely optional feature. Anyone can > > continue > > > > >to > > > > >code in ActionScript without ever using renamed imports. > > > > >* Existing code won't be broken by this new feature. Regular imports > > > that > > > > >don't do any renaming will continue to work the same as they always > > > have. > > > > >* Runtimes like Adobe Flash Player will not need to be modified to > > > support > > > > >renaming imports. Imports are completely resolved at compile-time. > > > > >* A SWC compiled from code with renamed imports will work with > > compilers > > > > >that don't support renaming imports. Again, a SWC contains compiled > > > code, > > > > >so imports were already resolved. > > > > >* I have implemented this feature already, in a local branch of > > > > >flex-falcon > > > > >on my machine. The code already exists, and it works today. > > > > > > > > > >The one tricky thing is that most IDEs probably won't play well with > > > code > > > > >that uses renamed imports. My NextGenAS extension for VSCode should > > have > > > > >no > > > > >problem because it loads the Falcon compiler from the Apache FlexJS > > SDK > > > > >for > > > > >its code intelligence features. If Falcon supports it, so will the > > > > >extension. Adobe Flash Builder uses ASC 2.0 in a similar way, as I > > > > >understand it. With that in mind, Flash Builder won't understand > code > > > with > > > > >renamed imports unless Adobe modifies ASC 2.0 to add the same > > feature. I > > > > >think third-party IDEs (like IntelliJ IDEA and FDT) have their own > > code > > > > >models (rather than talking to the compiler), so they'd need to make > > > their > > > > >own changes to support this feature too. > > > > > > > > > >I would like to contact the Flash runtimes team at Adobe and ask if > > > they'd > > > > >be willing to implement this feature in ASC 2.0 too. It's a small > > > change, > > > > >but useful for developer productivity, so it should be well received > > by > > > > >the > > > > >community. Additionally, since it will affect the compiler and not > the > > > > >runtime, it will be significantly less risky for Adobe than other > new > > > > >language features might be. Finally, considering that the Falcon and > > ASC > > > > >2.0 codebases are probably still extremely similar, I wouldn't be > > > > >surprised > > > > >if the changes were exactly the same. To go back to the previous > point > > > > >about IDEs, I'm pretty sure that if ASC 2.0 supports this feature, > > Flash > > > > >Builder will get it for free when someone upgrades the AIR SDK used > by > > > the > > > > >FB plugin. There may still be some quirks (I'm curious to see if > > > > >organizing > > > > >imports breaks or not), but I think ActionScript developers are used > > to > > > a > > > > >few occasional quirks these days. > > > > > > > > > >Comments welcome. > > > > > > > > > >- Josh > > > > > > > > > > > > > >