<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:55:16 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[YANGTOOLS-1130] Add an explicit intermediate representation for YANG</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1130</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Experiments in the &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-1128&quot; title=&quot;Add a dedicated ANTLR token factory&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-1128&quot;&gt;&lt;del&gt;YANGTOOLS-1128&lt;/del&gt;&lt;/a&gt; area show that using ANTLR parse tree has downside in the amount of memory we consume. This comes from three facts:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;ANTLR is completely transparent, hence each token has a lot of metadata about where it comes from. We do not use most of that metadata.&lt;/li&gt;
	&lt;li&gt;A lot of the tokens are simple separators. We do not use those tokes at all.&lt;/li&gt;
	&lt;li&gt;Tokens are not really immutable to support some use cases which we do not use.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;We also do not allocate strings entirely efficiently: there are plenty of models in the wild which are auto-generated and do not take advantage of YANG facilities, hence there are a number of duplicate construct definitions &#8211; and those strings end up being duplicated simply because we are geared towards sane models.&lt;/p&gt;

&lt;p&gt;Introduce a heavily-interned intermediate representation instead of relying on ANTLR-generated tree. While interning expends a non-trivial amount of CPU cycles to get strings de-duplicated, the results for benchmark models end up saving a ton of duplication. This also has some bearing onto the size of the effective model, which seems to benefit from this upfront work. Experimentation shows &amp;gt;90% memory footprint reduction.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="33174">YANGTOOLS-1130</key>
            <summary>Add an explicit intermediate representation for YANG</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="rovarga">Robert Varga</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                    </labels>
                <created>Sat, 15 Aug 2020 06:15:07 +0000</created>
                <updated>Mon, 7 Sep 2020 12:46:05 +0000</updated>
                            <resolved>Mon, 7 Sep 2020 12:46:05 +0000</resolved>
                                                    <fixVersion>6.0.0</fixVersion>
                    <fixVersion>5.0.6</fixVersion>
                                    <component>parser</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="68590" author="rovarga" created="Thu, 27 Aug 2020 09:53:54 +0000"  >&lt;p&gt;The integration with yang.repo.api is unfortunately incompatible and slightly wrong. We need to introduce IRSchemaSource to properly integrate. ASTSchemaSource changes will need to be rolled back, so that we maintain the previous API, for backports.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10300">
                    <name>Issue split</name>
                                                                <inwardlinks description="split from">
                                        <issuelink>
            <issuekey id="33160">YANGTOOLS-1128</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03uhj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>