The only niggle I have with my approach is that Vector in Flash is more 
performant than array, while in JS, it’s going to be the other way around. So 
if someone has a performance-sensitive piece of code, how should they write it 
so it outputs as performant as possible on both platforms?

I have not spent the time looking into the implementation, but I think there 
might be some cross-communication. My understanding from what Greg wrote is 
that if Vector is not used in an application, there will be no extra code due 
to dead code removal. If that’s correct, I think we’re in agreement that the 
implementation is fine. Do I understand correctly?

Harbs

> On May 30, 2019, at 1:26 AM, Josh Tynjala <joshtynj...@apache.org> wrote:
> 
> I definitely want the default choice to have as few surprises as possible 
> when it comes to how ActionScript behaves in Royale. We'll never have a 
> perfect emulation, of course, but there are things that I think can still be 
> improved. At the same time, I think it's perfectly valid for someone to want 
> to opt into a typed Array that doesn't have the runtime overhead of Vector 
> and isn't as heavy in file size. I'm wary of the solution being a custom 
> implementation of Vector with missing features, though. It will lead to 
> confusion, even if it's opt-in.
> 
> What Harbs suggested seems like a smart way to go. Rather than having a 
> separate Vector implementation that doesn't work as developers are used to, a 
> new variation of Array that has compile-time type checks but no runtime 
> checks sounds like a more elegant solution. Like Vector works in Royale 
> today, it can compile down to a regular JS Array, but at compile-time, we'd 
> have some extra safety and could even possibly cast back and forth with 
> untyped Arrays (which we can't do with Vector).
> 
> - Josh
> 
> On 2019/05/29 18:07:31, Alex Harui <aha...@adobe.com.INVALID> wrote: 
>> We must not eliminate choices.
>> 
>> I still haven't had time to look at the branch.
>> 
>> There must be away to avoid even a 1K cost to those who don't need it.
>> 
>> If there is such a way, then it is fine to merge.  Otherwise, everyone is 
>> going to pay 2K to use a Vector when we know at least two apps are in 
>> production without needing that 2k.
>> 
>> There are too many words being written and no technical points being made.  
>> I will try to resummarize.
>> 
>> 1) It does not matter how fast your network is.  Every other app will use 
>> more bandwidth and when the network gets busy or connectivity gets poor 
>> (something I see quite frequently where I live) either you get your app to 
>> run or you run out of time.  
>> 
>> 2) If you are not using some feature of our code, you should not have to pay 
>> for it in download cost.  That's PAYG.  That would be true for Vector, XML 
>> and even if we had to write a Date implementation.  It is not an issue of 
>> non-conforming.  It is an issue of optimization.  If you aren't going to use 
>> some feature of E4x you should have the option of using code that doesn't 
>> have those code paths.  Same for if we had to do Date.
>> 
>> We know that if you don't need runtime-type checking and fixed-length 
>> checking that a plain Array is just fine and 2K cheaper.  Let's give folks 
>> the option to do that.
>> 
>> I will repeat that I do not have any objection to having a full Vector 
>> implementation with runtime type-checking and fixed length checking be the 
>> default choice as long as folks can optimize back to using the plain Array 
>> code we use now.
>> 
>> For the one Vector we currently have in all apps for the Strand, it might be 
>> time to change that to an array and check the type (in debug-only code) on 
>> addBead.  Either that or we add compiler options so that one Vector gets 
>> optimized to the current plain Array code.
>> 
>> It is not a technical argument to classify Vector as "Language" and 
>> therefore somehow an exception to being optimizable.
>> 
>> My 2 cents,
>> -Alex
>> 
>> 
>> On 5/28/19, 2:59 AM, "Carlos Rovira" <carlosrov...@apache.org> wrote:
>> 
>>    Hi,
>> 
>>    I think that we all agree in most of the things, and although we're
>>    discussing some particularities on how to solve, my opinion is that those
>>    particularities can be solved after merging Language improvements branch.
>>    We all agree we need this Vector (and other improvements in this branch)?.
>>    So, after that merge folks wanting to improve, let's say, Vector(for
>>    example) even more with new choices can do that without problem and will
>>    make it even better.
>> 
>>    Are we ok with that?
>> 
>> 
>> 
>> 
>> 
>>    El mar., 28 may. 2019 a las 11:07, Harbs (<harbs.li...@gmail.com>) 
>> escribió:
>> 
>>> 
>>>> On May 28, 2019, at 11:12 AM, Greg Dove <greg.d...@gmail.com> wrote:
>>>> 
>>>>> "I personally have never used length checking in Vector. Nor was runtime
>>>>> type checking on Vectors important to me. "
>>>> length checking is automatic in flash. I don't know that you 'use' it...
>>> it
>>>> is just there.
>>> 
>>> True. What I meant is that I never used fixed length Vectors.
>>> 
>>>> In javascript I expect it would most often be switched off in all release
>>>> builds, but having it on by default provides another check of something
>>>> that could provide a vital clue to help people figuring out problems in
>>>> code.
>>>> So far each 'stronger typing' feature added in the last few months has
>>>> revealed potential issues or - most often - bad code that was working
>>> when
>>>> it should not
>>> 
>>> Good points, and one that argues for the ability to have these checks
>>> while debugging and have the run-time code removed on release.
>>> 
>>>> One thing about the mxml stuff is that it gets processed in a way that is
>>>> untyped.
>>> 
>>> 
>>> Agree. I do wish there was some way for MXML to be output “better” where
>>> minified vars could “just work” and types could be better inferred from the
>>> MXML files.
>> 
>> 
>> 
>>    -- 
>>    Carlos Rovira
>>    
>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ce8d86e6cf4aa4271e8ad08d6e35326eb%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636946343611259722&sdata=g8BXA5jwwT98fAbwdMR2FqmJ3CgKd01zsm1lpt5pTDg%3D&reserved=0
>> 
>> 
>> 

Reply via email to