I’m getting two test failures on the XML tests. testXMLNormalize is failing, but the test looks wrong to me. Could you take a look?
> On Nov 28, 2019, at 7:32 PM, Greg Dove <greg.d...@gmail.com> wrote: > > Oh - just saw this. Thanks. > Please ignore my comments in the other thread :). > > > On Fri, Nov 29, 2019 at 6:12 AM Harbs <harbs.li...@gmail.com> wrote: > >> I finally got the nerve together to update my local environment. >> >> The changes look pretty good. >> >> I made a couple of small changes. >> >> One fixes hasAttribute which somehow broke with your changes. >> >> The second is a small tweak to the memory optimizations. The memory >> footprint seems to be a bit smaller than what it used to be. >> >> Good work. :-) >> >> Harbs >> >>> On Oct 2, 2019, at 11:29 AM, Greg Dove <greg.d...@gmail.com> wrote: >>> >>> @harbs >>> >>> FYI in addition to some other stuff, I am close to pushing my updates to >>> XML. This should be in the next hour or so. >>> >>> I kept the QName caching pretty close to how you had it, with only some >>> minor changes. >>> I tried to do some extra memory optimization, and in theory it should >>> provide better results, but to be honest I don't have a good way to >> measure >>> this in the browser. I tried the Chrome performance.memory extensions >> but I >>> don't have much confidence in that given how much it varies between >> reloads >>> without changing anything else. The extra code changes I made were to >> make >>> the '_nodeKind' strings into String object references, so they only refer >>> to a single reference to a string instead of multiple copies of >> primitives. >>> That change is isolated to a single commit so can easily be reversed if >>> there is something not good about it... but all my local tests continue >> to >>> pass. I will get the new tests into RoyaleUnit in the coming days. >>> >>> >>> >>> >>> On Thu, Sep 5, 2019 at 7:39 AM Greg Dove <greg.d...@gmail.com> wrote: >>> >>>> Yeah, I saw that ;) Don't worry, I am aware of it. >>>> >>>> My first goal is to make sure it works like it should, because that >> comes >>>> first, and then to optimize. I'll check the memory side of things and >> make >>>> sure it's at least the same as before. If you can point me to some >>>> publicly accessible large test cases that would be really helpful. I >> will >>>> work through that before I push anything. >>>> >>>> On Thu, Sep 5, 2019 at 7:26 AM Harbs <harbs.li...@gmail.com> wrote: >>>> >>>>> Heads up: >>>>> >>>>> I did some (on first blush) odd things in XML related to QNames. QNames >>>>> are pooled and many XML properties are not initialized by default. The >>>>> reason I did this was it avoided many MB of memory waste for complex >> XML. >>>>> Please don’t mess that up. >>>>> >>>>> Thanks, >>>>> Harbs >>>>> >>>>>> On Sep 4, 2019, at 1:02 PM, Greg Dove <greg.d...@gmail.com> wrote: >>>>>> >>>>>> This is particularly for Harbs and Yishay, as I think you are both (or >>>>> both >>>>>> have been) using XML quite a bit. I have quite a few fixes coming. >> All >>>>>> with tests that match on swf and js. >>>>>> >>>>>> I am currently working to demonstrate proof of concept to a >> prospective >>>>>> client for migration of a Flex app. The app makes extensive use of e4x >>>>> and >>>>>> uses a bunch of features that I expect had not received attention >>>>>> previously, because they were originally either not working with the >>>>>> codebase I am porting, or i think some even caused errors in the >>>>> javascript >>>>>> output. >>>>>> >>>>>> So I have spent the last several days almost full time figuring things >>>>> out >>>>>> and working on fixes, between the compiler and emulation classes. >>>>>> All the previous XML tests continue to pass, but I have many more unit >>>>>> tests and fixes lined up for the following: >>>>>> >>>>>> namespace directives >>>>>> default xml namespace >>>>>> use namespace (multiple) >>>>>> >>>>>> a number of fixes for xml filtering, including: >>>>>> -'this' resolves correctly in filters that include external references >>>>> from >>>>>> the fitler expression to the 'this' scope >>>>>> -handles alternate ordering of comparisons between XML 'getters' and >>>>>> literals >>>>>> e.g. something.(name() = "cat") or something.("cat" = name()) (these >>>>> are >>>>>> the same) >>>>>> -it (will) now handle XML e4x references in nested function calls >> inside >>>>>> the filter, e.g. things like: >>>>>> e.g. >>>>>> var people:XML = <people> >>>>>> <person> >>>>>> <name>Bob</name> >>>>>> <age>32</age> >>>>>> </person> >>>>>> <person> >>>>>> <name>Joe</name> >>>>>> <age>46</age> >>>>>> </person> >>>>>> </people>; >>>>>> var findJoeByAge:Function = function (i:int):Boolean { >>>>>> return i > 40; >>>>>> }; >>>>>> people.person.(findJoeByAge(parseInt(age))).name >>>>>> >>>>>> >>>>>> I have lots more granular tests in QName, Namespace, and XML with >>>>> tuning to >>>>>> improve reliability. >>>>>> toXMLString XML node output also matches flash more correctly in what >> I >>>>>> have coming. >>>>>> >>>>>> One thing that I am trying to figure out, which I would appreciate >>>>> input on >>>>>> if someone has an answer: >>>>>> For the example: >>>>>> >>>>>> var feed:XML = new XML( >>>>>> '<feed xmlns:atom="http://www.w3.org/2005/Atom" >>>>>> xmlns:m="nothing">\n' + >>>>>> ' <link rel="no_namespace" >>>>>> href="blah/12321/domain/"/>\n' + >>>>>> '</feed>\n'); >>>>>> var atomSpace:Namespace = new Namespace('http://www.w3.org/2005/Atom' >> ); >>>>>> >>>>>> Can anyone explain why this (in SWF, as a reference implementation): >>>>>> trace(feed.atomSpace::link.length()) >>>>>> trace(feed.atomSpace::link.toXMLString()) >>>>>> //output: >>>>>> 0 >>>>>> {empty string} >>>>>> is different to: >>>>>> trace(feed.child(new QName(atomSpace,'link')).length()) >>>>>> trace(feed.child(new QName(atomSpace,'link')).toXMLString()) >>>>>> //output: >>>>>> 1 >>>>>> <link rel="no_namespace" href="blah/12321/domain/" xmlns:atom=" >>>>>> http://www.w3.org/2005/Atom" xmlns:m="nothing"/> >>>>>> >>>>>> I had assumed the above cases would be the same, but the second one is >>>>>> behaving as if it has the default namespace included with the >> specified >>>>>> namespace in the QName matching (it does correctly match the namespace >>>>>> specifically as well -with e.g. <atom:link nodes where the prefix atom >>>>> is >>>>>> bound to the uri, but also seems to include link nodes with the >> default >>>>>> namespace, whether or not it is declared). I can accommodate this >>>>>> difference to make them behave the same, I just would like to >> understand >>>>>> the basis for the actual rules if anyone knows.... >>>>>> >>>>>> I should be in a position to push the updates this coming weekend I >>>>> think. >>>>> >>>>> >> >>