<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:10:00 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>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[CDRIVER-597] Support building without requiring vendored YAJL</title>
                <link>https://jira.mongodb.org/browse/CDRIVER-597</link>
                <project id="10030" key="CDRIVER">C Driver</project>
                    <description>&lt;p&gt;For packaging purposes, we may want to be able to build the C driver without having any vendored third party code like the yajl library, as some downstream packagers may prefer to use the system version of the library.&lt;/p&gt;

&lt;p&gt;Currently, we actually vendor a modified version of yajl, and we should figure out how to either make that dependency optional or to remove the need for our customizations.&lt;/p&gt;</description>
                <environment></environment>
        <key id="192626">CDRIVER-597</key>
            <summary>Support building without requiring vendored YAJL</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="2" iconUrl="https://jira.mongodb.org/images/icons/priorities/critical.svg">Critical - P2</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="3">Duplicate</resolution>
                                        <assignee username="bjori">Hannes Magnusson</assignee>
                                    <reporter username="andrew.morrow@mongodb.com">Andrew Morrow</reporter>
                        <labels>
                    </labels>
                <created>Sun, 29 Mar 2015 00:23:53 +0000</created>
                <updated>Wed, 3 May 2017 22:13:57 +0000</updated>
                            <resolved>Mon, 1 Aug 2016 22:39:53 +0000</resolved>
                                                    <fixVersion>TBD</fixVersion>
                                                        <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="1343885" author="bjori" created="Mon, 1 Aug 2016 22:39:53 +0000"  >&lt;p&gt;Closing as &quot;Duplicate&quot; (for lack of better options).&lt;/p&gt;

&lt;p&gt;This will be fixed by &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-1370&quot; title=&quot;Replace libyajl with jsonsl&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-1370&quot;&gt;&lt;del&gt;CDRIVER-1370&lt;/del&gt;&lt;/a&gt;, which will use another library instead.&lt;/p&gt;</comment>
                            <comment id="1128496" author="jesse" created="Thu, 7 Jan 2016 13:44:14 +0000"  >&lt;p&gt;Using another library for JSON parsing, or implementing it ourselves, is an option. But it hasn&apos;t reached the highest priority.&lt;/p&gt;</comment>
                            <comment id="1128414" author="lafeuil" created="Thu, 7 Jan 2016 10:29:17 +0000"  >&lt;p&gt;Thanks for you two answers. &lt;br/&gt;
I have a last question and I don&apos;t want to offend you. Don&apos;t you think that use a non-maintained library is a problem ? &lt;/p&gt;</comment>
                            <comment id="1127430" author="jesse" created="Wed, 6 Jan 2016 13:59:02 +0000"  >&lt;p&gt;Thanks for answering, Petr. Right, I hope YAJL will merge and release the fix someday. Meanwhile, we can vendor the updated YAJL on Fedora, and on Debian we&apos;re going a different direction and working around the missing YAJL feature, at the cost of a performance hit when reading many small JSON documents.&lt;/p&gt;</comment>
                            <comment id="1127274" author="ppisar" created="Wed, 6 Jan 2016 09:18:59 +0000"  >&lt;p&gt;For yajl release, you have to ask yajl upstream. The yajl feature is in yajl_reset branch that has not yet been merged into master branch, also no new yajl release was made.&lt;/p&gt;

&lt;p&gt;Fedora will probably package the libbson with modifed bundled yajl as the Fedora&apos;s bundling policy changed recently. But I&apos;m not happy about at all.&lt;/p&gt;</comment>
                            <comment id="1127270" author="lafeuil" created="Wed, 6 Jan 2016 09:09:23 +0000"  >&lt;p&gt;Do you have any news on this packaging problem ? I see the patch for yajl. Is it work ? Do you know when it will be able to be merged in the master branch ? And last question, is there a new release planned for yajl (2.1.1 for example) with this patch ?&lt;/p&gt;</comment>
                            <comment id="1042670" author="jesse" created="Thu, 24 Sep 2015 21:05:23 +0000"  >&lt;p&gt;The problem is in our implementation of bson_json_reader_read; when it comes to the end of a JSON object it resets the YAJL parser state and reuse it, rather than mallocing a new parser. For many small JSON objects this could be a substantial performance improvement, but unfortunately, libbson includes a private YAJL header in order to access private parser members and reset them.&lt;/p&gt;

&lt;p&gt;Lloyd Hilaiel, YAJL&apos;s maintainer, is working on a patch to provide us a yajl_reset_stack public function that does what we need:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/lloyd/yajl/issues/161&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/lloyd/yajl/issues/161&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once that&apos;s released, libbson will stop accessing private YAJL parser data. We&apos;ll continue to vendor YAJL into libbson for convenience, and update the vendored code to the latest upstream.&lt;/p&gt;

&lt;p&gt;We&apos;ll add a configure check for yajl_reset_stack (in configure.ac and CMakeLists.txt); if yajl_reset_stack is available we&apos;ll use it, otherwise we&apos;ll fall back to the slower yajl_alloc.&lt;/p&gt;

&lt;p&gt;The libbson packages for Debian, Fedora, etc. will comply with packaging policies by &lt;b&gt;omitting&lt;/b&gt; the vendored copy of YAJL, and depend on the distro&apos;s YAJL package instead. When the distro&apos;s YAJL package includes the new yajl_reset_stack, then libbson can take advantage of it.&lt;/p&gt;</comment>
                            <comment id="897407" author="jesse" created="Fri, 24 Apr 2015 15:25:30 +0000"  >&lt;p&gt;Thanks Petr! I&apos;ll keep an eye on your pull request to the YAJL project.&lt;/p&gt;</comment>
                            <comment id="897291" author="ppisar" created="Fri, 24 Apr 2015 13:45:15 +0000"  >&lt;p&gt;In the previous patch. I forgot to replace inclusion of private &amp;lt;yajl/yajl_parser.h&amp;gt; with public &amp;lt;yajl/yajl_parse.h&amp;gt;. Use this patch instead.&lt;/p&gt;</comment>
                            <comment id="897274" author="ppisar" created="Fri, 24 Apr 2015 13:25:35 +0000"  >&lt;p&gt;This patch allows yajl to reset byte stack and libbson to use the feature instead of using private yajl headers. The yajl change has been proposed to yajl upstream as &amp;lt;&lt;a href=&quot;https://github.com/lloyd/yajl/issues/161&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/lloyd/yajl/issues/161&lt;/a&gt;&amp;gt;.&lt;/p&gt;</comment>
                            <comment id="870582" author="jesse" created="Wed, 1 Apr 2015 19:17:43 +0000"  >&lt;p&gt;YAJL needs to be more consistent about letting us configure its allocator (&lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-595&quot; title=&quot;Remove uses of bare memory methods and ensure we don&amp;#39;t add new ones&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-595&quot;&gt;&lt;del&gt;CDRIVER-595&lt;/del&gt;&lt;/a&gt; &#8211; YAJL has a few places where it calls malloc, not its configurable YA_MALLOC macro). Also, we&apos;ve modified it to support some error-recovery when transcoding a stream of JSON documents to BSON. We&apos;ll look into fixing these issues upstream so we can use the system YAJL when available.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="199529">CDRIVER-623</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="193371">CDRIVER-601</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="300117">CDRIVER-1370</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="71861" name="0001-Use-yajl_reset_stack-instead-of-private-yajl-headers.patch" size="2254" author="ppisar" created="Fri, 24 Apr 2015 13:45:15 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10011"><![CDATA[Minor Change]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hre4pj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="741">C Driver 2015Q2 sprint 8</customfieldvalue>

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