<!--
RSS generated by JIRA (4.4#649-r158309) at Mon May 20 07:32:16 CDT 2013

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 add field=key&field=summary to the URL of your request.
For example:
http://dev.clojure.org/jira/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3D+CLJ+AND+fixVersion+%3D+%22Release+1.2%22&tempMax=1000&field=key&field=summary
-->
<!-- If you wish to do custom client-side styling of RSS, uncomment this:
<?xml-stylesheet href="http://dev.clojure.org/jira/styles/jiraxml2html.xsl" type="text/xsl"?>
-->
<rss version="0.92">
    <channel>
        <title>Clojure JIRA</title>
        <link>http://dev.clojure.org/jira/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+CLJ+AND+fixVersion+%3D+%22Release+1.2%22</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="116" total="116"/>
                <build-info>
            <version>4.4</version>
            <build-number>649</build-number>
            <build-date>25-07-2011</build-date>
        </build-info>
<item>
            <title>[CLJ-423] make sure future clears closed-overs</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-423</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;As lazy-seq and delay already do.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13820">CLJ-423</key>
            <summary>make sure future clears closed-overs</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 11 Aug 2010 11:08:00 -0500</created>
                <updated>Tue, 24 Aug 2010 09:55:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 09:55:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24196" author="importer" created="Tue, 24 Aug 2010 09:55:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/423&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/423&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
future-clear.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a_Lg6WPBGr37ZBeJe5cbCb/download/a_Lg6WPBGr37ZBeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a_Lg6WPBGr37ZBeJe5cbCb/download/a_Lg6WPBGr37ZBeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24197" author="importer" created="Tue, 24 Aug 2010 09:55:00 -0500"  >&lt;p&gt;richhickey said: [&lt;a href=&quot;file:a_Lg6WPBGr37ZBeJe5cbCb&quot;&gt;file:a_Lg6WPBGr37ZBeJe5cbCb&lt;/a&gt;]: patch for 423&lt;/p&gt;</comment>
                    <comment id="24198" author="importer" created="Tue, 24 Aug 2010 09:55:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#404, #422, #382, #423)&lt;/p&gt;</comment>
                    <comment id="24199" author="importer" created="Tue, 24 Aug 2010 09:55:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:0c0e9c5a0bd5ec511462553298e67b816a9284cc&amp;#93;&lt;/span&gt;]) make sure future clears closed-overs, fixes #423&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-422] code in finally clauses is sometimes run twice</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-422</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;When an exception is thrown in a finally clause, the code inside that finally clause is run twice:&lt;/p&gt;

&lt;p&gt;(try (prn 1) (finally (prn 2) (prn 3) (throw (Exception.))))&lt;/p&gt;

&lt;p&gt;That prints 1 2 3 2 3, when it should simply print 1 2 3.  This has been the case since revision:5e9f2b293b307aa7953cd390360d24549e542b92&lt;/p&gt;

&lt;p&gt;But simply reverting that commit causes problems in other cases, such as:&lt;/p&gt;

&lt;p&gt;(try (prn 1) (throw (Exception. &quot;one&quot;))&lt;br/&gt;
  (catch Exception e (throw (Exception. &quot;two&quot;)))&lt;br/&gt;
  (finally (prn 2) (prn 3)))&lt;/p&gt;

&lt;p&gt;...which should print 1 2 3 as well, but used to print just 1 instead.&lt;/p&gt;

&lt;p&gt;This was discussed in &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/43d2dcb2505e8915&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/43d2dcb2505e8915&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13819">CLJ-422</key>
            <summary>code in finally clauses is sometimes run twice</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="chouser@n01se.net">Chouser</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 11 Aug 2010 09:38:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:55:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:55:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24186" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/422&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/422&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Emit-finally-exception-table-entry-for-each-try-catc.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d9le_6Pvar35I1eJe5cbLr/download/d9le_6Pvar35I1eJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d9le_6Pvar35I1eJe5cbLr/download/d9le_6Pvar35I1eJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24187" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;chouser@n01se.net said: [&lt;a href=&quot;file:d9le_6Pvar35I1eJe5cbLr&quot;&gt;file:d9le_6Pvar35I1eJe5cbLr&lt;/a&gt;]: initial fix for #422&lt;/p&gt;</comment>
                    <comment id="24188" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;chouser@n01se.net said: It looks like javac protects the try block and each catch block individually with separate entries in the exception table, all of them pointing to the final finally block.&lt;/p&gt;

&lt;p&gt;This patch attempts to do the same thing, and also fully reverses the &quot;endTryCatch&quot; commit mentioned in the ticket description.  Both the examples in the ticket description work correctly, each printing just 1 2 3.&lt;/p&gt;</comment>
                    <comment id="24189" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;richhickey said: Thanks!&lt;/p&gt;

&lt;p&gt;This could use some tests&lt;/p&gt;</comment>
                    <comment id="24190" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;chouser@n01se.net said: Joe Gallo wrote some.  He said his CA is in the mail.&lt;/p&gt;</comment>
                    <comment id="24191" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;richhickey said: Where are they? We can try them without including them for now&lt;/p&gt;</comment>
                    <comment id="24192" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;chouser@n01se.net said: They were linked from the ggroup discussion.  They pass.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://gist.github.com/517871&quot;&gt;http://gist.github.com/517871&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24193" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;richhickey said: Thanks, I missed that, I was looking for them in messages from Joe&lt;/p&gt;</comment>
                    <comment id="24194" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#404, #422, #382, #423)&lt;/p&gt;</comment>
                    <comment id="24195" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;chouser@n01se.net said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:5d4022276177d562906700c428f544110a0d0f1f&amp;#93;&lt;/span&gt;]) Emit finally exception table entry for each try/catch clause. Refs #422&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-418] fix record equality with other maps</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-418</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Record equality is non-symmetric with maps, due to record equality using type and map equality not. Make it so record equiv uses type but equals doesn&apos;t, and make Util.equiv use IPersistentCollection&apos;s equiv if on either side. Add marker interface for records. Make APersistentMap check for record marker interface.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13815">CLJ-418</key>
            <summary>fix record equality with other maps</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 30 Jul 2010 22:47:00 -0500</created>
                <updated>Tue, 24 Aug 2010 17:42:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 17:42:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24169" author="importer" created="Tue, 24 Aug 2010 17:42:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/418&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/418&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24170" author="importer" created="Tue, 24 Aug 2010 17:42:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:ac484ba40cc1d94d42ce59e9df92b13e98ed0b6e&amp;#93;&lt;/span&gt;]) fix record equality with other maps, = includes type, .equals doesn&apos;t. see #418&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="24171" author="importer" created="Tue, 24 Aug 2010 17:42:00 -0500"  >&lt;p&gt;richhickey said: Used a marker interface for MapEquivalence, applied to APersistentMaps instead of for records.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-417] Add more information to changes.txt for case and vector-of</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-417</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The information for case and vector-of could stand to be a little more detailed.  I&apos;ve attached a diff (against the RC1 changes.txt) that adds a little more information.&lt;br/&gt;
:f&lt;/p&gt;</description>
                <environment></environment>
            <key id="13814">CLJ-417</key>
            <summary>Add more information to changes.txt for case and vector-of</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 30 Jul 2010 10:36:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:42:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:42:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24168" author="importer" created="Tue, 24 Aug 2010 00:42:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/417&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/417&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
changes-changes.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dMKBLgM-Cr37o8eJe5cbLA/download/dMKBLgM-Cr37o8eJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dMKBLgM-Cr37o8eJe5cbLA/download/dMKBLgM-Cr37o8eJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-413] clojure.java.shell/sh in-enc doesn&apos;t default to UTF-8</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-413</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;clojure.java.shell/sh was recently updated (changed) to say that it defaults to UTF-8 for both in-enc and out-enc, but it does not do so for in-enc.&lt;/p&gt;

&lt;p&gt;On line 122 of the current build:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(with-open [osw (OutputStreamWriter. (.getOutputStream proc) ^&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; in-enc)]&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;in-enc is nil by default, but &lt;b&gt;OutputStreamWriter needs to be passed &quot;UTF-8&quot; instead if in-enc is nil&lt;/b&gt;. I would add a patch but I still need to submit the CLA.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13810">CLJ-413</key>
            <summary>clojure.java.shell/sh in-enc doesn&apos;t default to UTF-8</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 24 Jul 2010 15:12:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:35:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:35:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24153" author="importer" created="Tue, 24 Aug 2010 00:35:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/413&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/413&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
413-parse-args-defaults-in-enc-and-out-enc-to-UTF-8.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a1Pm9AL2ar351-eJe5cbCb/download/a1Pm9AL2ar351-eJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a1Pm9AL2ar351-eJe5cbCb/download/a1Pm9AL2ar351-eJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24154" author="importer" created="Tue, 24 Aug 2010 00:35:00 -0500"  >&lt;p&gt;bpsm said: It was tough verifying that out-enc is even honored: If out-enc is not specified, it&apos;s nil. This gets passed to the two-argument stream-to-enc. The two-argument stream-to-enc calls (stream-to-string stream nil) since nil is not equal to :bytes. This in turn calls java.io/copy with :encoding nil, which gets passed on up a chain of do-copy calls until we finally try to extract the encoding from the opts map. The accessor function (java.io/encoding opts) does the actual defaulting to UTF-8.&lt;/p&gt;

&lt;p&gt;Maybe the implementation in shell should be more explicit?&lt;/p&gt;

&lt;p&gt;Side note: the stream-to-enc, stream-to-bytes, stream-to-string smells like it&apos;s reinventing parts of java.io, but I&apos;ve probably overlooked something. It&apos;s late where I am.&lt;/p&gt;</comment>
                    <comment id="24155" author="importer" created="Tue, 24 Aug 2010 00:35:00 -0500"  >&lt;p&gt;bpsm said: [&lt;a href=&quot;file:a1Pm9AL2ar351-eJe5cbCb&quot;&gt;file:a1Pm9AL2ar351-eJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24156" author="importer" created="Tue, 24 Aug 2010 00:35:00 -0500"  >&lt;p&gt;bpsm said: My analysis from last night was wrong. The defaulting of :in-enc and :out-enc actually occurs in &lt;em&gt;parse-args&lt;/em&gt;. &lt;em&gt;parse-args&lt;/em&gt; was still defaulting to platform default encoding despite the fact that &lt;em&gt;sh&lt;/em&gt; clearly wants to default to UTF-8.&lt;/p&gt;

&lt;p&gt;This likely wasn&apos;t noticed because the unit test for &lt;em&gt;parse-args&lt;/em&gt; was not updated when it was decided to use UTF-8 for clojure.java.shell in place of the previous decision to use platform default encoding.&lt;/p&gt;</comment>
                    <comment id="24157" author="importer" created="Tue, 24 Aug 2010 00:35:00 -0500"  >&lt;p&gt;stu said: Thanks Marcus and Ben!&lt;/p&gt;</comment>
                    <comment id="24158" author="importer" created="Tue, 24 Aug 2010 00:35:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#340, #399, #402, #403, #413)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-407] Function names not munged in :gen-class</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-407</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;A function name with a dash in the :methods list isn&apos;t properly munged when using compile/gen-class.  This results in a method in the byte code that is not callable from Java.&lt;/p&gt;

&lt;p&gt;Offending code:&lt;/p&gt;

&lt;p&gt;(ns foo.bar&lt;br/&gt;
  (:gen-class&lt;br/&gt;
    :methods [[foo-bar [] void]]))&lt;/p&gt;

&lt;p&gt;(defn -foo-bar [] (println &quot;a&quot;))&lt;/p&gt;</description>
                <environment></environment>
            <key id="13804">CLJ-407</key>
            <summary>Function names not munged in :gen-class</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 22 Jul 2010 19:36:00 -0500</created>
                <updated>Tue, 24 Aug 2010 18:32:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 18:32:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24126" author="importer" created="Tue, 24 Aug 2010 18:32:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/407&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/407&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0407-no-hyphens-in-genclass-method-names.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/by19VCMomr360aeJe5cbCb/download/by19VCMomr360aeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/by19VCMomr360aeJe5cbCb/download/by19VCMomr360aeJe5cbCb&lt;/a&gt;&lt;br/&gt;
0407-prevent-bad-genclass-methods-with-munge.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cje20uM0Cr35VBeJe5cbLA/download/cje20uM0Cr35VBeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cje20uM0Cr35VBeJe5cbLA/download/cje20uM0Cr35VBeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24127" author="importer" created="Tue, 24 Aug 2010 18:32:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:by19VCMomr360aeJe5cbCb&quot;&gt;file:by19VCMomr360aeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24128" author="importer" created="Tue, 24 Aug 2010 18:32:00 -0500"  >&lt;p&gt;stu said: patch fixes this by disallowing it. I don&apos;t think we should munged in methods names in gen-class &amp;#8211; callers are already forced to Java names by any Java methods they implement, so better to be consistent.&lt;/p&gt;

&lt;p&gt;patch also piggybacks some unrelated test refactoring&lt;/p&gt;</comment>
                    <comment id="24129" author="importer" created="Tue, 24 Aug 2010 18:32:00 -0500"  >&lt;p&gt;richhickey said: Seems to specifically single out &apos;-&apos; rather than ensure a valid Java name&lt;/p&gt;</comment>
                    <comment id="24130" author="importer" created="Tue, 24 Aug 2010 18:32:00 -0500"  >&lt;p&gt;stu said: How far do we go here? A complete implementation would need to &lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;use the isJavaIdentifierPart / isJavaIdentifierStart methods of Character&lt;/li&gt;
	&lt;li&gt;enumerate the characters as code points (bring in c.c.string/codepoints? if so, as public fn?)&lt;/li&gt;
	&lt;li&gt;blacklist keywords, boolean literals, null literal&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    <comment id="24131" author="importer" created="Tue, 24 Aug 2010 18:32:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cje20uM0Cr35VBeJe5cbLA&quot;&gt;file:cje20uM0Cr35VBeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24132" author="importer" created="Tue, 24 Aug 2010 18:32:00 -0500"  >&lt;p&gt;stu said: second patch uses munge&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-404] Making a writer from a Socket with clojure.java.io/writer fails</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-404</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;In clojure.java.io, IOFactory is extended to java.net.Sockets. The make-input-stream method is implemented correctly, but the make-output-stream method is missing. Actually, there is another key in the map named :output-stream. That is probably some old code lying around that didn&apos;t get refactored.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;Howtoreproduce&quot;&gt;&lt;/a&gt;How to reproduce &lt;/h2&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(use &apos;clojure.java.io)
(writer (java.net.Socket. &lt;span class=&quot;code-quote&quot;&gt;&quot;google.com&quot;&lt;/span&gt; 80))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;When evaluated, the following is thrown: java.lang.IllegalArgumentException: Cannot open &amp;lt;#&amp;lt;Socket Socket&lt;span class=&quot;error&quot;&gt;&amp;#91;addr=google.com/66.102.13.147,port=80,localport=55335&amp;#93;&lt;/span&gt;&amp;gt;&amp;gt; as an OutputStream. (NO_SOURCE_FILE:0)&lt;br/&gt;
Any host/port combination that is open will do. I chose Google&apos;s HTTP server as an arbitrary example of an open port.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;ExpectedOutput&quot;&gt;&lt;/a&gt;Expected Output&lt;/h2&gt;
&lt;p&gt;An instance of java.io.BufferedWriter.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;AffectedVersions&quot;&gt;&lt;/a&gt;Affected Versions&lt;/h2&gt;
&lt;p&gt;All versions of Clojure 1.2 since commit cd8fc7c11213fbe99355 &quot;promote clojure.contrib.io to clojure.java.io (with api changes)&quot; by Stuart Halloway.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;GroupDiscussions&quot;&gt;&lt;/a&gt;Group Discussions&lt;/h2&gt;
&lt;p&gt;I mentioned this on the Clojure mail list at the end of this thread: &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/898f5dbe14057277/8fe69b1d2104f8b4?lnk=gst&amp;amp;q=code+review#8fe69b1d2104f8b4&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/898f5dbe14057277/8fe69b1d2104f8b4?lnk=gst&amp;amp;q=code+review#8fe69b1d2104f8b4&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;ProposedSolution&quot;&gt;&lt;/a&gt;Proposed Solution&lt;/h2&gt;
&lt;p&gt;I signed the CA and posted it in the middle of June, but my name has not appeared on the list of contributors yet. I take the liberty of demonstrating how simple the fix should be:&lt;br/&gt;
&amp;lt;pre&amp;gt;diff --git a/src/clj/clojure/java/io.clj b/src/clj/clojure/java/io.clj&lt;br/&gt;
index 4d6c551..0151482 100644&lt;br/&gt;
&amp;#8212; a/src/clj/clojure/java/io.clj&lt;br/&gt;
+++ b/src/clj/clojure/java/io.clj&lt;br/&gt;
@@ -260,7 +260,7 @@&lt;br/&gt;
 (extend Socket&lt;br/&gt;
   IOFactory&lt;br/&gt;
   (assoc default-streams-impl&lt;br/&gt;
     :make-input-stream (fn &lt;span class=&quot;error&quot;&gt;&amp;#91;^Socket x opts&amp;#93;&lt;/span&gt; (.getInputStream x))&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;:output-stream (fn &lt;span class=&quot;error&quot;&gt;&amp;#91;^Socket x opts&amp;#93;&lt;/span&gt; (output-stream (.getOutputStream x) opt&lt;br/&gt;
+    :make-output-stream (fn &lt;span class=&quot;error&quot;&gt;&amp;#91;^Socket x opts&amp;#93;&lt;/span&gt; (.getOutputStream x))))&amp;lt;/pre&amp;gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;&lt;a name=&quot;PossibleUnitTests&quot;&gt;&lt;/a&gt;Possible Unit Tests&lt;/h2&gt;
&lt;p&gt;A simple test that demonstrates this bug would be to check that the result of clojure.java.io/writer returns a java.net.Writer. Preferably, there should be unit tests for all the classes IOFactory is extended to.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13801">CLJ-404</key>
            <summary>Making a writer from a Socket with clojure.java.io/writer fails</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 15 Jul 2010 13:38:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:22:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:22:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24115" author="importer" created="Tue, 24 Aug 2010 00:22:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/404&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/404&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
bug404_fix01_raek.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d4GJvSONmr367JeJe5cbLA/download/d4GJvSONmr367JeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d4GJvSONmr367JeJe5cbLA/download/d4GJvSONmr367JeJe5cbLA&lt;/a&gt;&lt;br/&gt;
0404-socket-with-opts.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/beVUnwPvOr3780eJe5cbLr/download/beVUnwPvOr3780eJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/beVUnwPvOr3780eJe5cbLr/download/beVUnwPvOr3780eJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24116" author="importer" created="Tue, 24 Aug 2010 00:22:00 -0500"  >&lt;p&gt;rasmus.svensson said: Patch and test that fails for the current version and passes for the fixed one.&lt;/p&gt;</comment>
                    <comment id="24117" author="importer" created="Tue, 24 Aug 2010 00:22:00 -0500"  >&lt;p&gt;rasmus.svensson said: [&lt;a href=&quot;file:d4GJvSONmr367JeJe5cbLA&quot;&gt;file:d4GJvSONmr367JeJe5cbLA&lt;/a&gt;]: Patch and test for iissue #404&lt;/p&gt;</comment>
                    <comment id="24118" author="importer" created="Tue, 24 Aug 2010 00:22:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:beVUnwPvOr3780eJe5cbLr&quot;&gt;file:beVUnwPvOr3780eJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24119" author="importer" created="Tue, 24 Aug 2010 00:22:00 -0500"  >&lt;p&gt;stu said: second patch subsumes first and preserves options passed in via opts&lt;/p&gt;</comment>
                    <comment id="24120" author="importer" created="Tue, 24 Aug 2010 00:22:00 -0500"  >&lt;p&gt;rasmus.svensson said: Should the tests check for instances of Buffered(Input|Output)Stream rather than (Input|Output)Stream, too?&lt;/p&gt;</comment>
                    <comment id="24121" author="importer" created="Tue, 24 Aug 2010 00:22:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#404, #422, #382, #423)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-403] extend-protocol doc is out of date</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-403</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The documentation to extend-protocol is out of date.  It refers to extend-class, which was merged into extend-type, and it shows the old ::TypeName notation.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13800">CLJ-403</key>
            <summary>extend-protocol doc is out of date</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="djpowell">David Powell</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 14 Jul 2010 23:31:00 -0500</created>
                <updated>Tue, 24 Aug 2010 18:21:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 18:21:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24110" author="importer" created="Tue, 24 Aug 2010 18:21:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/403&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/403&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-fixed-extend-protocol-doc.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/biQTisJ48r37lheJe5cbLA/download/biQTisJ48r37lheJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/biQTisJ48r37lheJe5cbLA/download/biQTisJ48r37lheJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24111" author="importer" created="Tue, 24 Aug 2010 18:21:00 -0500"  >&lt;p&gt;djpowell said: [&lt;a href=&quot;file:biQTisJ48r37lheJe5cbLA&quot;&gt;file:biQTisJ48r37lheJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24112" author="importer" created="Tue, 24 Aug 2010 18:21:00 -0500"  >&lt;p&gt;djpowell said: added patch to documentation&lt;/p&gt;</comment>
                    <comment id="24113" author="importer" created="Tue, 24 Aug 2010 18:21:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#403, #402)&lt;/p&gt;</comment>
                    <comment id="24114" author="importer" created="Tue, 24 Aug 2010 18:21:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#340, #399, #402, #403, #413)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-402] degenerate defrecords should act like empty maps</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-402</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;In the 1.2 beta1, empty defrecords misbehave, e.g.&lt;/p&gt;

&lt;p&gt;(defrecord Foo [])&lt;br/&gt;
(seq (Foo.)) =&amp;gt; () ; should be nil!&lt;/p&gt;

&lt;p&gt;This also contributes to the broken .containsValue mentioned in &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/5d27195d45b2d214/fb51906b2f960d4c&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/5d27195d45b2d214/fb51906b2f960d4c&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13799">CLJ-402</key>
            <summary>degenerate defrecords should act like empty maps</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 14 Jul 2010 19:40:00 -0500</created>
                <updated>Tue, 24 Aug 2010 18:21:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 18:21:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24106" author="importer" created="Tue, 24 Aug 2010 18:21:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/402&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/402&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0402-degenerate-defrecords.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bBn3fMJ3ar34yWeJe5cbLr/download/bBn3fMJ3ar34yWeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bBn3fMJ3ar34yWeJe5cbLr/download/bBn3fMJ3ar34yWeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24107" author="importer" created="Tue, 24 Aug 2010 18:21:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:bBn3fMJ3ar34yWeJe5cbLr&quot;&gt;file:bBn3fMJ3ar34yWeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24108" author="importer" created="Tue, 24 Aug 2010 18:21:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#403, #402)&lt;/p&gt;</comment>
                    <comment id="24109" author="importer" created="Tue, 24 Aug 2010 18:21:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#340, #399, #402, #403, #413)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-399] make sure shell out and err handled in parallel</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-399</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13796">CLJ-399</key>
            <summary>make sure shell out and err handled in parallel</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 10 Jul 2010 11:17:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:16:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:16:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24098" author="importer" created="Tue, 24 Aug 2010 00:16:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/399&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/399&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-read-stdout-and-stderr-in-parallel.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aNASvGJnar34lEeJe5cbCb/download/aNASvGJnar34lEeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aNASvGJnar34lEeJe5cbCb/download/aNASvGJnar34lEeJe5cbCb&lt;/a&gt;&lt;br/&gt;
0001-read-stdout-and-stderr-in-parallel-using-futures.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cFtkrCJTar37uZeJe5cbLr/download/cFtkrCJTar37uZeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cFtkrCJTar37uZeJe5cbLr/download/cFtkrCJTar37uZeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24099" author="importer" created="Tue, 24 Aug 2010 00:16:00 -0500"  >&lt;p&gt;djpowell said: [&lt;a href=&quot;file:aNASvGJnar34lEeJe5cbCb&quot;&gt;file:aNASvGJnar34lEeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24100" author="importer" created="Tue, 24 Aug 2010 00:16:00 -0500"  >&lt;p&gt;djpowell said: [&lt;a href=&quot;file:cFtkrCJTar37uZeJe5cbLr&quot;&gt;file:cFtkrCJTar37uZeJe5cbLr&lt;/a&gt;]: replacement patch&lt;/p&gt;</comment>
                    <comment id="24101" author="importer" created="Tue, 24 Aug 2010 00:16:00 -0500"  >&lt;p&gt;djpowell said: Original patch was fine, but pvalues isn&apos;t really needed - probably easier to use futures directly as in second patch.  Doesn&apos;t make too much difference.&lt;/p&gt;</comment>
                    <comment id="24102" author="importer" created="Tue, 24 Aug 2010 00:16:00 -0500"  >&lt;p&gt;stu said: second patch good&lt;/p&gt;</comment>
                    <comment id="24103" author="importer" created="Tue, 24 Aug 2010 00:16:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#340, #399, #402, #403, #413)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-398] Stray println snuck into clojure.java.shell/sh</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-398</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Line 94 in the current build; let&apos;s get rid of that, shall we? =)&lt;/p&gt;</description>
                <environment></environment>
            <key id="13795">CLJ-398</key>
            <summary>Stray println snuck into clojure.java.shell/sh</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="aaron">Aaron Bedra</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 8 Jul 2010 20:28:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:08:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:08:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24095" author="importer" created="Tue, 24 Aug 2010 00:08:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/398&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/398&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0398_remove_extra_println_in_java_shell.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/am8VPYIX0r36-ieJe5cbLA/download/am8VPYIX0r36-ieJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/am8VPYIX0r36-ieJe5cbLA/download/am8VPYIX0r36-ieJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24096" author="importer" created="Tue, 24 Aug 2010 00:08:00 -0500"  >&lt;p&gt;aaron said: [&lt;a href=&quot;file:am8VPYIX0r36-ieJe5cbLA&quot;&gt;file:am8VPYIX0r36-ieJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24097" author="importer" created="Tue, 24 Aug 2010 00:08:00 -0500"  >&lt;p&gt;stu said: duplicate of #392&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-393] Fix rename-keys to work with defrecords</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-393</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;clojure.set/rename-keys does not work with defrecords, because they do not implement IFn. rename-keys uses (map key) rather than (get map key).&lt;/p&gt;</description>
                <environment></environment>
            <key id="13790">CLJ-393</key>
            <summary>Fix rename-keys to work with defrecords</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="importer">Assembla Importer</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 30 Jun 2010 19:06:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:59:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:59:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24079" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/393&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/393&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Fix-rename-keys-to-work-with-defrecords.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c5AE6yHkqr36FEeJe5cbLA/download/c5AE6yHkqr36FEeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c5AE6yHkqr36FEeJe5cbLA/download/c5AE6yHkqr36FEeJe5cbLA&lt;/a&gt;&lt;br/&gt;
0393-Fix-rename-keys-plus-tests.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aTY3guHlKr3795eJe5cbLr/download/aTY3guHlKr3795eJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aTY3guHlKr3795eJe5cbLr/download/aTY3guHlKr3795eJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24080" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;importer said: [&lt;a href=&quot;file:c5AE6yHkqr36FEeJe5cbLA&quot;&gt;file:c5AE6yHkqr36FEeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24081" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aTY3guHlKr3795eJe5cbLr&quot;&gt;file:aTY3guHlKr3795eJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24082" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;stu said: second patch subsumes first and adds test&lt;/p&gt;</comment>
                    <comment id="24083" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#376, #392, #393)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-392] Numerous fixes for clojure.java.shell</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-392</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I have posted a patch to a number of issues discussed on the mailing list:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;read stdout and stderr simultanously from separate threads to prevent stderr filling the buffer and hanging the process&lt;/li&gt;
	&lt;li&gt;removed stray println&lt;/li&gt;
	&lt;li&gt;use clojure.java.io to copy streams, avoiding byte-at-a-time copying&lt;/li&gt;
	&lt;li&gt;added :inenc option, specifying the input character set&lt;/li&gt;
	&lt;li&gt;renamed :out input option to :outenc&lt;/li&gt;
	&lt;li&gt;changed default encoding to &apos;platform default encoding&apos;&lt;/li&gt;
	&lt;li&gt;write to stdin from a separate thread to prevent stdout blocking before we write anything&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Additionally I have added support for a feature mentioned in the post, but not implemented in the original patch set:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;added support for passing a byte array to :in&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Original post:&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/b4a4d6eca3fd9b9d/b12cc9e47f03f617#b12cc9e47f03f617&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/b4a4d6eca3fd9b9d/b12cc9e47f03f617#b12cc9e47f03f617&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Followup discussion:&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/dde2b5311212c072/3b24749935cfa4aa#3b24749935cfa4aa&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/dde2b5311212c072/3b24749935cfa4aa#3b24749935cfa4aa&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13789">CLJ-392</key>
            <summary>Numerous fixes for clojure.java.shell</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="djpowell">David Powell</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 30 Jun 2010 15:34:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:59:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:59:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24072" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/392&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/392&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-read-stdout-and-stderr-simultanously-from-separate-t.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/acCMkwHiCr34P8eJe5cbLr/download/acCMkwHiCr34P8eJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/acCMkwHiCr34P8eJe5cbLr/download/acCMkwHiCr34P8eJe5cbLr&lt;/a&gt;&lt;br/&gt;
0392-shell-api-changes-and-fixes.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a5qDGmHtOr34HNeJe5cbLA/download/a5qDGmHtOr34HNeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a5qDGmHtOr34HNeJe5cbLA/download/a5qDGmHtOr34HNeJe5cbLA&lt;/a&gt;&lt;br/&gt;
0392-shell-api-changes-and-fixes-2.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bWzYhgIDar36rceJe5cbLA/download/bWzYhgIDar36rceJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bWzYhgIDar36rceJe5cbLA/download/bWzYhgIDar36rceJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24073" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;djpowell said: [&lt;a href=&quot;file:acCMkwHiCr34P8eJe5cbLr&quot;&gt;file:acCMkwHiCr34P8eJe5cbLr&lt;/a&gt;]: Numerous fixes for clojure.java.shell&lt;/p&gt;</comment>
                    <comment id="24074" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:a5qDGmHtOr34HNeJe5cbLA&quot;&gt;file:a5qDGmHtOr34HNeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24075" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;stu said: second patch subsumes first, fixes errors, reflection warnings, and tests&lt;/p&gt;</comment>
                    <comment id="24076" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:bWzYhgIDar36rceJe5cbLA&quot;&gt;file:bWzYhgIDar36rceJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24077" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;stu said: Third patch (July 7) is inclusive and includes name change suggested by Rich.&lt;/p&gt;</comment>
                    <comment id="24078" author="importer" created="Tue, 24 Aug 2010 10:59:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#376, #392, #393)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-391] namespaces should be able to replace their own vars</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-391</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The code that prevents vars from replacing vars referred in from other namespaces is too strict: it also prevents the :reload-all scenario for a single namespace by spotting collisions between the old and new versions of the same var.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;http://groups.google.com/group/clojure-dev/msg/13978a18923e3356&quot;&gt;http://groups.google.com/group/clojure-dev/msg/13978a18923e3356&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13788">CLJ-391</key>
            <summary>namespaces should be able to replace their own vars</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 29 Jun 2010 23:01:00 -0500</created>
                <updated>Tue, 24 Aug 2010 11:58:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 11:58:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24069" author="importer" created="Tue, 24 Aug 2010 11:58:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/391&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/391&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0391-namespaces-replace-own-vars.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aUQI5kG_qr37uieJe5cbCb/download/aUQI5kG_qr37uieJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aUQI5kG_qr37uieJe5cbCb/download/aUQI5kG_qr37uieJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24070" author="importer" created="Tue, 24 Aug 2010 11:58:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aUQI5kG_qr37uieJe5cbCb&quot;&gt;file:aUQI5kG_qr37uieJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24071" author="importer" created="Tue, 24 Aug 2010 11:58:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#381, #386, #388, #391, #377)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-388] fix gvec reflection warnings</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-388</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;quick fix  while I investigate followon issues...&lt;/p&gt;</description>
                <environment></environment>
            <key id="13785">CLJ-388</key>
            <summary>fix gvec reflection warnings</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 23 Jun 2010 14:55:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:52:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:52:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24056" author="importer" created="Tue, 24 Aug 2010 10:52:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/388&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/388&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0388-quick-fix.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cuW8FoFWer37iDeJe5cbCb/download/cuW8FoFWer37iDeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cuW8FoFWer37iDeJe5cbCb/download/cuW8FoFWer37iDeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24057" author="importer" created="Tue, 24 Aug 2010 10:52:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cuW8FoFWer37iDeJe5cbCb&quot;&gt;file:cuW8FoFWer37iDeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24058" author="importer" created="Tue, 24 Aug 2010 10:52:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#381, #386, #388, #391, #377)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-387] clojure.java.shell needs different byte coercion</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-387</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Same as contrib issue &lt;a href=&quot;https://www.assembla.com/spaces/clojure-contrib/tickets/83-clojure-contrib-shell-broken-with-clojure-commit-37d8f7a&quot;&gt;https://www.assembla.com/spaces/clojure-contrib/tickets/83-clojure-contrib-shell-broken-with-clojure-commit-37d8f7a&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13784">CLJ-387</key>
            <summary>clojure.java.shell needs different byte coercion</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 22 Jun 2010 09:16:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:50:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:50:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24054" author="importer" created="Tue, 24 Aug 2010 10:50:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/387&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/387&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24055" author="importer" created="Tue, 24 Aug 2010 10:50:00 -0500"  >&lt;p&gt;stu said: Fix for #392 fixes this as well. (See &lt;a href=&quot;http://github.com/clojure/clojure/commit/7def88afe28221ad78f8d045ddbd87b5230cb03e&quot;&gt;http://github.com/clojure/clojure/commit/7def88afe28221ad78f8d045ddbd87b5230cb03e&lt;/a&gt;)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-386] spit works only on strings</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-386</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;As reported by Kevin Downey (&lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/36e1fa06d91e1ee1):&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/36e1fa06d91e1ee1):&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (spit &quot;/tmp/foo&quot; {:a 1})&lt;br/&gt;
java.lang.IllegalArgumentException: No matching method found: write&lt;br/&gt;
for class java.io.BufferedWriter&lt;br/&gt;
 (NO_SOURCE_FILE:0)&lt;br/&gt;
user=&amp;gt;&lt;/p&gt;

&lt;p&gt;This happens because the argument to spit isn&apos;t converted to a string before calling BufferedWriter.write&lt;/p&gt;</description>
                <environment></environment>
            <key id="13783">CLJ-386</key>
            <summary>spit works only on strings</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="tomfaulhaber">Tom Faulhaber</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sun, 20 Jun 2010 01:59:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:47:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:47:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24051" author="importer" created="Tue, 24 Aug 2010 10:47:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/386&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/386&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
spit-fix.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/deEMXaFdKr35cIeJe5cbLr/download/deEMXaFdKr35cIeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/deEMXaFdKr35cIeJe5cbLr/download/deEMXaFdKr35cIeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24052" author="importer" created="Tue, 24 Aug 2010 10:47:00 -0500"  >&lt;p&gt;tomfaulhaber said: [&lt;a href=&quot;file:deEMXaFdKr35cIeJe5cbLr&quot;&gt;file:deEMXaFdKr35cIeJe5cbLr&lt;/a&gt;]: A patch that converts arg to string (and adds some doc)&lt;/p&gt;</comment>
                    <comment id="24053" author="importer" created="Tue, 24 Aug 2010 10:47:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#381, #386, #388, #391, #377)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-382] fix underive for multiple inheritance</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-382</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Underive is incorrect: not all maps are updated, and the wrong key is used. See &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/b70f8bf16de2216&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/b70f8bf16de2216&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13779">CLJ-382</key>
            <summary>fix underive for multiple inheritance</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 16 Jun 2010 10:54:00 -0500</created>
                <updated>Tue, 24 Aug 2010 11:43:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 11:43:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24034" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/382&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/382&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
382_underive_and_tests.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bjcuyUNgSr37DFeJe5cbLr/download/bjcuyUNgSr37DFeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bjcuyUNgSr37DFeJe5cbLr/download/bjcuyUNgSr37DFeJe5cbLr&lt;/a&gt;&lt;br/&gt;
0382-underive-more-tests-and-reorg-helpers.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aGQTwUOW4r36MseJe5cbLr/download/aGQTwUOW4r36MseJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aGQTwUOW4r36MseJe5cbLr/download/aGQTwUOW4r36MseJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24035" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;rob_lachlan said: [&lt;a href=&quot;file:bjcuyUNgSr37DFeJe5cbLr&quot;&gt;file:bjcuyUNgSr37DFeJe5cbLr&lt;/a&gt;]: Patch for underive fixing several issues, to core.clj.  Also tests in multimethods.clj&lt;/p&gt;</comment>
                    <comment id="24036" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aGQTwUOW4r36MseJe5cbLr&quot;&gt;file:aGQTwUOW4r36MseJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24037" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;stu said: The second patch adds (hopefully) improved tests, plus a third commit that is just some needed reorg of test helpers.&lt;/p&gt;

&lt;p&gt;This may look like a big change during RC, but I am going to argue that it isn&apos;t really, because (1) it is entirely localized to underive, (2) introduces no new behavior, and (3) the current underive is trivially broken, so how could this be worse? &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                    <comment id="24038" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#404, #422, #382, #423)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-381] pprint: logical-block macro uses private vars</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-381</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Alex Ott noticed that the logical-block macro that&apos;s used to build dispatch tables uses two vars and a function that are private to clojure pprint. This makes it more difficult for programmers to build custom dispatch.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13778">CLJ-381</key>
            <summary>pprint: logical-block macro uses private vars</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="tomfaulhaber">Tom Faulhaber</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 15 Jun 2010 16:41:00 -0500</created>
                <updated>Tue, 24 Aug 2010 11:43:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 11:43:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24028" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/381&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/381&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
level-in-macros.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/clc8hqEl4r35dfeJe5cbCb/download/clc8hqEl4r35dfeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/clc8hqEl4r35dfeJe5cbCb/download/clc8hqEl4r35dfeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24029" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;tomfaulhaber said: [&lt;a href=&quot;file:clc8hqEl4r35dfeJe5cbCb&quot;&gt;file:clc8hqEl4r35dfeJe5cbCb&lt;/a&gt;]: Access private vars correctly&lt;/p&gt;</comment>
                    <comment id="24030" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;tomfaulhaber said: This patch will use the #&apos;ns/var idiom to access the private vars from the macro. It&apos;s a little tricky because binding doesn&apos;t seem to support that idiom, so we use push-thread-bindings directly.&lt;/p&gt;</comment>
                    <comment id="24031" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;stu said: I have two questions for Rich:&lt;/p&gt;

&lt;p&gt;1. I have hit the same issue with binding a private var. Is this approach idiomatic?&lt;/p&gt;

&lt;p&gt;2. The patch uses var-get. What&apos;s the difference between var-get and deref? They follow a different code path in Var.java.&lt;/p&gt;

&lt;p&gt;Patch works, and unless the answer to #1 or #2 is a problem this patch looks good.&lt;/p&gt;</comment>
                    <comment id="24032" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;richhickey said: 1) yes&lt;br/&gt;
2) get has a slight optimization&lt;/p&gt;</comment>
                    <comment id="24033" author="importer" created="Tue, 24 Aug 2010 11:43:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#381, #386, #388, #391, #377)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-377] fix file/line reporting in ant builds</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-377</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;clojure.test figures out where a failing test is by manufacturing an exception instance during reporting, then crawling back up the stack a fixed distance to find the test.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13774">CLJ-377</key>
            <summary>fix file/line reporting in ant builds</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 8 Jun 2010 17:11:00 -0500</created>
                <updated>Tue, 24 Aug 2010 11:35:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 11:35:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24013" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/377&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/377&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0377-fix-file-line-reporting.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aV-RgEC0ur35QUeJe5cbCb/download/aV-RgEC0ur35QUeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aV-RgEC0ur35QUeJe5cbCb/download/aV-RgEC0ur35QUeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24014" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aV-RgEC0ur35QUeJe5cbCb&quot;&gt;file:aV-RgEC0ur35QUeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="24015" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;stu said: This fix introduces a (tiny) API change for advanced users of clojure.test. If you are writing your own assert-expr method, you must call the new do-report instead of report. do-report adds :file and :line info to the result map, so that later code doesn&apos;t have to guess how far up the stack to crawl.&lt;/p&gt;

&lt;p&gt;We can&apos;t change report to do this work, because it is rebound by several consumers.&lt;/p&gt;

&lt;p&gt;We are unaware of &lt;b&gt;any&lt;/b&gt; users who have actually written an assert-expr, so the impact of this change may be zero.&lt;/p&gt;</comment>
                    <comment id="24016" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;richhickey said: This is still not quite right. When an unanticipated exception happens, it reports the exception cause line, not the test line. I think it should always say:&lt;/p&gt;

&lt;p&gt;I was running this test here: &lt;br/&gt;
test file + line&lt;/p&gt;

&lt;p&gt;and this bad thing happened:&lt;br/&gt;
stacktrace with cause up top&lt;/p&gt;</comment>
                    <comment id="24017" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#381, #386, #388, #391, #377)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-376] make sure tests pass on Windows</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-376</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13773">CLJ-376</key>
            <summary>make sure tests pass on Windows</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="aaron">Aaron Bedra</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 8 Jun 2010 11:24:00 -0500</created>
                <updated>Tue, 24 Aug 2010 11:35:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 11:35:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24006" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/376&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/376&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
376_windows_tests.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dbJ0tUHSGr356VeJe5cbLA/download/dbJ0tUHSGr356VeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dbJ0tUHSGr356VeJe5cbLA/download/dbJ0tUHSGr356VeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24007" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;aaron said: 4bec81db4ee4e9e4227a Tested and working with Sun JDK 1.6.0_20 on Windows Home Premium 7 and ant 1.8.1&lt;/p&gt;</comment>
                    <comment id="24008" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;aaron said: Correction:&lt;/p&gt;

&lt;p&gt;Tests are still failing.  Setting back to&lt;/p&gt;</comment>
                    <comment id="24009" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;aaron said: [&lt;a href=&quot;file:dbJ0tUHSGr356VeJe5cbLA&quot;&gt;file:dbJ0tUHSGr356VeJe5cbLA&lt;/a&gt;]: Fixes tests on windows&lt;/p&gt;</comment>
                    <comment id="24010" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;aaron said: Patch tested against 4bec81db4ee4e9e4227a66bb1a04ba06e95ea9b6&lt;/p&gt;</comment>
                    <comment id="24011" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#376, #392, #393)&lt;/p&gt;</comment>
                    <comment id="24012" author="importer" created="Tue, 24 Aug 2010 11:35:00 -0500"  >&lt;p&gt;importer said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:4630d025d2101d13e626b56b3b2ba01950bd0ac9&amp;#93;&lt;/span&gt;]) Tests are now passing on windows refs #376&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-367] defrecord doesn&apos;t work with certain field names</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-367</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;When a field name in a defrecord coincides with an argument name in one of the method implementations, strange things happen:&lt;/p&gt;

&lt;p&gt;(defrecord Foo &lt;span class=&quot;error&quot;&gt;&amp;#91;o&amp;#93;&lt;/span&gt;)&lt;br/&gt;
java.lang.RuntimeException: java.lang.IllegalArgumentException: Unable to resolve classname: Foo&lt;br/&gt;
        at clojure.lang.Compiler.maybePrimitiveType(Compiler.java:1118)&lt;br/&gt;
        at clojure.lang.Compiler$MethodExpr.emitTypedArgs(Compiler.java:1142)&lt;br/&gt;
...&lt;/p&gt;

&lt;p&gt;(defrecord Foo &lt;span class=&quot;error&quot;&gt;&amp;#91;this that&amp;#93;&lt;/span&gt;)&lt;br/&gt;
(let &lt;span class=&quot;error&quot;&gt;&amp;#91;a-foo (new Foo :a :b)&amp;#93;&lt;/span&gt;&lt;br/&gt;
 (with-meta a-foo {:foo :bar}))&lt;br/&gt;
java.lang.StackOverflowError&lt;/p&gt;

&lt;p&gt;The attached patch introduces gensyms for all the critical method argument names, such that clashes are no longer possible.&lt;/p&gt;

&lt;p&gt;In Clojure-Dev: &lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/9e4c1956d75588b8/8261a8d112f1eadf?lnk=gst&amp;amp;q=defrecord#8261a8d112f1eadf&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/9e4c1956d75588b8/8261a8d112f1eadf?lnk=gst&amp;amp;q=defrecord#8261a8d112f1eadf&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13764">CLJ-367</key>
            <summary>defrecord doesn&apos;t work with certain field names</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="khinsen">Konrad Hinsen</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 28 May 2010 08:40:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:21:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:21:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23970" author="importer" created="Tue, 24 Aug 2010 08:21:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/367&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/367&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
defrecord-patch.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bldqvQAM8r35_YeJe5cbLr/download/bldqvQAM8r35_YeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bldqvQAM8r35_YeJe5cbLr/download/bldqvQAM8r35_YeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23971" author="importer" created="Tue, 24 Aug 2010 08:21:00 -0500"  >&lt;p&gt;stu said: This patch seems to work fine, but I have two questions for Rich:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Should the outer let gensym a symbol for all the thises, i.e. is there any memory/perf benefit to not generating a different autogensym for every method? Assuming no, but thought I would check.&lt;/li&gt;
	&lt;li&gt;Do I need to go back in git history and compare this to the point where defrecord worked like this originally, if it ever did? If so, can you point me to the commit?&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    <comment id="23972" author="importer" created="Tue, 24 Aug 2010 08:21:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#256, #257, #367, #358)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-365] better defn error messages</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-365</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;better error message for (defn foo (not an arg-vec)), plus a place to hang other arg validations for defn&lt;/p&gt;</description>
                <environment></environment>
            <key id="13762">CLJ-365</key>
            <summary>better defn error messages</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 28 May 2010 00:01:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:21:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:21:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23965" author="importer" created="Tue, 24 Aug 2010 00:21:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/365&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/365&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0365-better-defn-error-messages.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cHal4IAGur347HeJe5cbLr/download/cHal4IAGur347HeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cHal4IAGur347HeJe5cbLr/download/cHal4IAGur347HeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23966" author="importer" created="Tue, 24 Aug 2010 00:21:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cHal4IAGur347HeJe5cbLr&quot;&gt;file:cHal4IAGur347HeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23967" author="importer" created="Tue, 24 Aug 2010 00:21:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#330, #357, #358, #365)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-362] incorrect result of reductions for empty input sequences</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-362</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;reductions does not return the correct result in case of an empty input sequence.&lt;/p&gt;

&lt;p&gt;(reductions + nil)&lt;br/&gt;
actual: 0&lt;br/&gt;
expected: (0)&lt;/p&gt;</description>
                <environment></environment>
            <key id="13759">CLJ-362</key>
            <summary>incorrect result of reductions for empty input sequences</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 27 May 2010 13:57:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:20:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:20:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23952" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/362&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/362&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Fix-reductions-on-empty-input-sequence.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/b5G536ABer36SaeJe5cbLr/download/b5G536ABer36SaeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/b5G536ABer36SaeJe5cbLr/download/b5G536ABer36SaeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23953" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;meikelbrandmeyer said: [&lt;a href=&quot;file:b5G536ABer36SaeJe5cbLr&quot;&gt;file:b5G536ABer36SaeJe5cbLr&lt;/a&gt;]: Fix for ticket #362&lt;/p&gt;</comment>
                    <comment id="23954" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;meikelbrandmeyer said: Fixed bug and added appropriate test&lt;/p&gt;</comment>
                    <comment id="23955" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#327, #359, #360, #361, #362)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-361] clojure.core/merge-with doesn&apos;t work with defrecord types</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-361</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;clojure.core/merge-with works only with map types that implement clojure.lang.IFn for element lookup. In particular, it doesn&apos;t work with types defined by defrecord.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/8e546e595a4c4cab/aa47af1770183c56?lnk=gst&amp;amp;q=merge-with#aa47af1770183c56&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/8e546e595a4c4cab/aa47af1770183c56?lnk=gst&amp;amp;q=merge-with#aa47af1770183c56&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13758">CLJ-361</key>
            <summary>clojure.core/merge-with doesn&apos;t work with defrecord types</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="khinsen">Konrad Hinsen</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 27 May 2010 00:54:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:20:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:20:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23946" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/361&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/361&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
improve-merge-with.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aJX5CiAAGr36gUeJe5cbCb/download/aJX5CiAAGr36gUeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aJX5CiAAGr36gUeJe5cbCb/download/aJX5CiAAGr36gUeJe5cbCb&lt;/a&gt;&lt;br/&gt;
0361-improve-merge-with-plus-test.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/akEK3iBO4r356HeJe5cbLr/download/akEK3iBO4r356HeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/akEK3iBO4r356HeJe5cbLr/download/akEK3iBO4r356HeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23947" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;stu said: Konrad, &lt;/p&gt;

&lt;p&gt;Can you please add a pointer to the discussion on the mailing list or irc that led to a ticket being created? It doesn&apos;t seem like much, but it is as huge help for me having context when I have a bunch of patches to review.&lt;/p&gt;

&lt;p&gt;Thanks!&lt;br/&gt;
Stu&lt;/p&gt;</comment>
                    <comment id="23948" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:akEK3iBO4r356HeJe5cbLr&quot;&gt;file:akEK3iBO4r356HeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23949" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;stu said: second patch subsumes first and adds test&lt;/p&gt;</comment>
                    <comment id="23950" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;khinsen said: Stu,&lt;/p&gt;

&lt;p&gt;I just added the pointer to the description!&lt;/p&gt;

&lt;p&gt;Konrad.&lt;/p&gt;</comment>
                    <comment id="23951" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#327, #359, #360, #361, #362)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-360] NullPointerException on disj</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-360</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;disj throws a NPE when given a nil set. Tested using a build of clojure master branch as of 2010-05-26.&lt;/p&gt;

&lt;p&gt;Clojure 1.2.0-master-SNAPSHOT&lt;br/&gt;
user=&amp;gt; (disj nil :test)&lt;br/&gt;
java.lang.NullPointerException (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;Expected result to be nil.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/3090d34f9ccf75ea&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/3090d34f9ccf75ea&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13757">CLJ-360</key>
            <summary>NullPointerException on disj</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 27 May 2010 10:50:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:20:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:20:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23942" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/360&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/360&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Make-disj-nil-aware.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bt3H1QABar34xReJe5cbLr/download/bt3H1QABar34xReJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bt3H1QABar34xReJe5cbLr/download/bt3H1QABar34xReJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23943" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;meikelbrandmeyer said: [&lt;a href=&quot;file:bt3H1QABar34xReJe5cbLr&quot;&gt;file:bt3H1QABar34xReJe5cbLr&lt;/a&gt;]: Patch for ticket #360&lt;/p&gt;</comment>
                    <comment id="23944" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;meikelbrandmeyer said: Fixed disj and added appropriate test cases.&lt;/p&gt;</comment>
                    <comment id="23945" author="importer" created="Tue, 24 Aug 2010 00:20:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#327, #359, #360, #361, #362)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-359] promote contrib string</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-359</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Promote the following from clojure.contrib.string to a new namespace, clojure.string&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;join&lt;/li&gt;
	&lt;li&gt;chop&lt;/li&gt;
	&lt;li&gt;chomp&lt;/li&gt;
	&lt;li&gt;split (fix perf, return vector)&lt;/li&gt;
	&lt;li&gt;replace (subsumes all replace- variants)&lt;/li&gt;
	&lt;li&gt;replace-first (subsumes all replace-first- variants)&lt;/li&gt;
	&lt;li&gt;reverse&lt;/li&gt;
	&lt;li&gt;capitalize&lt;/li&gt;
	&lt;li&gt;upper-case&lt;/li&gt;
	&lt;li&gt;lower-case&lt;/li&gt;
	&lt;li&gt;trim&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Where necessary, change fns to take the string as first arg&lt;/p&gt;

&lt;p&gt;Issues raised on mailing list:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;perf test, particularly join&lt;/li&gt;
	&lt;li&gt;design guidelines for when nil works&lt;/li&gt;
	&lt;li&gt;arg order / point-free style?&lt;/li&gt;
	&lt;li&gt;trim options&lt;/li&gt;
	&lt;li&gt;trim modifiers at end&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
            <key id="13756">CLJ-359</key>
            <summary>promote contrib string</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 26 May 2010 00:12:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:18:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:18:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23932" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/359&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/359&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0359-promote-string.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aColQyBFar36SeeJe5cbCb/download/aColQyBFar36SeeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aColQyBFar36SeeJe5cbCb/download/aColQyBFar36SeeJe5cbCb&lt;/a&gt;&lt;br/&gt;
0359-promote-string-take-2.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cggc9eBOOr34uaeJe5cbCb/download/cggc9eBOOr34uaeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cggc9eBOOr34uaeJe5cbCb/download/cggc9eBOOr34uaeJe5cbCb&lt;/a&gt;&lt;br/&gt;
0359-promote-string-take-3.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dZkYPeB08r36cLeJe5cbLr/download/dZkYPeB08r36cLeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dZkYPeB08r36cLeJe5cbLr/download/dZkYPeB08r36cLeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23933" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aColQyBFar36SeeJe5cbCb&quot;&gt;file:aColQyBFar36SeeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23934" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cggc9eBOOr34uaeJe5cbCb&quot;&gt;file:cggc9eBOOr34uaeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23935" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;stu said: Second patch subsumes first, thanks Sean Devlin for the review!&lt;/p&gt;</comment>
                    <comment id="23936" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;stuart.sierra said: Request: retain the type-specific, performant versions of replace&lt;span class=&quot;error&quot;&gt;&amp;#91;-first&amp;#93;&lt;/span&gt;-str/char/re/by.  Consider making &quot;replace&quot; a multimethod, or at least add to doc string that it is not performant.&lt;/p&gt;</comment>
                    <comment id="23937" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;stuart.sierra said: Halloway says the type-checking &apos;replace&apos; peforms on par with the type-specific fns, so I retract my request.&lt;/p&gt;</comment>
                    <comment id="23938" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dZkYPeB08r36cLeJe5cbLr&quot;&gt;file:dZkYPeB08r36cLeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23939" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;stu said: Third patch susbumes others and adds a few fns that Stuart Sierra really wanted.&lt;/p&gt;</comment>
                    <comment id="23940" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;importer said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:b7f211356c27ba099f3dbe116539dbd9efa421df&amp;#93;&lt;/span&gt;]) string perf tweaks, tests #359&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="23941" author="importer" created="Tue, 24 Aug 2010 00:18:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#327, #359, #360, #361, #362)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-358] pop! on a 33-item-long transient vector returns a persisted transient vector</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-358</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;user=&amp;gt;  (-&amp;gt; (range 33) vec transient pop! count )&lt;br/&gt;
java.lang.IllegalAccessError: Transient used after persistent! call (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;Obviously persistent! is never called.&lt;/p&gt;

&lt;p&gt;The applied patch doesn&apos;t solve a similar issue with transient vectors of size 33+32^n with n &amp;gt;= 2/&lt;/p&gt;</description>
                <environment></environment>
            <key id="13755">CLJ-358</key>
            <summary>pop! on a 33-item-long transient vector returns a persisted transient vector</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 26 May 2010 04:16:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:17:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:17:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23922" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/358&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/358&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
pop-33-item-long-transient-vector.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aJWSRMAjCr35eseJe5cbLA/download/aJWSRMAjCr35eseJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aJWSRMAjCr35eseJe5cbLA/download/aJWSRMAjCr35eseJe5cbLA&lt;/a&gt;&lt;br/&gt;
0358-fix-pop-across-node-boundary.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d-tOhgApGr34XueJe5cbLA/download/d-tOhgApGr34XueJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d-tOhgApGr34XueJe5cbLA/download/d-tOhgApGr34XueJe5cbLA&lt;/a&gt;&lt;br/&gt;
0001-fix-pop-when-the-tree-depth-decreases.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/b42sq8AIOr36DmeJe5cbCb/download/b42sq8AIOr36DmeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/b42sq8AIOr36DmeJe5cbCb/download/b42sq8AIOr36DmeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23923" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:aJWSRMAjCr35eseJe5cbLA&quot;&gt;file:aJWSRMAjCr35eseJe5cbLA&lt;/a&gt;]: patch&lt;/p&gt;</comment>
                    <comment id="23924" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;cgrand said: 1.1 has the same bug&lt;/p&gt;</comment>
                    <comment id="23925" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:d-tOhgApGr34XueJe5cbLA&quot;&gt;file:d-tOhgApGr34XueJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23926" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;stu said: second patch includes cgrand&apos;s fix plus a test&lt;/p&gt;</comment>
                    <comment id="23927" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;cgrand said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:7700d66d5a657d2102ddeb560d52bca758669ed9&amp;#93;&lt;/span&gt;]) fix pop! on 33-item-long transient vectors. See #358.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;br/&gt;
Signed-off-by: STUART HALLOWAY &amp;lt;stuart@STUART-HALLOWAYs-MacBook-Pro.local&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="23928" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:b42sq8AIOr36DmeJe5cbCb&quot;&gt;file:b42sq8AIOr36DmeJe5cbCb&lt;/a&gt;]: patch (and updated tests) for transient vectors of size 33+32^n&lt;/p&gt;</comment>
                    <comment id="23929" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#330, #357, #358, #365)&lt;/p&gt;</comment>
                    <comment id="23930" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;stu said: reopened: cgrand&apos;s 5/28 patch needs to be applied.&lt;/p&gt;

&lt;p&gt;in general, I would prefer opening a new ticket, and never re-opening old ones. Thoughts?&lt;/p&gt;</comment>
                    <comment id="23931" author="importer" created="Tue, 24 Aug 2010 00:17:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#256, #257, #367, #358)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-357] promote contrib javadoc</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-357</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Aside: while at it, don&apos;t use the clojure.repl/*-fns at the repl&lt;/p&gt;</description>
                <environment></environment>
            <key id="13754">CLJ-357</key>
            <summary>promote contrib javadoc</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 26 May 2010 02:45:00 -0500</created>
                <updated>Tue, 24 Aug 2010 17:17:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 17:17:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23914" author="importer" created="Tue, 24 Aug 2010 17:17:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/357&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/357&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0357-promote-contrib-javadoc.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dEhdi4AhKr365BeJe5cbCb/download/dEhdi4AhKr365BeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dEhdi4AhKr365BeJe5cbCb/download/dEhdi4AhKr365BeJe5cbCb&lt;/a&gt;&lt;br/&gt;
0357-promote-contrib-javadoc-2.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/b8LexKAoqr34WYeJe5cbLr/download/b8LexKAoqr34WYeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/b8LexKAoqr34WYeJe5cbLr/download/b8LexKAoqr34WYeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23915" author="importer" created="Tue, 24 Aug 2010 17:17:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dEhdi4AhKr365BeJe5cbCb&quot;&gt;file:dEhdi4AhKr365BeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23916" author="importer" created="Tue, 24 Aug 2010 17:17:00 -0500"  >&lt;p&gt;stu said: other fns that might be auto-referred at the repl: browse-url and sh&lt;/p&gt;</comment>
                    <comment id="23917" author="importer" created="Tue, 24 Aug 2010 17:17:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:b8LexKAoqr34WYeJe5cbLr&quot;&gt;file:b8LexKAoqr34WYeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23918" author="importer" created="Tue, 24 Aug 2010 17:17:00 -0500"  >&lt;p&gt;stu said: second patch subsumes first, and lets &apos;name&apos; handle strings&lt;/p&gt;</comment>
                    <comment id="23919" author="importer" created="Tue, 24 Aug 2010 17:17:00 -0500"  >&lt;p&gt;richhickey said: I&apos;m confused by this patch - what&apos;s clojure.shell?&lt;/p&gt;</comment>
                    <comment id="23920" author="importer" created="Tue, 24 Aug 2010 17:17:00 -0500"  >&lt;p&gt;stu said: It&apos;s Chousers clojure.contrib.shell-out.  Javadoc has a dependency on it. We could make it private, but it&apos;s darn useful of itself, and I have audited the code, making changes and exposing an API that I am comfortable supporting.&lt;/p&gt;</comment>
                    <comment id="23921" author="importer" created="Tue, 24 Aug 2010 17:17:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#330, #357, #358, #365)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-356] better error message on failed refer</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-356</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;error message &quot;is not public&quot; is misleading when usually the var doesn&apos;t even exist.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13753">CLJ-356</key>
            <summary>better error message on failed refer</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sun, 23 May 2010 21:34:00 -0500</created>
                <updated>Tue, 24 Aug 2010 17:14:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 17:14:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23911" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/356&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/356&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0356-refer-error-message.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dtquF6zQir36upeJe5cbLA/download/dtquF6zQir36upeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dtquF6zQir36upeJe5cbLA/download/dtquF6zQir36upeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23912" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dtquF6zQir36upeJe5cbLA&quot;&gt;file:dtquF6zQir36upeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23913" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#333, #349, #355, #356)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-355] eliminate reflection from bit-shift slow path</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-355</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;&quot;slow path&quot; doesn&apos;t have to be &quot;cruelly slow path&quot;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13752">CLJ-355</key>
            <summary>eliminate reflection from bit-shift slow path</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 22 May 2010 22:11:00 -0500</created>
                <updated>Tue, 24 Aug 2010 17:14:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 17:14:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23905" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/355&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/355&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0355-eliminate-reflection-from-bitshift-slow-path.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cwrtVszD4r37kdeJe5cbLr/download/cwrtVszD4r37kdeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cwrtVszD4r37kdeJe5cbLr/download/cwrtVszD4r37kdeJe5cbLr&lt;/a&gt;&lt;br/&gt;
0355-eliminate-reflection-from-bitshift-take-2.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cwhEQAzZ0r34goeJe5cbCb/download/cwhEQAzZ0r34goeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cwhEQAzZ0r34goeJe5cbCb/download/cwhEQAzZ0r34goeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23906" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cwrtVszD4r37kdeJe5cbLr&quot;&gt;file:cwrtVszD4r37kdeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23907" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;richhickey said: You want to use intValue of n, rather than hardwire Integer&lt;/p&gt;</comment>
                    <comment id="23908" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cwhEQAzZ0r34goeJe5cbCb&quot;&gt;file:cwhEQAzZ0r34goeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23909" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: second patch only&lt;/p&gt;</comment>
                    <comment id="23910" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#333, #349, #355, #356)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-353] Deftypes not re-evaluated when protocols change; causes errors</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-353</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I keep having to restart my JVM to avoid a puzzling issue when changing protocol definitions.&lt;/p&gt;

&lt;p&gt;Here&apos;s the simplest way to reproduce the problem:&lt;/p&gt;

&lt;p&gt;Start with file protoproblem/proto.clj:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(ns protoproblem.proto)

   (defprotocol Steps
     (one [x])
     (two [x]))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

and file protoproblem/impl.clj:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;   (ns protoproblem.impl
     (:require [protoproblem.proto :as proto]))

   (deftype ArraySteps [a]
     proto/Steps
     (one [x] (first a))
     (two [x] (second a)))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

In the repl, everything works as expected:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;   user&amp;gt; (load &lt;span class=&quot;code-quote&quot;&gt;&quot;protoproblem/proto&quot;&lt;/span&gt;)
   nil
   user&amp;gt; (load &lt;span class=&quot;code-quote&quot;&gt;&quot;protoproblem/impl&quot;&lt;/span&gt;)
   nil
   user&amp;gt; (protoproblem.proto/one (protoproblem.impl.ArraySteps. [1 2]))
   1
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

Now, we redefine the protocol by commenting out the &apos;one&apos; method def in proto.clj, and then reloading it:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;   user=&amp;gt; (load &lt;span class=&quot;code-quote&quot;&gt;&quot;protoproblem/proto&quot;&lt;/span&gt;)
   nil
   user=&amp;gt; (protoproblem.proto/one (protoproblem.impl.ArraySteps. [1 2]))
   java.lang.NullPointerException (NO_SOURCE_FILE:9)
   user=&amp;gt; (load &lt;span class=&quot;code-quote&quot;&gt;&quot;protoproblem/impl&quot;&lt;/span&gt;)
   java.lang.IllegalArgumentException: Can&apos;t define method not in interfaces: one (impl.clj:5)
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

That&apos;s pretty much as expected. But what &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; we &lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt; to get back to how things were, by reversing the changes in proto.clj, and reloading? This is where the problems arise:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;   user=&amp;gt; (load &lt;span class=&quot;code-quote&quot;&gt;&quot;protoproblem/proto&quot;&lt;/span&gt;)
   nil
   user=&amp;gt; (load &lt;span class=&quot;code-quote&quot;&gt;&quot;protoproblem/impl&quot;&lt;/span&gt;)
   nil
   user=&amp;gt; (protoproblem.proto/one (protoproblem.impl.ArraySteps. [1 2]))
   java.lang.IllegalArgumentException: No implementation of method: :one of protocol: #&apos;protoproblem.proto/Steps found &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; class: protoproblem.impl.ArraySteps (NO_SOURCE_FILE:0)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Ouch!&lt;/p&gt;

&lt;p&gt;At this point, I have to restart my JVM to proceed, which is making incremental development of protocols-based code unusually tedious.&lt;/p&gt;

&lt;p&gt;I initially encountered the behaviour using &quot;C-c C-k&quot; under slime/swank-clojure, but the above transcript is from a plain command-line repl, using a Clojure 1.2 snapshot from today. (The same thing happened with a snapshot from 2 weeks ago.)&lt;/p&gt;

&lt;p&gt;When using &quot;reify&quot; inside a factory function instead of the constructor for a &quot;deftype&quot;, everything works as expected.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13750">CLJ-353</key>
            <summary>Deftypes not re-evaluated when protocols change; causes errors</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 20 May 2010 10:53:00 -0500</created>
                <updated>Tue, 24 Aug 2010 09:12:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 09:12:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23900" author="importer" created="Tue, 24 Aug 2010 09:12:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/353&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/353&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23901" author="importer" created="Tue, 24 Aug 2010 09:12:00 -0500"  >&lt;p&gt;cgrand said: Is this the same DynamicClassLoader caching problem as in #368?&lt;/p&gt;</comment>
                    <comment id="23902" author="importer" created="Tue, 24 Aug 2010 09:12:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:f47b3d6f028e0370c495383731a449092d0ae451&amp;#93;&lt;/span&gt;]) disable don&apos;t-recompile-if-same-source in DynamicClassLoader, fixes #353&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-352] clear macro meta when binding root of a var</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-352</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13749">CLJ-352</key>
            <summary>clear macro meta when binding root of a var</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 19 May 2010 18:15:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:11:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:11:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23897" author="importer" created="Tue, 24 Aug 2010 08:11:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/352&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/352&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0352-clear-macro-meta.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dcHhH2y60r36u-eJe5cbLA/download/dcHhH2y60r36u-eJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dcHhH2y60r36u-eJe5cbLA/download/dcHhH2y60r36u-eJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23898" author="importer" created="Tue, 24 Aug 2010 08:11:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dcHhH2y60r36u-eJe5cbLA&quot;&gt;file:dcHhH2y60r36u-eJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23899" author="importer" created="Tue, 24 Aug 2010 08:11:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#311, #347, #352)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-351] Disable transients after persistent! call</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-351</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13748">CLJ-351</key>
            <summary>Disable transients after persistent! call</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 19 May 2010 05:53:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:10:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:10:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23896" author="importer" created="Tue, 24 Aug 2010 08:10:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/351&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/351&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-349] propagate metadata on protocol fns</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-349</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;return type hints, arg lists, docstrings&lt;/p&gt;</description>
                <environment></environment>
            <key id="13746">CLJ-349</key>
            <summary>propagate metadata on protocol fns</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 13 May 2010 19:27:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:05:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:05:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23890" author="importer" created="Tue, 24 Aug 2010 08:05:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/349&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/349&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0349-propagate-protocol-fn-metadata.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bQUYLEzDKr35o-eJe5cbCb/download/bQUYLEzDKr35o-eJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bQUYLEzDKr35o-eJe5cbCb/download/bQUYLEzDKr35o-eJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23891" author="importer" created="Tue, 24 Aug 2010 08:05:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:bQUYLEzDKr35o-eJe5cbCb&quot;&gt;file:bQUYLEzDKr35o-eJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23892" author="importer" created="Tue, 24 Aug 2010 08:05:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#333, #349, #355, #356)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-347] Extend pprint to correctly handle data inside ref types</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-347</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;It&apos;s important that pprint can &quot;see inside&quot; all ref types so that it can format Clojure data inside them, This patch adds that, some more tests, and a little change to conform to the coding guidelines.&lt;/p&gt;

&lt;p&gt;This is the last planned update to pprint for 1.2. Only approved bugs will be fixed from here on out.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13744">CLJ-347</key>
            <summary>Extend pprint to correctly handle data inside ref types</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="tomfaulhaber">Tom Faulhaber</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 12 May 2010 10:50:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:01:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:01:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23882" author="importer" created="Tue, 24 Aug 2010 08:01:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/347&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/347&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
pprint-update.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dw2yDkxE4r37MgeJe5cbLA/download/dw2yDkxE4r37MgeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dw2yDkxE4r37MgeJe5cbLA/download/dw2yDkxE4r37MgeJe5cbLA&lt;/a&gt;&lt;br/&gt;
0347-pprint-update-2.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/b6MkCuy7ar36cDeJe5cbCb/download/b6MkCuy7ar36cDeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/b6MkCuy7ar36cDeJe5cbCb/download/b6MkCuy7ar36cDeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23883" author="importer" created="Tue, 24 Aug 2010 08:01:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:b6MkCuy7ar36cDeJe5cbCb&quot;&gt;file:b6MkCuy7ar36cDeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23884" author="importer" created="Tue, 24 Aug 2010 08:01:00 -0500"  >&lt;p&gt;stu said: Second patch subsumes first and add tests.&lt;/p&gt;</comment>
                    <comment id="23885" author="importer" created="Tue, 24 Aug 2010 08:01:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#311, #347, #352)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-344] reduce docstring args don&apos;t match docs</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-344</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The reduce docstring says lists the arg forms as (&lt;span class=&quot;error&quot;&gt;&amp;#91;f coll&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;f start coll&amp;#93;&lt;/span&gt;) but the docstring uses &quot;val&quot; instead of &quot;start&quot; in the description.  To fix, replace all &quot;val&quot; with &quot;start&quot;.  &lt;/p&gt;

&lt;p&gt;clojure.core/reduce&lt;br/&gt;
(&lt;span class=&quot;error&quot;&gt;&amp;#91;f coll&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;f start coll&amp;#93;&lt;/span&gt;)&lt;br/&gt;
  f should be a function of 2 arguments. If val is not supplied,&lt;br/&gt;
  returns the result of applying f to the first 2 items in coll, then&lt;br/&gt;
  applying f to that result and the 3rd item, etc. If coll contains no&lt;br/&gt;
  items, f must accept no arguments as well, and reduce returns the&lt;br/&gt;
  result of calling f with no arguments.  If coll has only 1 item, it&lt;br/&gt;
  is returned and f is not called.  If val is supplied, returns the&lt;br/&gt;
  result of applying f to val and the first item in coll, then&lt;br/&gt;
  applying f to that result and the 2nd item, etc. If coll contains no&lt;br/&gt;
  items, returns val and f is not called.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13741">CLJ-344</key>
            <summary>reduce docstring args don&apos;t match docs</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Mon, 10 May 2010 10:21:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:58:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:58:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23873" author="importer" created="Tue, 24 Aug 2010 08:58:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/344&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/344&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0344-reduce-var-names.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aybc_syEOr37oxeJe5cbLA/download/aybc_syEOr37oxeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aybc_syEOr37oxeJe5cbLA/download/aybc_syEOr37oxeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23874" author="importer" created="Tue, 24 Aug 2010 08:58:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aybc_syEOr37oxeJe5cbLA&quot;&gt;file:aybc_syEOr37oxeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23875" author="importer" created="Tue, 24 Aug 2010 08:58:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#317, #344)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-343] duck type RT.err usage</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-343</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Some tools rebind err to PrintWriters, others (e.g. swank) to merely Writers. Work with all of them.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13740">CLJ-343</key>
            <summary>duck type RT.err usage</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 7 May 2010 00:43:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:56:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:56:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23870" author="importer" created="Tue, 24 Aug 2010 08:56:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/343&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/343&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0343-duck-type-rt-err.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cGfwMswAOr34greJe5cbLA/download/cGfwMswAOr34greJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cGfwMswAOr34greJe5cbLA/download/cGfwMswAOr34greJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23871" author="importer" created="Tue, 24 Aug 2010 08:56:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cGfwMswAOr34greJe5cbLA&quot;&gt;file:cGfwMswAOr34greJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23872" author="importer" created="Tue, 24 Aug 2010 08:56:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#337, #338, #343)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-341] Vec test bugs.</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-341</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;There are a couple of bugs in the tests defined in clojure.test-clojure.vectors:&lt;/p&gt;

&lt;p&gt;1. There are two definitions of test-vec (from different patches), so the second overrides the first.&lt;/p&gt;

&lt;p&gt;2. The rand-replace function for the compare tests should use (rand-int 99) instead of (rand-int 100).  Currently, if 99 is chosen, it will append to the end of the sequence instead of replacing the last element.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13738">CLJ-341</key>
            <summary>Vec test bugs.</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dsg">Daniel Solano G&#243;mez</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 6 May 2010 00:10:00 -0500</created>
                <updated>Tue, 24 Aug 2010 11:54:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 11:54:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23861" author="importer" created="Tue, 24 Aug 2010 11:54:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/341&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/341&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
341-vec-tests.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cXxBGuwl0r35ypeJe5cbLr/download/cXxBGuwl0r35ypeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cXxBGuwl0r35ypeJe5cbLr/download/cXxBGuwl0r35ypeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23862" author="importer" created="Tue, 24 Aug 2010 11:54:00 -0500"  >&lt;p&gt;dsg said: [&lt;a href=&quot;file:cXxBGuwl0r35ypeJe5cbLr&quot;&gt;file:cXxBGuwl0r35ypeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23863" author="importer" created="Tue, 24 Aug 2010 11:54:00 -0500"  >&lt;p&gt;dsg said: Attached patch that should fix both issues.&lt;/p&gt;</comment>
                    <comment id="23864" author="importer" created="Tue, 24 Aug 2010 11:54:00 -0500"  >&lt;p&gt;importer said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:3f8be323e5b1c8ca3b51e946930174b90284ace7&amp;#93;&lt;/span&gt;]) Rename two vec-test to be distinct and fix upper bound on random sequence modifier, see #341&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="23865" author="importer" created="Tue, 24 Aug 2010 11:54:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#310, #318, #341)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-340] reify doc string examples are missing the &apos;this&apos; argument</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-340</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The reify doc string correctly discusses the need for a &quot;this&quot; argument, but fails to put it in the example usage it gives.&lt;/p&gt;

&lt;p&gt;IIUC, the defprotocol examples are also missing the &quot;this&quot; argument.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13737">CLJ-340</key>
            <summary>reify doc string examples are missing the &apos;this&apos; argument</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 5 May 2010 10:41:00 -0500</created>
                <updated>Tue, 24 Aug 2010 09:53:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 09:53:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23857" author="importer" created="Tue, 24 Aug 2010 09:53:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/340&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/340&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
this-arg-patch1.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dCGsi2wgar37ITeJe5cbLA/download/dCGsi2wgar37ITeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dCGsi2wgar37ITeJe5cbLA/download/dCGsi2wgar37ITeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23858" author="importer" created="Tue, 24 Aug 2010 09:53:00 -0500"  >&lt;p&gt;fogus said: [&lt;a href=&quot;file:dCGsi2wgar37ITeJe5cbLA&quot;&gt;file:dCGsi2wgar37ITeJe5cbLA&lt;/a&gt;]: Adds the this arg and some verbiage to the reify and defprotocol docstrings.&lt;/p&gt;</comment>
                    <comment id="23859" author="importer" created="Tue, 24 Aug 2010 09:53:00 -0500"  >&lt;p&gt;fogus said: Fixed the docstrings for reify and defprotocol to include the &apos;this&apos; parameter.  Also added some verbiage to the doc text to mention them.  Also added results for the defprotocol examples.&lt;/p&gt;</comment>
                    <comment id="23860" author="importer" created="Tue, 24 Aug 2010 09:53:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#340, #399, #402, #403, #413)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-338] promote c.c.set subset? and superset? to c.set</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-338</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13735">CLJ-338</key>
            <summary>promote c.c.set subset? and superset? to c.set</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 5 May 2010 06:17:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:23:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:23:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23851" author="importer" created="Tue, 24 Aug 2010 10:23:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/338&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/338&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0338-promote-subset-superset.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aq4HQswdyr37VreJe5cbCb/download/aq4HQswdyr37VreJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aq4HQswdyr37VreJe5cbCb/download/aq4HQswdyr37VreJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23852" author="importer" created="Tue, 24 Aug 2010 10:23:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aq4HQswdyr37VreJe5cbCb&quot;&gt;file:aq4HQswdyr37VreJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23853" author="importer" created="Tue, 24 Aug 2010 10:23:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#337, #338, #343)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-337] mark deprecations</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-337</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Last chance to care: Should the values for the deprecated tag be:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&apos;true&apos; only?&lt;/li&gt;
	&lt;li&gt;a version number, just like the values of :added (Tom&apos;s original proposal)?&lt;/li&gt;
	&lt;li&gt;free text, allowing for suggestions and commentary&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt; I (Stu) am ok with either of the first two.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13734">CLJ-337</key>
            <summary>mark deprecations</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 4 May 2010 14:29:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:52:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:52:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23845" author="importer" created="Tue, 24 Aug 2010 10:52:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/337&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/337&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0337-mark-deprecations.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dwbEi8wcSr37WCeJe5cbLA/download/dwbEi8wcSr37WCeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dwbEi8wcSr37WCeJe5cbLA/download/dwbEi8wcSr37WCeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23846" author="importer" created="Tue, 24 Aug 2010 10:52:00 -0500"  >&lt;p&gt;tomfaulhaber said: I think it should be the version number.&lt;/p&gt;

&lt;p&gt;I did occur to me that we could add another field with human readable information :deprecation-info or something like that. That way, we have the raw version and if someone wants to put more, they can.&lt;/p&gt;

&lt;p&gt;I&apos;m not sure that field would need to go into clojure core right now, but could be something to add later. KISS!&lt;/p&gt;</comment>
                    <comment id="23847" author="importer" created="Tue, 24 Aug 2010 10:52:00 -0500"  >&lt;p&gt;richhickey said: Version number. Doc can be updated with alternatives&lt;/p&gt;</comment>
                    <comment id="23848" author="importer" created="Tue, 24 Aug 2010 10:52:00 -0500"  >&lt;p&gt;stu said: I scanned core to see if there was anything else I would want to deprecate... Basically no--could deprecate memfn if anybody cared enough.&lt;/p&gt;</comment>
                    <comment id="23849" author="importer" created="Tue, 24 Aug 2010 10:52:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dwbEi8wcSr37WCeJe5cbLA&quot;&gt;file:dwbEi8wcSr37WCeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23850" author="importer" created="Tue, 24 Aug 2010 10:52:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#337, #338, #343)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-335] integrate pprint docs into clojure.org (?)</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-335</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13732">CLJ-335</key>
            <summary>integrate pprint docs into clojure.org (?)</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="tomfaulhaber">Tom Faulhaber</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 4 May 2010 00:19:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:52:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:52:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23839" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/335&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/335&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
move-pprint-doc.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aCegXezw4r37-XeJe5cbCb/download/aCegXezw4r37-XeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aCegXezw4r37-XeJe5cbCb/download/aCegXezw4r37-XeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23840" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;tomfaulhaber said: This will happen automatically when I fix autodoc.&lt;/p&gt;

&lt;p&gt;Creating the multi-branch version of autodoc meant that some things (like conversion of markdown files, etc.) which were written in ant stopped working (because the whole model that the ant stuff used was incompatible with thinking about multiple branches).&lt;/p&gt;

&lt;p&gt;I am in the process of integrating all the stuff that was in ant into the CLojure code. This will make life better in all sorts of ways.&lt;/p&gt;

&lt;p&gt;Once that&apos;s done, the pprint docs will be linked directly from the pprint API page. &lt;/p&gt;

&lt;p&gt;Hopefully in a few days.&lt;/p&gt;</comment>
                    <comment id="23841" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;tomfaulhaber said: I haven&apos;t gotten here yet, but this shouldn&apos;t hold back the release process since all the changes here will be in autodoc and not in Clojure itself.&lt;/p&gt;</comment>
                    <comment id="23842" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;tomfaulhaber said: [&lt;a href=&quot;file:aCegXezw4r37-XeJe5cbCb&quot;&gt;file:aCegXezw4r37-XeJe5cbCb&lt;/a&gt;]: Move the pprint doc files down a directory level&lt;/p&gt;</comment>
                    <comment id="23843" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;tomfaulhaber said: I realized that, because the autodoc generation is constructed a little bit differently for clojure than it is for clojure.contrib, we need to add an extra directory level under doc/.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-334] double-colon with nonexistent alias throws NPE</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-334</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;double-colon with nonexistent alias throws NPE&lt;/p&gt;

&lt;p&gt;Clojure 1.1.0&lt;br/&gt;
user=&amp;gt; ::a/dig&lt;br/&gt;
java.lang.NullPointerException&lt;/p&gt;</description>
                <environment></environment>
            <key id="13731">CLJ-334</key>
            <summary>double-colon with nonexistent alias throws NPE</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 4 May 2010 00:15:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:52:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:52:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23836" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/334&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/334&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0334-handle-bad-keyword-syntax.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/byL5qexd8r36eheJe5cbCb/download/byL5qexd8r36eheJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/byL5qexd8r36eheJe5cbCb/download/byL5qexd8r36eheJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23837" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#333, #334)&lt;/p&gt;</comment>
                    <comment id="23838" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:byL5qexd8r36eheJe5cbCb&quot;&gt;file:byL5qexd8r36eheJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-333] protocol redef NPE</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-333</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;outgrowth of Mike&apos;s tests in #239.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13730">CLJ-333</key>
            <summary>protocol redef NPE</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 4 May 2010 11:53:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:52:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:52:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23830" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/333&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/333&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0333-protocol-redef-npe.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aUPKaqzDar36GpeJe5cbLA/download/aUPKaqzDar36GpeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aUPKaqzDar36GpeJe5cbLA/download/aUPKaqzDar36GpeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23831" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#333, #334)&lt;/p&gt;</comment>
                    <comment id="23832" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aUPKaqzDar36GpeJe5cbLA&quot;&gt;file:aUPKaqzDar36GpeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23833" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;richhickey said: It&apos;s hard for me to tell if this is the right way to fix this bug when I have no idea what the bug is from this ticket&lt;/p&gt;</comment>
                    <comment id="23834" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;stu said: The (sortof) easy way to see the problem: Just run the new test without the compiler change in place.&lt;/p&gt;

&lt;p&gt;The test is somewhat obfuscated by all the calls to eval (so the problem happens at test time instead of compile time).  But extracting the evals you get &lt;/p&gt;

&lt;p&gt;(defprotocol Elusive (old-method &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt;))&lt;br/&gt;
(defprotocol Elusive (new-method &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt;)&lt;br/&gt;
(old-method (reify Elusive (new-method &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt;)))&lt;/p&gt;</comment>
                    <comment id="23835" author="importer" created="Tue, 24 Aug 2010 08:52:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#333, #349, #355, #356)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-332] last var in wins</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-332</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;not sure we should import source-fn and dir-fn into repl&lt;/p&gt;</description>
                <environment></environment>
            <key id="13729">CLJ-332</key>
            <summary>last var in wins</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Mon, 3 May 2010 00:50:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23826" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/332&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/332&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0332-refer-cant-bean-intern.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dwu7YMy7Or36MmeJe5cbLr/download/dwu7YMy7Or36MmeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dwu7YMy7Or36MmeJe5cbLr/download/dwu7YMy7Or36MmeJe5cbLr&lt;/a&gt;&lt;br/&gt;
0332-last-var-wins-for-core-only.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dSfMD6zoqr37LaeJe5cbLr/download/dSfMD6zoqr37LaeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dSfMD6zoqr37LaeJe5cbLr/download/dSfMD6zoqr37LaeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23827" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dwu7YMy7Or36MmeJe5cbLr&quot;&gt;file:dwu7YMy7Or36MmeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23828" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dSfMD6zoqr37LaeJe5cbLr&quot;&gt;file:dSfMD6zoqr37LaeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23829" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;stu said: &quot;last var wins for core only&quot; is the only patch that should be applied&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-331] Fix PersistentQueue equality methods</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-331</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;(= (into clojure.lang.PersistentQueue/EMPTY (range 5)) (into clojure.lang.PersistentQueue/EMPTY (range 5)))&lt;br/&gt;
=&amp;gt; NPE&lt;/p&gt;</description>
                <environment></environment>
            <key id="13728">CLJ-331</key>
            <summary>Fix PersistentQueue equality methods</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Mon, 3 May 2010 00:32:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23823" author="importer" created="Tue, 24 Aug 2010 10:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/331&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/331&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
fix-q-equality.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/b1_H5qvTer36QjeJe5cbCb/download/b1_H5qvTer36QjeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/b1_H5qvTer36QjeJe5cbCb/download/b1_H5qvTer36QjeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23824" author="importer" created="Tue, 24 Aug 2010 10:51:00 -0500"  >&lt;p&gt;stu said: Added to 1.2 due to its relationship to #281.&lt;/p&gt;</comment>
                    <comment id="23825" author="importer" created="Tue, 24 Aug 2010 10:51:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#281, #331)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-330] Declare wipes out existing var metadata</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-330</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;If you call declare on a var that has already been defined, it wipes out the metadata on that var. While this is possible to avoid in most cases, it makes like difficult for automatic code generators or scanners. In particular, autodoc loses information in some cases because of this if it scans a file that has already been pulled in because of a dependency.&lt;/p&gt;

&lt;p&gt;Here&apos;s an example. This code:&lt;/p&gt;


&lt;p&gt;    (defn hello &quot;I like documentation!&quot; [] (println &quot;works&quot;))&lt;br/&gt;
    (hello)&lt;br/&gt;
    (println (:doc (meta #&apos;hello)))&lt;/p&gt;

&lt;p&gt;    (println &quot;I do declare!&quot;)&lt;br/&gt;
    (declare hello)&lt;/p&gt;

&lt;p&gt;    (hello) &lt;br/&gt;
    (println (:doc (meta #&apos;hello)))&lt;/p&gt;

&lt;p&gt;Prints:&lt;/p&gt;

&lt;p&gt;works&lt;br/&gt;
I like documentation!&lt;br/&gt;
I do declare!&lt;br/&gt;
works&lt;br/&gt;
nil&lt;/p&gt;

&lt;p&gt;The last line should be &quot;I like documentation!&quot; again.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13727">CLJ-330</key>
            <summary>Declare wipes out existing var metadata</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Mon, 3 May 2010 09:32:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23814" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/330&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/330&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
declare-test.clj - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bZn8imvTer36QjeJe5cbCb/download/bZn8imvTer36QjeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bZn8imvTer36QjeJe5cbCb/download/bZn8imvTer36QjeJe5cbCb&lt;/a&gt;&lt;br/&gt;
declare-preserve-meta.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bwNFCIwMSr34TZeJe5cbCb/download/bwNFCIwMSr34TZeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bwNFCIwMSr34TZeJe5cbCb/download/bwNFCIwMSr34TZeJe5cbCb&lt;/a&gt;&lt;br/&gt;
0330-def-sans-init-touches-no-meta.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dRHbioAFCr34lYeJe5cbLA/download/dRHbioAFCr34lYeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dRHbioAFCr34lYeJe5cbLA/download/dRHbioAFCr34lYeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23815" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;tomfaulhaber said: [&lt;a href=&quot;file:bwNFCIwMSr34TZeJe5cbCb&quot;&gt;file:bwNFCIwMSr34TZeJe5cbCb&lt;/a&gt;]: Patch to preserve metadata in declare&lt;/p&gt;</comment>
                    <comment id="23816" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;richhickey said: I&apos;m not sure about this one. Are you evaluating code in autodoc? Otherwise, I don&apos;t see the issue for scanners/parsers&lt;/p&gt;</comment>
                    <comment id="23817" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;tomfaulhaber said: Yeah, my immediate case is autodoc, which loads files without knowing the user desired load order (important for things like contrib or nowadays clojure itself where there is no &quot;root&quot; that would pull everything in).&lt;/p&gt;

&lt;p&gt;But the other case I was thinking of was something more like yacc where code is being generated in little snippets. Rather than building all the dependency relationships between the snippets, a program may want to just add declares to the snippet for the &quot;external&quot; vars that it references. Then the individual generated snippets can be emitted independently without concern for order.&lt;/p&gt;

&lt;p&gt;At a higher level, why would declare preserve the value of a var but squash the metadata? Seems like it should be all or nothing.&lt;/p&gt;</comment>
                    <comment id="23818" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;richhickey said: &amp;gt;At a higher level, why would declare preserve the value of a var but squash the metadata? Seems like it should be all or nothing.&lt;/p&gt;

&lt;p&gt;Quite possibly, but then I think it might become declare == unbind-root, which doesn&apos;t help you either, does it?&lt;/p&gt;</comment>
                    <comment id="23819" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;tomfaulhaber said: Two issues with that, one short-term for autodoc and one more abstract:&lt;/p&gt;

&lt;p&gt;1) With the current implementation of defmulti (even with my other patch in ticket #309), you wouldn&apos;t be able to correctly reload a file that had (declare foo) ... (defmulti foo ...). This is already causing autodoc to mis-document on of the contrib namespaces. (Because it gets loaded twice, once with a use and once with a load).&lt;/p&gt;

&lt;p&gt;2) It means that any generation tool that wants to generate &quot;order independent&quot; snippets would be required to do all its own book-keeping in order to determine whether to emit a declare or not. &lt;/p&gt;

&lt;p&gt;To me it feels like the more correct semantics would be to have declare be a no-op wrt binding. If we need something for explicitly unbinding, (def var) would be a more obvious candidate. (Right now, I think they are equivalent.)&lt;/p&gt;</comment>
                    <comment id="23820" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dRHbioAFCr34lYeJe5cbLA&quot;&gt;file:dRHbioAFCr34lYeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23821" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;stu said: Third patch takes a different approach, working at level of def instead of declare. Def forms without an init-expr set no metadata.&lt;/p&gt;

&lt;p&gt;Questions:&lt;/p&gt;

&lt;p&gt;(1) Tom, does this solve the problems you are seeing?&lt;/p&gt;

&lt;p&gt;(2) Rich, can DefExpr&apos;s .meta be typed as MapExpr, instead of Expr?&lt;/p&gt;

&lt;p&gt;(3) A further wrinkle would be to def-sans-init set metadata if no metadata is present yet. Too cute?&lt;/p&gt;</comment>
                    <comment id="23822" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#330, #357, #358, #365)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-329] Fix defrecord keyword lookup on fields matching no-arg methods</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-329</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Current behaviour:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (defrecord Foo [size seq])
user.Foo
user=&amp;gt; (:size (Foo. 42 :b))
2
user=&amp;gt; (:seq (Foo. 42 :b))
([:size 42]
 [:seq :b])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Patch attached, with a test.  Thoughts:&lt;/p&gt;

&lt;p&gt;1. filtering on base-fields would probably be cleaner, but it looks like (class ~&apos;gtarget) isn&apos;t fully formed at that point?&lt;br/&gt;
2. this results in a .valAt lookup for any fields that collide with no-arg methods implemented by the defrecord&apos;s class.  That&apos;s unavoidable AFAICT.&lt;br/&gt;
3. The best solution would be to disambiguate field access vs. no-arg method invocation, i.e. have a variant of (. obj field) that would be specifically for field access (which is very occasionally needed elsewhere as well).  This would nullify # 2.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13726">CLJ-329</key>
            <summary>Fix defrecord keyword lookup on fields matching no-arg methods</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 30 Apr 2010 15:32:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:50:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:50:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23812" author="importer" created="Tue, 24 Aug 2010 10:50:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/329&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/329&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
no-arg-defrecord-fields.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aLddOwvi8r35mPeJe5cbLr/download/aLddOwvi8r35mPeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aLddOwvi8r35mPeJe5cbLr/download/aLddOwvi8r35mPeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23813" author="importer" created="Tue, 24 Aug 2010 10:50:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:762d1531b6440722d5d1c0dfee4776d99289385e&amp;#93;&lt;/span&gt;]) Fix defrecord keyword lookup on fields matching no-arg methods, fixes #329&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-328] don&apos;t assume chunked seq will alway stay chunked</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-328</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;optimized reduce always needs to check if underlying type can change as it walks the seq&lt;/p&gt;</description>
                <environment></environment>
            <key id="13725">CLJ-328</key>
            <summary>don&apos;t assume chunked seq will alway stay chunked</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 30 Apr 2010 11:15:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:49:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:49:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23810" author="importer" created="Tue, 24 Aug 2010 10:49:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/328&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/328&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
unchunked-reduce-fix.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c-E6fQvgSr34E_eJe5cbLr/download/c-E6fQvgSr34E_eJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c-E6fQvgSr34E_eJe5cbLr/download/c-E6fQvgSr34E_eJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23811" author="importer" created="Tue, 24 Aug 2010 10:49:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:c-E6fQvgSr34E_eJe5cbLr&quot;&gt;file:c-E6fQvgSr34E_eJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-327] core fns cannot use literal Patterns</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-327</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Discussed here: &lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/6c6c5d8ced3c6bea&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/6c6c5d8ced3c6bea&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before pr-on is ready to use, code using pattern literals fails on initialization because they weren&apos;t printed correctly by RT/print at compile-time.&lt;br/&gt;
This actually give such messages:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;#&quot;\.&quot; is a Character and cannot be cast to Pattern&lt;/li&gt;
	&lt;li&gt;#&quot;&lt;span class=&quot;error&quot;&gt;&amp;#91;.&amp;#93;&lt;/span&gt;&quot; is a PersistentVector and cannot be cast to Pattern&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The current patch is simpler than print-method for Pattern because it only tries to print readably Patterns created by RegexReader and not any user-created Pattern.&lt;/p&gt;

&lt;p&gt;For the record print-method for Pattern is buggy in trying to support \Q and \E:&lt;br/&gt;
Here is a pathological case: &lt;br/&gt;
user=&amp;gt; (re-pattern &quot;\\Q\\\\E\&quot;&quot;)&lt;br/&gt;
#&quot;\Q\\E\E\&quot;\Q&quot; ; should be #&quot;\Q\E\\\Q\E\&quot;&quot;&lt;br/&gt;
There&apos;s an obvious quick fix for that but I doubt one can achieve proper printing of all Patterns&lt;/p&gt;</description>
                <environment></environment>
            <key id="13724">CLJ-327</key>
            <summary>core fns cannot use literal Patterns</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="cgrand">Christophe Grand</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 30 Apr 2010 09:18:00 -0500</created>
                <updated>Tue, 24 Aug 2010 11:49:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 11:49:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23806" author="importer" created="Tue, 24 Aug 2010 11:49:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/327&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/327&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
rt-print-pattern.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bTsLh2vfir37ljeJe5cbLr/download/bTsLh2vfir37ljeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bTsLh2vfir37ljeJe5cbLr/download/bTsLh2vfir37ljeJe5cbLr&lt;/a&gt;&lt;br/&gt;
0327-rt-print-pattern-with-test.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/anOsXqBYur363eeJe5cbLA/download/anOsXqBYur363eeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/anOsXqBYur363eeJe5cbLA/download/anOsXqBYur363eeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23807" author="importer" created="Tue, 24 Aug 2010 11:49:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:anOsXqBYur363eeJe5cbLA&quot;&gt;file:anOsXqBYur363eeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23808" author="importer" created="Tue, 24 Aug 2010 11:49:00 -0500"  >&lt;p&gt;stu said: second patch subsumes first and adds test&lt;/p&gt;</comment>
                    <comment id="23809" author="importer" created="Tue, 24 Aug 2010 11:49:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#327, #359, #360, #361, #362)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-325] mark :added for 1.0 vars</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-325</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Followup to #321 but for all the original 1.0 vars.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13722">CLJ-325</key>
            <summary>mark :added for 1.0 vars</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 29 Apr 2010 15:46:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:49:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:49:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23798" author="importer" created="Tue, 24 Aug 2010 07:49:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/325&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/325&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
added-10-and-test-all-public-doced-fns-are-added.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dupIcIu-er35HyeJe5cbLr/download/dupIcIu-er35HyeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dupIcIu-er35HyeJe5cbLr/download/dupIcIu-er35HyeJe5cbLr&lt;/a&gt;&lt;br/&gt;
added-10-and-test-all-public-doced-fns-are-added.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dxEu-au-er35HyeJe5cbLr/download/dxEu-au-er35HyeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dxEu-au-er35HyeJe5cbLr/download/dxEu-au-er35HyeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23799" author="importer" created="Tue, 24 Aug 2010 07:49:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dupIcIu-er35HyeJe5cbLr&quot;&gt;file:dupIcIu-er35HyeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23800" author="importer" created="Tue, 24 Aug 2010 07:49:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dxEu-au-er35HyeJe5cbLr&quot;&gt;file:dxEu-au-er35HyeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23801" author="importer" created="Tue, 24 Aug 2010 07:49:00 -0500"  >&lt;p&gt;tomfaulhaber said: Also, we should put :deprecated tags on the functions that are deprecated.&lt;/p&gt;</comment>
                    <comment id="23802" author="importer" created="Tue, 24 Aug 2010 07:49:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#301, #325)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-324] 1.2 release notes</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-324</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The 1.1 release notes were very nice. We need someone to do the same for 1.2. Basically this means&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;walking through the git commit messages (and maybe some diffs)&lt;/li&gt;
	&lt;li&gt;walking through the assembla tickets&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;and producing a text file similar to the 1.1 change file.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13721">CLJ-324</key>
            <summary>1.2 release notes</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="devlinsf">Sean Devlin</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 29 Apr 2010 00:37:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:49:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:49:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23796" author="importer" created="Tue, 24 Aug 2010 07:49:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/324&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/324&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23797" author="importer" created="Tue, 24 Aug 2010 07:49:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#324)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-323] get annotation tests working regardless of jdk 5/later</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-323</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13720">CLJ-323</key>
            <summary>get annotation tests working regardless of jdk 5/later</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 29 Apr 2010 10:08:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:48:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:48:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23794" author="importer" created="Tue, 24 Aug 2010 07:48:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/323&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/323&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
annotations-tests-working-on-5-and-later.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dVf1JSu7er36UBeJe5cbLA/download/dVf1JSu7er36UBeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dVf1JSu7er36UBeJe5cbLA/download/dVf1JSu7er36UBeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23795" author="importer" created="Tue, 24 Aug 2010 07:48:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dVf1JSu7er36UBeJe5cbLA&quot;&gt;file:dVf1JSu7er36UBeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-321] mark when vars got added to clojure</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-321</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Third patch is the one. Adds metadata after docstring, public doc-ed vars only.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13718">CLJ-321</key>
            <summary>mark when vars got added to clojure</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 28 Apr 2010 17:46:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:17:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:17:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23767" author="importer" created="Tue, 24 Aug 2010 10:17:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/321&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/321&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
added-metadata.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/adfZhGuYCr342jeJe5cbCb/download/adfZhGuYCr342jeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/adfZhGuYCr342jeJe5cbCb/download/adfZhGuYCr342jeJe5cbCb&lt;/a&gt;&lt;br/&gt;
meta-added-after-docstring.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bKqdmMu5yr37KAeJe5cbLA/download/bKqdmMu5yr37KAeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bKqdmMu5yr37KAeJe5cbLA/download/bKqdmMu5yr37KAeJe5cbLA&lt;/a&gt;&lt;br/&gt;
added-metadata-for-public-doced-vars.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d-5xbmu50r363qeJe5cbLA/download/d-5xbmu50r363qeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d-5xbmu50r363qeJe5cbLA/download/d-5xbmu50r363qeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23768" author="importer" created="Tue, 24 Aug 2010 10:17:00 -0500"  >&lt;p&gt;stu said: # added from 1.0 to 1.1&lt;br/&gt;
clojure.core/&lt;b&gt;assert&lt;/b&gt;&lt;br/&gt;
clojure.core/-&amp;gt;&amp;gt;&lt;br/&gt;
clojure.core/assoc!&lt;br/&gt;
clojure.core/boolean-array&lt;br/&gt;
clojure.core/booleans&lt;br/&gt;
clojure.core/bound-fn&lt;br/&gt;
clojure.core/bound-fn*&lt;br/&gt;
clojure.core/byte-array&lt;br/&gt;
clojure.core/bytes&lt;br/&gt;
clojure.core/char-array&lt;br/&gt;
clojure.core/char?&lt;br/&gt;
clojure.core/chars&lt;br/&gt;
clojure.core/chunk&lt;br/&gt;
clojure.core/chunk-append&lt;br/&gt;
clojure.core/chunk-buffer&lt;br/&gt;
clojure.core/chunk-cons&lt;br/&gt;
clojure.core/chunk-first&lt;br/&gt;
clojure.core/chunk-next&lt;br/&gt;
clojure.core/chunk-rest&lt;br/&gt;
clojure.core/chunked-seq?&lt;br/&gt;
clojure.core/conj!&lt;br/&gt;
clojure.core/deliver&lt;br/&gt;
clojure.core/disj!&lt;br/&gt;
clojure.core/dissoc!&lt;br/&gt;
clojure.core/future-cancel&lt;br/&gt;
clojure.core/future-cancelled?&lt;br/&gt;
clojure.core/future-done?&lt;br/&gt;
clojure.core/future?&lt;br/&gt;
clojure.core/get-thread-bindings&lt;br/&gt;
clojure.core/juxt&lt;br/&gt;
clojure.core/persistent!&lt;br/&gt;
clojure.core/pop!&lt;br/&gt;
clojure.core/pop-thread-bindings&lt;br/&gt;
clojure.core/promise&lt;br/&gt;
clojure.core/push-thread-bindings&lt;br/&gt;
clojure.core/ref-history-count&lt;br/&gt;
clojure.core/ref-max-history&lt;br/&gt;
clojure.core/ref-min-history&lt;br/&gt;
clojure.core/short-array&lt;br/&gt;
clojure.core/shorts&lt;br/&gt;
clojure.core/sorted-set-by&lt;br/&gt;
clojure.core/take-last&lt;br/&gt;
clojure.core/transient&lt;br/&gt;
clojure.core/with-bindings&lt;br/&gt;
clojure.core/with-bindings*&lt;br/&gt;
clojure.core/with-loading-context&lt;br/&gt;
clojure.stacktrace/e&lt;br/&gt;
clojure.stacktrace/print-cause-trace&lt;br/&gt;
clojure.stacktrace/print-stack-trace&lt;br/&gt;
clojure.stacktrace/print-throwable&lt;br/&gt;
clojure.stacktrace/print-trace-element&lt;br/&gt;
clojure.stacktrace/root-cause&lt;br/&gt;
clojure.test/&lt;b&gt;initial-report-counters&lt;/b&gt;&lt;br/&gt;
clojure.test/&lt;b&gt;load-tests&lt;/b&gt;&lt;br/&gt;
clojure.test/&lt;b&gt;report-counters&lt;/b&gt;&lt;br/&gt;
clojure.test/&lt;b&gt;stack-trace-depth&lt;/b&gt;&lt;br/&gt;
clojure.test/&lt;b&gt;test-out&lt;/b&gt;&lt;br/&gt;
clojure.test/&lt;b&gt;testing-contexts&lt;/b&gt;&lt;br/&gt;
clojure.test/&lt;b&gt;testing-vars&lt;/b&gt;&lt;br/&gt;
clojure.test/are&lt;br/&gt;
clojure.test/assert-any&lt;br/&gt;
clojure.test/assert-expr&lt;br/&gt;
clojure.test/assert-predicate&lt;br/&gt;
clojure.test/compose-fixtures&lt;br/&gt;
clojure.test/deftest&lt;br/&gt;
clojure.test/deftest-&lt;br/&gt;
clojure.test/file-position&lt;br/&gt;
clojure.test/function?&lt;br/&gt;
clojure.test/get-possibly-unbound-var&lt;br/&gt;
clojure.test/inc-report-counter&lt;br/&gt;
clojure.test/is&lt;br/&gt;
clojure.test/join-fixtures&lt;br/&gt;
clojure.test/report&lt;br/&gt;
clojure.test/run-all-tests&lt;br/&gt;
clojure.test/run-tests&lt;br/&gt;
clojure.test/set-test&lt;br/&gt;
clojure.test/successful?&lt;br/&gt;
clojure.test/test-all-vars&lt;br/&gt;
clojure.test/test-ns&lt;br/&gt;
clojure.test/test-var&lt;br/&gt;
clojure.test/testing&lt;br/&gt;
clojure.test/testing-contexts-str&lt;br/&gt;
clojure.test/testing-vars-str&lt;br/&gt;
clojure.test/try-expr&lt;br/&gt;
clojure.test/use-fixtures&lt;br/&gt;
clojure.test/with-test&lt;br/&gt;
clojure.test/with-test-out&lt;br/&gt;
clojure.walk/keywordize-keys&lt;br/&gt;
clojure.walk/macroexpand-all&lt;br/&gt;
clojure.walk/postwalk&lt;br/&gt;
clojure.walk/postwalk-demo&lt;br/&gt;
clojure.walk/postwalk-replace&lt;br/&gt;
clojure.walk/prewalk&lt;br/&gt;
clojure.walk/prewalk-demo&lt;br/&gt;
clojure.walk/prewalk-replace&lt;br/&gt;
clojure.walk/stringify-keys&lt;br/&gt;
clojure.walk/walk&lt;/p&gt;</comment>
                    <comment id="23769" author="importer" created="Tue, 24 Aug 2010 10:17:00 -0500"  >&lt;p&gt;stu said: ; Added from 1.1 to 1.2&lt;br/&gt;
clojure.core/-cache-protocol-fn&lt;br/&gt;
clojure.core/-reset-methods&lt;br/&gt;
clojure.core/EMPTY-NODE&lt;br/&gt;
clojure.core/agent-error&lt;br/&gt;
clojure.core/bound?&lt;br/&gt;
clojure.core/case&lt;br/&gt;
clojure.core/definterface&lt;br/&gt;
clojure.core/defprotocol&lt;br/&gt;
clojure.core/defrecord&lt;br/&gt;
clojure.core/deftype&lt;br/&gt;
clojure.core/denominator&lt;br/&gt;
clojure.core/error-handler&lt;br/&gt;
clojure.core/error-mode&lt;br/&gt;
clojure.core/extend&lt;br/&gt;
clojure.core/extend-protocol&lt;br/&gt;
clojure.core/extend-type&lt;br/&gt;
clojure.core/extenders&lt;br/&gt;
clojure.core/extends?&lt;br/&gt;
clojure.core/find-protocol-impl&lt;br/&gt;
clojure.core/find-protocol-method&lt;br/&gt;
clojure.core/flatten&lt;br/&gt;
clojure.core/frequencies&lt;br/&gt;
clojure.core/group-by&lt;br/&gt;
clojure.core/hash-combine&lt;br/&gt;
clojure.core/munge&lt;br/&gt;
clojure.core/namespace-munge&lt;br/&gt;
clojure.core/numerator&lt;br/&gt;
clojure.core/object-array&lt;br/&gt;
clojure.core/partition-all&lt;br/&gt;
clojure.core/partition-by&lt;br/&gt;
clojure.core/rand-nth&lt;br/&gt;
clojure.core/reductions&lt;br/&gt;
clojure.core/reify&lt;br/&gt;
clojure.core/remove-all-methods&lt;br/&gt;
clojure.core/restart-agent&lt;br/&gt;
clojure.core/satisfies?&lt;br/&gt;
clojure.core/seq-contains?&lt;br/&gt;
clojure.core/set-error-handler!&lt;br/&gt;
clojure.core/set-error-mode!&lt;br/&gt;
clojure.core/shuffle&lt;br/&gt;
clojure.core/thread-bound?&lt;br/&gt;
clojure.core/vector-of&lt;/p&gt;</comment>
                    <comment id="23770" author="importer" created="Tue, 24 Aug 2010 10:17:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:adfZhGuYCr342jeJe5cbCb&quot;&gt;file:adfZhGuYCr342jeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23771" author="importer" created="Tue, 24 Aug 2010 10:17:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:bKqdmMu5yr37KAeJe5cbLA&quot;&gt;file:bKqdmMu5yr37KAeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23772" author="importer" created="Tue, 24 Aug 2010 10:17:00 -0500"  >&lt;p&gt;stu said: April 29 patch puts metadata after docstring, and replaces previous patches.&lt;/p&gt;</comment>
                    <comment id="23773" author="importer" created="Tue, 24 Aug 2010 10:17:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:d-5xbmu50r363qeJe5cbLA&quot;&gt;file:d-5xbmu50r363qeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23774" author="importer" created="Tue, 24 Aug 2010 10:17:00 -0500"  >&lt;p&gt;stu said: Third patch is the one. Adds metadata after docstring, public doc-ed vars only.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10004">Screened</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-318] add annotation support to gen-class</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-318</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Just call the same code used by definterface/type/record&lt;/p&gt;</description>
                <environment></environment>
            <key id="13715">CLJ-318</key>
            <summary>add annotation support to gen-class</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dsg">Daniel Solano G&#243;mez</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Mon, 26 Apr 2010 14:11:00 -0500</created>
                <updated>Tue, 24 Aug 2010 15:44:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:44:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23750" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/318&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/318&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
add-annotation-support-to-gen-class.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bK_ToyuHSr36E9eJe5cbLA/download/bK_ToyuHSr36E9eJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bK_ToyuHSr36E9eJe5cbLA/download/bK_ToyuHSr36E9eJe5cbLA&lt;/a&gt;&lt;br/&gt;
add-annotations-to-gen-class-v2.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/b1J4pcwjqr35cDeJe5cbCb/download/b1J4pcwjqr35cDeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/b1J4pcwjqr35cDeJe5cbCb/download/b1J4pcwjqr35cDeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23751" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;dsg said: Here is my implementation of annotations for gen-class.  At present, it only adds annotations to the class, declared (not inherited) methods, and parameters in declared methods.  The syntax mimics the syntax from deftype and is viewable in &lt;tt&gt;test/clojure/test_clojure/genclass/examples.clj&lt;/tt&gt;.&lt;/p&gt;</comment>
                    <comment id="23752" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;dsg said: [&lt;a href=&quot;file:bK_ToyuHSr36E9eJe5cbLA&quot;&gt;file:bK_ToyuHSr36E9eJe5cbLA&lt;/a&gt;]: Patch that adds annotation support to gen-class.&lt;/p&gt;</comment>
                    <comment id="23753" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;stu said: Hi Daniel,&lt;/p&gt;

&lt;p&gt;I found out the hard way that using a decent sample of annotation classes in the tests will break the official build (which has to run on Java 1.5). I finessed this issue by splitting the tests into separate Java 1.5 and Java 1.6 files, you can see this in clojure/test_clojure/annotations.clj&lt;/p&gt;

&lt;p&gt;This patch will need something similar. Do you have time to get to it in the next few days?&lt;/p&gt;

&lt;p&gt;Stu&lt;/p&gt;</comment>
                    <comment id="23754" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;dsg said: Hello, Stu,&lt;/p&gt;

&lt;p&gt;Yes, I noticed your other updates to the other bug, but haven&apos;t taken the time to look at it in detail, yet.  I will make some time to fix this in the next day or two.&lt;/p&gt;

&lt;p&gt;Sincerely,&lt;/p&gt;

&lt;p&gt;Daniel Solano G&#65533;&#65533;mez&lt;/p&gt;</comment>
                    <comment id="23755" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;dsg said: Unfortunately, since gen-class depends on AOT compilation, fixing the Java 5 issue is not as simple for gen-class as it is for deftype.  Most solutions will require changes to the build script.  Here are my proposed solutions:&lt;/p&gt;


&lt;p&gt;Option 1: Disable tests for Java 5&lt;/p&gt;

&lt;p&gt;Simply don&apos;t try to compile the test class and skip the annotation tests if the VM is version 5.  Given that Java 5 from Oracle has reached its end of life, this option has the appeal of simplicity.&lt;/p&gt;


&lt;p&gt;Option 2: The deftype approach&lt;/p&gt;

&lt;p&gt;Like deftype, create a simplified set of tests for Java 5.  The build script will have to conditionally compile either a Java 5 test class or a Java 6+ test class.&lt;/p&gt;


&lt;p&gt;Option 3: Custom annotations&lt;/p&gt;

&lt;p&gt;Write a custom set of annotations (probably in Java).  This way the tests will not be dependent on which JVM version is being used.  This would keep the test code itself simple, and could be reused by the deftype tests.&lt;/p&gt;


&lt;p&gt;Option 4: Restricted annotations&lt;/p&gt;

&lt;p&gt;Restrict the annotations used to those available in Java 5.  Unfortunately, there are not many, and I don&apos;t think that any of them allow features like nested annotations.  I could be mistaken, though.&lt;/p&gt;


&lt;p&gt;I appreciate any opinion on what is the preferred way to handle this problem.&lt;/p&gt;</comment>
                    <comment id="23756" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;stu said: The official build of Clojure is still Java 5, so let&apos;s do Option 4 for now. If we ever get burned by it, we&apos;ll create a ticket for options 3.&lt;/p&gt;</comment>
                    <comment id="23757" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;dsg said: OK, no problem.  I will try to see if it&apos;s possible to do some things like nesting with the Java 5 annotation set.  The annotations may not be semantically sound, but they may work nonetheless. Off-hand, it seems like many restrictions are enforced only at compile time.&lt;/p&gt;

&lt;p&gt;I will submit an updated patch later this afternoon.&lt;/p&gt;</comment>
                    <comment id="23758" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;dsg said: [&lt;a href=&quot;file:b1J4pcwjqr35cDeJe5cbCb&quot;&gt;file:b1J4pcwjqr35cDeJe5cbCb&lt;/a&gt;]: New patch, Java 5 compatible.&lt;/p&gt;</comment>
                    <comment id="23759" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;dsg said: Updated patch, tested with both Sun JDK 1.5.0.22 and 1.6.0.20 on Linux.&lt;/p&gt;</comment>
                    <comment id="23760" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;importer said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:8b1ea574a61b105b9cbe9ffa3b05785cec0b3bc0&amp;#93;&lt;/span&gt;]) Add annotations support to gen-class, plus tests. See #318.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="23761" author="importer" created="Tue, 24 Aug 2010 15:44:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#310, #318, #341)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-317] clojure.main/repl isn&apos;t quite defensive enough</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-317</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Because of an unguarded call to =, bad objects that get printed by the repl can cause the repl to crash if their equals method throws an exception.&lt;/p&gt;

&lt;p&gt;For example:&lt;br/&gt;
java -cp clojure.jar clojure.main&lt;br/&gt;
user&amp;gt; (proxy &lt;span class=&quot;error&quot;&gt;&amp;#91;Object&amp;#93;&lt;/span&gt; [] (equals &lt;span class=&quot;error&quot;&gt;&amp;#91;o&amp;#93;&lt;/span&gt; (.toString nil)))&lt;/p&gt;</description>
                <environment></environment>
            <key id="13714">CLJ-317</key>
            <summary>clojure.main/repl isn&apos;t quite defensive enough</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sun, 25 Apr 2010 10:29:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:43:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:43:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23743" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/317&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/317&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
repl-crash.path - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bfOCZAujar36RreJe5cbCb/download/bfOCZAujar36RreJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bfOCZAujar36RreJe5cbCb/download/bfOCZAujar36RreJe5cbCb&lt;/a&gt;&lt;br/&gt;
test-for-317.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dQVhZevpOr37JqeJe5cbLr/download/dQVhZevpOr37JqeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dQVhZevpOr37JqeJe5cbLr/download/dQVhZevpOr37JqeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23744" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;remleduff said: [&lt;a href=&quot;file:bfOCZAujar36RreJe5cbCb&quot;&gt;file:bfOCZAujar36RreJe5cbCb&lt;/a&gt;]: Candidate fix (it might be nice to separate the try/catches in repl into a macro someday)&lt;/p&gt;</comment>
                    <comment id="23745" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dQVhZevpOr37JqeJe5cbLr&quot;&gt;file:dQVhZevpOr37JqeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23746" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;stu said: Committer should apply both patches (Apt 25 and May 01)&lt;/p&gt;</comment>
                    <comment id="23747" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;richhickey said: We can&apos;t take patches from watchers. We need a CA, and then Assembla membership with a real name.&lt;/p&gt;</comment>
                    <comment id="23748" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;richhickey said: I got Aaron&apos;s CA - thanks!&lt;/p&gt;</comment>
                    <comment id="23749" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#317, #344)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-316] tests for annotation support</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-316</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;the hard part is extracting data from the annotations. Some variant of annotation-&amp;gt;map might be of general use.&lt;/p&gt;

&lt;p&gt;One nitpick with the API: If you said something like {Deprecated false} weirdness would ensue. Maybe barf on false/nil?&lt;/p&gt;</description>
                <environment></environment>
            <key id="13713">CLJ-316</key>
            <summary>tests for annotation support</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 24 Apr 2010 13:32:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:43:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:43:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23739" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/316&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/316&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
tests-for-annotations.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c5PEf2t-ar3576eJe5cbCb/download/c5PEf2t-ar3576eJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c5PEf2t-ar3576eJe5cbCb/download/c5PEf2t-ar3576eJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23740" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:c5PEf2t-ar3576eJe5cbCb&quot;&gt;file:c5PEf2t-ar3576eJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23741" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;richhickey said: Are people really going to start consuming annotations from Clojure?&lt;/p&gt;

&lt;p&gt;As far as weirdness, what weirdness? Is it just that code testing for Deprecated will be looking for the presence of the attribute and not its value? Meh.&lt;/p&gt;

&lt;p&gt;FYI annotations can&apos;t extend others so the:&lt;/p&gt;

&lt;p&gt;(-&amp;gt; (into #{type} (supers type)) (disj java.lang.annotation.Annotation))&lt;/p&gt;

&lt;p&gt;is overkill&lt;/p&gt;</comment>
                    <comment id="23742" author="importer" created="Tue, 24 Aug 2010 07:43:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#316, #264)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-314] Vec contains AbstractMethodError</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-314</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (def vi (into (vector-of :&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;) [1 2 3]))
#&apos;user/vi
user=&amp;gt; (contains? vi 1)
java.lang.AbstractMethodError (NO_SOURCE_FILE:0)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Vec is does not implement the containsKey or entryAt methods of clojure.lang.Associative.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13711">CLJ-314</key>
            <summary>Vec contains AbstractMethodError</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dsg">Daniel Solano G&#243;mez</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Apr 2010 20:47:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:42:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:42:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23727" author="importer" created="Tue, 24 Aug 2010 07:42:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/314&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/314&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
complete-associative-support-to-vec.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bhz7jqukqr364ReJe5dVir/download/bhz7jqukqr364ReJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bhz7jqukqr364ReJe5dVir/download/bhz7jqukqr364ReJe5dVir&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23728" author="importer" created="Tue, 24 Aug 2010 07:42:00 -0500"  >&lt;p&gt;dsg said: [&lt;a href=&quot;file:bhz7jqukqr364ReJe5dVir&quot;&gt;file:bhz7jqukqr364ReJe5dVir&lt;/a&gt;]: Implements .containsKey and .entryAt methods for Vec, plus tests.&lt;/p&gt;</comment>
                    <comment id="23729" author="importer" created="Tue, 24 Aug 2010 07:42:00 -0500"  >&lt;p&gt;dsg said: I added support and tests for both entryAt and containsKey, although I do not think entryAt is ever called.&lt;/p&gt;

&lt;p&gt;This test code in this patch may conflict with #266.  Once #266 is committed, I will check for this and resubmit if necessary.&lt;/p&gt;</comment>
                    <comment id="23730" author="importer" created="Tue, 24 Aug 2010 07:42:00 -0500"  >&lt;p&gt;importer said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:dc9429f5cb6a0d881bc0e4ee1ae030543bb72655&amp;#93;&lt;/span&gt;]) Add containsKey and entryAt support to Vec, plus tests. Fixes #314.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-313] add java.util.Map support to defrecord</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-313</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13710">CLJ-313</key>
            <summary>add java.util.Map support to defrecord</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Apr 2010 16:49:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:42:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:42:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23724" author="importer" created="Tue, 24 Aug 2010 10:42:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/313&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/313&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
add-java-util-map-to-defrecord.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/axbdLstXOr34oReJe5dVir/download/axbdLstXOr34oReJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/axbdLstXOr34oReJe5dVir/download/axbdLstXOr34oReJe5dVir&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23725" author="importer" created="Tue, 24 Aug 2010 10:42:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:axbdLstXOr34oReJe5dVir&quot;&gt;file:axbdLstXOr34oReJe5dVir&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23726" author="importer" created="Tue, 24 Aug 2010 10:42:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#231, #313, #303, #306)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-312] audit &amp; promote some clojure.contrib.seq fns</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-312</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Proposed for promotion to clojure.core:&lt;/p&gt;

&lt;p&gt;flatten, separate, indexed, group-by, partition-by, frequencies, reductions, positions&lt;/p&gt;</description>
                <environment></environment>
            <key id="13709">CLJ-312</key>
            <summary>audit &amp; promote some clojure.contrib.seq fns</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 22 Apr 2010 14:41:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:41:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:41:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23719" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/312&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/312&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Reconsider-reductions-implementation.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cy83XYuH8r36U-eJe5cbCb/download/cy83XYuH8r36U-eJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cy83XYuH8r36U-eJe5cbCb/download/cy83XYuH8r36U-eJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23720" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;jawolfe said: Sorry if this is the wrong place to leave this comment, but I wanted to make a quick note about group-by.  I use it all the time, but in almost all cases I don&apos;t care that the map I get back is sorted by key.  On the other hand, I have several times run into the case where group-by fails at runtime since the keys I want to group by are not comparable to each-other.  So, I would humbly ask that you consider also adding a function that does the same thing with a regular old hash-map rather than sorted map, or adding an optional parameter to group-by that takes an empty map of the desired type, or some such.  Thanks...&lt;/p&gt;</comment>
                    <comment id="23721" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;importer said: Similar to jawolfe&apos;s comment, I also don&apos;t care that the returned map is sorted, and I needed more performance out of group-by. By making the returned map unsorted, I was able to write my own version using transients.&lt;/p&gt;</comment>
                    <comment id="23722" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;meikelbrandmeyer said: [&lt;a href=&quot;file:cy83XYuH8r36U-eJe5cbCb&quot;&gt;file:cy83XYuH8r36U-eJe5cbCb&lt;/a&gt;]: Rewritten version of reductions using lazy-seq&lt;/p&gt;</comment>
                    <comment id="23723" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;meikelbrandmeyer said: Added a patch for reductions. Uses now lazy-seq instead of rec-seq. See also here: &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/3e37df49ce5edf44/cbde2d3f8b5296cd&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/3e37df49ce5edf44/cbde2d3f8b5296cd&lt;/a&gt; and here: &lt;a href=&quot;http://groups.google.com/group/clojure-dev/msg/f0e2a1627a036bcd&quot;&gt;http://groups.google.com/group/clojure-dev/msg/f0e2a1627a036bcd&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-311] clojure.java.io namespace</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-311</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;audit and promote clojure.contrib.io to clojure.java.io.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;all fns must be tested&lt;/li&gt;
	&lt;li&gt;fns that require consumption before closing are not idiomatic and will not be brought in (e.g. read-lines)&lt;/li&gt;
	&lt;li&gt;minimal set of fns is spit, input-stream, output-stream, reader, writer. others are welcome too&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;changes from the contrib version:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;no dynamic vars magic (default-encoding, buffer-size, append all gone)&lt;/li&gt;
	&lt;li&gt;dynamic vars replaced by pervasive options arg (rest arg in public API)&lt;/li&gt;
	&lt;li&gt;protocol is named IOFactory (Streams mean something else)&lt;/li&gt;
	&lt;li&gt;protocol is &lt;b&gt;not&lt;/b&gt; the public interface&lt;/li&gt;
	&lt;li&gt;use specific Javaland exceptions as appropriate, e.g. IllegalArgumentException&lt;/li&gt;
	&lt;li&gt;will not promote functions that magically close after consuming (e.g. write-lines)&lt;/li&gt;
	&lt;li&gt;no earmuffs on byte-array-type et al (these should never be rebound)&lt;/li&gt;
	&lt;li&gt;combine as-file and as-url into Coercions protocol&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
            <key id="13708">CLJ-311</key>
            <summary>clojure.java.io namespace</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 22 Apr 2010 14:39:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:41:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:41:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23713" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/311&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/311&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0311-clojure-java-io.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aZnllMxryr36XyeJe5cbCb/download/aZnllMxryr36XyeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aZnllMxryr36XyeJe5cbCb/download/aZnllMxryr36XyeJe5cbCb&lt;/a&gt;&lt;br/&gt;
0311-clojure-java-io-2.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d0Ox-uxIOr373CeJe5cbLA/download/d0Ox-uxIOr373CeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d0Ox-uxIOr373CeJe5cbLA/download/d0Ox-uxIOr373CeJe5cbLA&lt;/a&gt;&lt;br/&gt;
0311-clojure-java-io-3.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c5tP80xWir34zYeJe5cbLA/download/c5tP80xWir34zYeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c5tP80xWir34zYeJe5cbLA/download/c5tP80xWir34zYeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23714" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aZnllMxryr36XyeJe5cbCb&quot;&gt;file:aZnllMxryr36XyeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23715" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:d0Ox-uxIOr373CeJe5cbLA&quot;&gt;file:d0Ox-uxIOr373CeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23716" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:c5tP80xWir34zYeJe5cbLA&quot;&gt;file:c5tP80xWir34zYeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23717" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: patch 3 subsumes the others&lt;/p&gt;</comment>
                    <comment id="23718" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#311, #347, #352)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-310] clojure.repl namespace</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-310</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;promote the following fns&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;clojure.contrib.repl-utils/source to clojure.repl/source&lt;/li&gt;
	&lt;li&gt;clojure.contrib.repl-utils/apropos to clojure.repl/apropos&lt;/li&gt;
	&lt;li&gt;clojure.contrib.ns-utils/dir to clojure.repl/dir&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;promote any necessary helper fns&lt;/li&gt;
	&lt;li&gt;make sure helper fns are private&lt;/li&gt;
	&lt;li&gt;promote and or write unit tests&lt;/li&gt;
	&lt;li&gt;make the clojure repl use these four fns&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
            <key id="13707">CLJ-310</key>
            <summary>clojure.repl namespace</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 22 Apr 2010 14:34:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:41:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:41:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23691" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/310&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/310&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
clojure-promote-repl.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c6elQ8u8ur34WNeJe5cbLA/download/c6elQ8u8ur34WNeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c6elQ8u8ur34WNeJe5cbLA/download/c6elQ8u8ur34WNeJe5cbLA&lt;/a&gt;&lt;br/&gt;
clojure-contrib-promote-repl.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c6qz7Ou8ur34WNeJe5cbLA/download/c6qz7Ou8ur34WNeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c6qz7Ou8ur34WNeJe5cbLA/download/c6qz7Ou8ur34WNeJe5cbLA&lt;/a&gt;&lt;br/&gt;
0310-promote-repl-clojure-with-tweaks.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cEvRP-wc8r36MfeJe5cbCb/download/cEvRP-wc8r36MfeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cEvRP-wc8r36MfeJe5cbCb/download/cEvRP-wc8r36MfeJe5cbCb&lt;/a&gt;&lt;br/&gt;
0310-clojure-repl-with-fn-naming.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d6k246wFSr35tLeJe5cbLr/download/d6k246wFSr35tLeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d6k246wFSr35tLeJe5cbLr/download/d6k246wFSr35tLeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23692" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;chouser@n01se.net said: Not interested in &quot;show&quot;, perhaps with a better name?  clojure.java/classinfo or something?&lt;/p&gt;

&lt;p&gt;For tickets like this do you actually want a patch against clojure, or is this more of a placeholder for eventual work by someone else?&lt;/p&gt;</comment>
                    <comment id="23693" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;scgilardi said: - &quot;show&quot; is the repl-util I use most often. I think it should be included.&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Abstractly I think these are more development tools than things particularly about a repl. Perhaps clojure.dev would be a better name than clojure.repl.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    <comment id="23694" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: updated description, hopefully now dev-able by anybody&lt;/p&gt;</comment>
                    <comment id="23695" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: pulling javadoc for now, due to the number of dependencies. May re-open it as a separate ticket.&lt;/p&gt;</comment>
                    <comment id="23696" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;tvachon said: [&lt;a href=&quot;file:c6elQ8u8ur34WNeJe5cbLA&quot;&gt;file:c6elQ8u8ur34WNeJe5cbLA&lt;/a&gt;]: Clojure core patch&lt;/p&gt;</comment>
                    <comment id="23697" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;tvachon said: [&lt;a href=&quot;file:c6qz7Ou8ur34WNeJe5cbLA&quot;&gt;file:c6qz7Ou8ur34WNeJe5cbLA&lt;/a&gt;]: Clojure contrib patch&lt;/p&gt;</comment>
                    <comment id="23698" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;tvachon said: A couple items I&apos;m not sure I got right:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;promoting macros necessitated promoting the functions they used directly, but this could be avoided with * functions, I believe&lt;/li&gt;
	&lt;li&gt;some public contrib functions are now repeated verbatim as private functions in clojure.repl. I left comments in clojure.contrib, which may not be appropriate.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Let me know - happy to update the patches.&lt;/p&gt;</comment>
                    <comment id="23699" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: Wow, print-dir sure sucks in a lot of stuff. I think we can avoid it. Can you update the clojure patch to:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;leave out throwable?, throwable, and throw-if, and get-ns&lt;/li&gt;
	&lt;li&gt;have print-dir call find-ns directly, do an if-let existence test, and throw an exception if the ns is not found&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Thanks!&lt;/p&gt;</comment>
                    <comment id="23700" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;tvachon said: Indeed! Patches are updated, and I think they&apos;re much nicer.&lt;/p&gt;

&lt;p&gt;I&apos;ve also restored print-dir in contrib and added dir* in clojure.repl, which has slightly different semantics (in particular, it expects a symbol input, not a Namespace). We don&apos;t use print-dir anywhere in clojure-contrib now, but in case anyone else does this should minimize issues.&lt;/p&gt;</comment>
                    <comment id="23701" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: Thanks Travis,&lt;/p&gt;

&lt;p&gt;Thanks to the new &quot;last var in wins&quot; feature in Clojure, there is no need to remove these fns from clojure-contrib. They can stay there, and not break people who already use them that way. So we will apply only Clojure-side patch.&lt;/p&gt;</comment>
                    <comment id="23702" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cEvRP-wc8r36MfeJe5cbCb&quot;&gt;file:cEvRP-wc8r36MfeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23703" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: My May 5 patch includes Travis&apos; original patch for the Clojure side, and adds a second commit that puts the (use &apos;clojure.repl) in the right place in main.clj, and removes the dependency on the now-defunct &quot;seq-contains?&quot;. The two patch approach preserves provenance but means that there is an intermediate commit where the build is broken.&lt;/p&gt;

&lt;p&gt;Should we move towards a common convention for relating the names of macros and their driver fns? This patch has dir/dir* but source/get-source.&lt;/p&gt;</comment>
                    <comment id="23704" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;richhickey said: Whatever the convention is, I&apos;m wary of blah*. In Clojure the * version is often a primitive thing. Something* is also a nice (as yet unused) variant for other meanings. Double leading underscore is pretty ugly and obviously internal to most people&lt;/p&gt;</comment>
                    <comment id="23705" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;richhickey said: blah-impl is fine too&lt;/p&gt;</comment>
                    <comment id="23706" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;tvachon said: I like the double leading underscore. Stuart - would you like me to update the original patch? I&apos;d be happy to incorporate your changes as well if you think that&apos;s appropriate.&lt;/p&gt;

&lt;p&gt;It&apos;s a minor matter, but I also noticed that I&apos;m using my weatherbill.com email address, which maybe isn&apos;t ideal, as this work wasn&apos;t done in that scope. That leads to a second question, probably best taken out of this but, about corporate CLAs, but I&apos;ll bring that up in a different forum.&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;</comment>
                    <comment id="23707" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;tvachon said: er - s/taken out of this but/taken out of this ticket/&lt;/p&gt;</comment>
                    <comment id="23708" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: In this case (and perhaps in many cases) the driver fns might actually need to be called, so I don&apos;t like the __.  blah-impl is fine, if you would like to make that change please do.&lt;/p&gt;</comment>
                    <comment id="23709" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;richhickey said: If we are intending to have people call the fns, like dir* and get-source, then what is here is not ok.&lt;/p&gt;

&lt;p&gt;If the macros are just macros for quoting purposes, I think we should establish a macro/macro-fn naming convention. Also, the dir* fn probably shouldn&apos;t print, i.e. the functions, if they are to have utility as functions, should be (real) functions, i.e. no side effects, return data structures, in which case the division of labor between dir and dir* (to be dir-fn) needs to change.&lt;/p&gt;</comment>
                    <comment id="23710" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:d6k246wFSr35tLeJe5cbLr&quot;&gt;file:d6k246wFSr35tLeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23711" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: may 7 patch subsumes the others and is ready for review&lt;/p&gt;</comment>
                    <comment id="23712" author="importer" created="Tue, 24 Aug 2010 07:41:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#310, #318, #341)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-309] Reloading a multimethod declaration strips off the metadata</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-309</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;With commit 1b8d50, running past a defmulti twice (e.g., reloading),&lt;br/&gt;
causes the metadata to get squashed:&lt;/p&gt;

&lt;p&gt;(defmulti add&lt;br/&gt;
 &quot;Add item to the accumulator acc. The exact meaning of adding an&lt;br/&gt;
  an item depends on the type of the accumulator.&quot;)&lt;/p&gt;

&lt;p&gt;(defmulti add&lt;br/&gt;
 &quot;Add item to the accumulator acc. The exact meaning of adding an&lt;br/&gt;
  an item depends on the type of the accumulator.&quot;)&lt;/p&gt;

&lt;p&gt;(doc add)&lt;/p&gt;

&lt;p&gt;yields =&amp;gt;&lt;/p&gt;

&lt;p&gt;-------------------------&lt;br/&gt;
user/add&lt;br/&gt;
nil&lt;br/&gt;
 nil&lt;/p&gt;

&lt;p&gt;To standard out. I assume that this is because of the def on line&lt;br/&gt;
1191:&lt;/p&gt;

&lt;p&gt;     `(let &lt;a href=&quot;#(def ~mm-name)&quot;&gt;v# (def ~mm-name)&lt;/a&gt;&lt;br/&gt;
        (when-not (and (.hasRoot v#) (instance? clojure.lang.MultiFn&lt;br/&gt;
(deref v#)))&lt;br/&gt;
          (def ~(with-meta mm-name m)&lt;br/&gt;
               (new clojure.lang.MultiFn ~(name mm-name) ~dispatch-fn&lt;br/&gt;
~default ~hierarchy)))))))&lt;/p&gt;


&lt;p&gt;This is mucking up the autodoc stuff.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13706">CLJ-309</key>
            <summary>Reloading a multimethod declaration strips off the metadata</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 22 Apr 2010 08:09:00 -0500</created>
                <updated>Tue, 24 Aug 2010 15:40:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:40:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23686" author="importer" created="Tue, 24 Aug 2010 15:40:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/309&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/309&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
defmulti-fix.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a24DeetD4r34ureJe5dVir/download/a24DeetD4r34ureJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a24DeetD4r34ureJe5dVir/download/a24DeetD4r34ureJe5dVir&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23687" author="importer" created="Tue, 24 Aug 2010 15:40:00 -0500"  >&lt;p&gt;tomfaulhaber said: [&lt;a href=&quot;file:a24DeetD4r34ureJe5dVir&quot;&gt;file:a24DeetD4r34ureJe5dVir&lt;/a&gt;]: A patch that addresses the specific problem&lt;/p&gt;</comment>
                    <comment id="23688" author="importer" created="Tue, 24 Aug 2010 15:40:00 -0500"  >&lt;p&gt;tomfaulhaber said: I&apos;ve made a patch for this exact issue, but I&apos;m not sure it&apos;s sufficient for the following reasons:&lt;/p&gt;

&lt;p&gt;1) With the new mechanism created in 1b8d50 it is impossible to change a multimethod definition once it&apos;s been set up, so you can&apos;t modifiy the dispatch function and reload for instance (without doing a &quot;def&quot; in between to reset it).&lt;/p&gt;

&lt;p&gt;2) If you use declare ahead of the defmulti it still strips off the metadata. Declare currently expands to (basically) def which has caused problems with metadata and reloading in other places as well. Declare should probably also be modified to preserve metadata as well.&lt;/p&gt;</comment>
                    <comment id="23689" author="importer" created="Tue, 24 Aug 2010 15:40:00 -0500"  >&lt;p&gt;tomfaulhaber said: Ticket #330 (and the associated patch) addresses concern #2 above (declare also stripping metadata).&lt;/p&gt;</comment>
                    <comment id="23690" author="importer" created="Tue, 24 Aug 2010 15:40:00 -0500"  >&lt;p&gt;tomfaulhaber said: I confirmed that the fix to ticket #330 fixed the problem shown in the test case here as well.&lt;/p&gt;

&lt;p&gt;I will mark this fixed, as that does fix the immediate problem.&lt;/p&gt;

&lt;p&gt;The inability to modify the dispatch function remains. Rich, go ahead and reopen the bug if that concerns you.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-307] consistent deprecation strategy</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-307</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I am filing this as a Clojure ticket even though the problem currently occurs mostly in Contrib. That&apos;s because I think there needs to be an official &quot;Clojure way&quot; &amp;#8211; this ticket is a request for documentation, not implementation.&lt;/p&gt;

&lt;p&gt;Absent official guidelines, function and namespace deprecation has been handled in an ad hoc fashion. Sometimes functions move from one namespace to another, leaving no trace. Other times, something is left in the old namespace: either an error or a warning redirecting to the new namespace.&lt;/p&gt;

&lt;p&gt;I would like to see a recommendation that leaves some kind of visible trace (for at least one point release) both in the source code tree and in the api docs. &lt;/p&gt;

&lt;p&gt;Fallback namespaces (&lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/9fde83ce4c06ed77&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/9fde83ce4c06ed77&lt;/a&gt;) are out of scope for this ticket, but might be a separate ticket that builds on whatever is decided here.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13704">CLJ-307</key>
            <summary>consistent deprecation strategy</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 21 Apr 2010 09:39:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:39:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:39:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23682" author="importer" created="Tue, 24 Aug 2010 10:39:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/307&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/307&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23683" author="importer" created="Tue, 24 Aug 2010 10:39:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#303, #306, #307)&lt;/p&gt;</comment>
                    <comment id="23684" author="importer" created="Tue, 24 Aug 2010 10:39:00 -0500"  >&lt;p&gt;stu said: We are sorting this out in contrib.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-306] definterface does not convert - to _</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-306</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Hit this issue while writing a test for #104. The test paths include &quot;test-clojure&quot;, and my generated interfaces are going to &quot;test-clojure&quot; while everything else goes to &quot;test_clojure&quot;.&lt;/p&gt;

&lt;p&gt;This conversion ought to be encapsulated in a fn instead of having str replacement all over the place.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13703">CLJ-306</key>
            <summary>definterface does not convert - to _</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 20 Apr 2010 19:25:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:38:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:38:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23676" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/306&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/306&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
package-munge-names-in-definterface.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a1-d_et5mr36teeJe5cbCb/download/a1-d_et5mr36teeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a1-d_et5mr36teeJe5cbCb/download/a1-d_et5mr36teeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23677" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#303, #306, #307)&lt;/p&gt;</comment>
                    <comment id="23678" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: I am marking this as screened, and it solves the immediate problem, but we could push it farther. E.g. should gen-class do a package-munge, instead of the :genclass option to the ns macro?&lt;/p&gt;</comment>
                    <comment id="23679" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;richhickey said: no patch&lt;/p&gt;</comment>
                    <comment id="23680" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:a1-d_et5mr36teeJe5cbCb&quot;&gt;file:a1-d_et5mr36teeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23681" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#231, #313, #303, #306)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-303] re-import changed deftype should work at REPL</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-303</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Current behavior:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(require :reload &apos;foo)
-&amp;gt; nil

(&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; foo.Bar)
-&amp;gt; foo.Bar

; make a change to Bar!

(require :reload &apos;foo)
-&amp;gt; nil

(&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; foo.Bar)
-&amp;gt; java.lang.IllegalStateException: Bar already refers to: class foo.Bar in namespace: user (NO_SOURCE_FILE:9)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13700">CLJ-303</key>
            <summary>re-import changed deftype should work at REPL</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 20 Apr 2010 14:18:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:38:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:38:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23662" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/303&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/303&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
allow-reimport-of-changed-classes.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c3oKVqtB4r36ZseJe5cbCb/download/c3oKVqtB4r36ZseJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c3oKVqtB4r36ZseJe5cbCb/download/c3oKVqtB4r36ZseJe5cbCb&lt;/a&gt;&lt;br/&gt;
reimport-changed-deftype-and-dont-ns-unmap.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/anJcYqtNOr37TyeJe5d-aX/download/anJcYqtNOr37TyeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/anJcYqtNOr37TyeJe5d-aX/download/anJcYqtNOr37TyeJe5d-aX&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23663" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#303, #306, #307)&lt;/p&gt;</comment>
                    <comment id="23664" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:c3oKVqtB4r36ZseJe5cbCb&quot;&gt;file:c3oKVqtB4r36ZseJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23665" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;richhickey said: Per our email exchange, this patch should include removing ns-unmap calls from deftype/record/interface&lt;/p&gt;</comment>
                    <comment id="23666" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:anJcYqtNOr37TyeJe5d-aX&quot;&gt;file:anJcYqtNOr37TyeJe5d-aX&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23667" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: April 22 patch subsumes previous patch and removes ns-unmap calls.&lt;/p&gt;</comment>
                    <comment id="23668" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:c73a4bad6297251ab5545affd6baf79d2390f8c6&amp;#93;&lt;/span&gt;]) re-import changed deftype, see #303&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="23669" author="importer" created="Tue, 24 Aug 2010 10:38:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#231, #313, #303, #306)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-302] Prefer more derived interface in protocol</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-302</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Currently if a protocol is extended to 2 interfaces with a derivation relationship, the more derived is not consistently chosen.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13699">CLJ-302</key>
            <summary>Prefer more derived interface in protocol</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 17 Apr 2010 11:33:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:33:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:33:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23660" author="importer" created="Tue, 24 Aug 2010 10:33:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/302&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/302&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23661" author="importer" created="Tue, 24 Aug 2010 10:33:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:eba23dbdaf93bfb8d3e2549c7a82706705e80d8e&amp;#93;&lt;/span&gt;]) prefer more derived interface in protocol, fixes #302&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-301] (pr x &amp; more) makes a self-call, which can lead to stack overflow</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-301</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;When &apos;pr&apos;, or any related functions are called with a sequence of arguments, they can cause stack overflow.&lt;/p&gt;

&lt;p&gt;Eg:&lt;/p&gt;

&lt;p&gt;(apply pr (range 5000))&lt;/p&gt;</description>
                <environment></environment>
            <key id="13698">CLJ-301</key>
            <summary>(pr x &amp; more) makes a self-call, which can lead to stack overflow</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 17 Apr 2010 16:29:00 -0500</created>
                <updated>Tue, 24 Aug 2010 15:33:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:33:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23658" author="importer" created="Tue, 24 Aug 2010 15:33:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/301&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/301&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-fixed-stack-consumpton-in-pr-more.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dTFEmksJur37KVeJe5d-aX/download/dTFEmksJur37KVeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dTFEmksJur37KVeJe5d-aX/download/dTFEmksJur37KVeJe5d-aX&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23659" author="importer" created="Tue, 24 Aug 2010 15:33:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#301, #325)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-299] clojure.main -e disables stdin</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-299</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;As mentioned on the mailing list, using the -e argument of clojure.main rebinds &lt;b&gt;in&lt;/b&gt; and makes stdin unavailable to other code:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/fbb36bea2034bc7a/197fd51798de01e7?lnk=gst&amp;amp;q=stdin#197fd51798de01e7&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/fbb36bea2034bc7a/197fd51798de01e7?lnk=gst&amp;amp;q=stdin#197fd51798de01e7&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13696">CLJ-299</key>
            <summary>clojure.main -e disables stdin</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 17 Apr 2010 06:43:00 -0500</created>
                <updated>Tue, 24 Aug 2010 16:33:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 16:33:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23641" author="importer" created="Tue, 24 Aug 2010 16:33:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/299&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/299&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Allow-code-run-with-clojure.main-e-to-use-in-.-Fixes.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d676NysDSr34t9eJe5d-aX/download/d676NysDSr34t9eJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d676NysDSr34t9eJe5d-aX/download/d676NysDSr34t9eJe5d-aX&lt;/a&gt;&lt;br/&gt;
tests-for-299.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cyG_Qwtmar34G2eJe5cbCb/download/cyG_Qwtmar34G2eJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cyG_Qwtmar34G2eJe5cbCb/download/cyG_Qwtmar34G2eJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23642" author="importer" created="Tue, 24 Aug 2010 16:33:00 -0500"  >&lt;p&gt;technomancy said: [&lt;a href=&quot;file:d676NysDSr34t9eJe5d-aX&quot;&gt;file:d676NysDSr34t9eJe5d-aX&lt;/a&gt;]: Patch to fix&lt;/p&gt;</comment>
                    <comment id="23643" author="importer" created="Tue, 24 Aug 2010 16:33:00 -0500"  >&lt;p&gt;technomancy said: Patch attached.&lt;/p&gt;</comment>
                    <comment id="23644" author="importer" created="Tue, 24 Aug 2010 16:33:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cyG_Qwtmar34G2eJe5cbCb&quot;&gt;file:cyG_Qwtmar34G2eJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23645" author="importer" created="Tue, 24 Aug 2010 16:33:00 -0500"  >&lt;p&gt;technomancy said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:95faca8a942b0b95d9b8b896238802849d547a46&amp;#93;&lt;/span&gt;]) Allow code run with clojure.main -e to use &lt;b&gt;in&lt;/b&gt;. Fixes #299.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-298] correct accessors for VecNode fields</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-298</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Accessors :arr and :edit should be .arr and .edit.&lt;/p&gt;

&lt;p&gt;Holding InternalReduce (#289) due to test failures until this is approved&lt;/p&gt;</description>
                <environment></environment>
            <key id="13695">CLJ-298</key>
            <summary>correct accessors for VecNode fields</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 16 Apr 2010 16:32:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:33:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:33:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23639" author="importer" created="Tue, 24 Aug 2010 10:33:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/298&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/298&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
access-vecnode-as-type-not-record.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aV5P4-szCr36ikeJe5d-aX/download/aV5P4-szCr36ikeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aV5P4-szCr36ikeJe5d-aX/download/aV5P4-szCr36ikeJe5d-aX&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23640" author="importer" created="Tue, 24 Aug 2010 10:33:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#289, #298)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-297] gvec comparison AbstractMethodError</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-297</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(def iv (into (vector-of :&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;) [1 2 3]))
-&amp;gt;#&apos;user/iv

(= iv (range 1 4))
-&amp;gt; java.lang.AbstractMethodError (NO_SOURCE_FILE:0)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13694">CLJ-297</key>
            <summary>gvec comparison AbstractMethodError</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 16 Apr 2010 18:28:00 -0500</created>
                <updated>Tue, 24 Aug 2010 17:33:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 17:33:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23629" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/297&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/297&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
add-equiv-to-vecseq.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/chwBIesJKr35sNeJe5d-aX/download/chwBIesJKr35sNeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/chwBIesJKr35sNeJe5d-aX/download/chwBIesJKr35sNeJe5d-aX&lt;/a&gt;&lt;br/&gt;
ipersistentcollection-methods-for-vecseq.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/do1f6Etv4r37QzeJe5dVir/download/do1f6Etv4r37QzeJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/do1f6Etv4r37QzeJe5dVir/download/do1f6Etv4r37QzeJe5dVir&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23630" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;stu said: VecSeq is missing the IPersistentCollection methods. Given vi, the four calls below all fail with an AbstractMethodError:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(def vi (into (vector-of :&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;) [1]))
(.equiv (seq vi) nil)
(.conj (seq vi) 2)
(.empty (seq vi))
(.count (seq vi))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="23631" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:chwBIesJKr35sNeJe5d-aX&quot;&gt;file:chwBIesJKr35sNeJe5d-aX&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23632" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;stu said: Patch fixes the immediate problem. Wanted to stop and review before continuing to the other three methods. Feels like this code should be able to be shared, mirroring how ASeq is shared on the Java side.&lt;/p&gt;</comment>
                    <comment id="23633" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;dsg said: &lt;b&gt;Child&lt;/b&gt; association with ticket #266 was added&lt;/p&gt;</comment>
                    <comment id="23634" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;richhickey said: You could share code by just using extend, instead of in-place impl, and a shared method map. For these low use, inherently low-perf methods that&apos;s fine.&lt;/p&gt;</comment>
                    <comment id="23635" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;richhickey said: Urk, of course you can&apos;t use extend yet until IPersistentCollection becomes a protocol. For now you could put shared implementations in helper fns&lt;/p&gt;</comment>
                    <comment id="23636" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:do1f6Etv4r37QzeJe5dVir&quot;&gt;file:do1f6Etv4r37QzeJe5dVir&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23637" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;stu said: the april 21 patch obsoletes the original april 17 patch&lt;/p&gt;</comment>
                    <comment id="23638" author="importer" created="Tue, 24 Aug 2010 17:33:00 -0500"  >&lt;p&gt;stu said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:15a2b2e553b078b7e482da822dcb9f8c28c2016c&amp;#93;&lt;/span&gt;]) IPersistentCollection methods for VecSeq (see #297)&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-296] tests for case</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-296</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;we need tests for case&lt;/p&gt;</description>
                <environment></environment>
            <key id="13693">CLJ-296</key>
            <summary>tests for case</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 16 Apr 2010 08:56:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:32:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:32:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23624" author="importer" created="Tue, 24 Aug 2010 10:32:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/296&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/296&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
tests-for-case.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c6bgVCtoqr37JQeJe5dVir/download/c6bgVCtoqr37JQeJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c6bgVCtoqr37JQeJe5dVir/download/c6bgVCtoqr37JQeJe5dVir&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23625" author="importer" created="Tue, 24 Aug 2010 10:32:00 -0500"  >&lt;p&gt;djpowell said: Is it expected for this to fail at load-time?&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(&lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;code-quote&quot;&gt;&quot;zz&quot;&lt;/span&gt;
  &lt;span class=&quot;code-quote&quot;&gt;&quot;Aa&quot;&lt;/span&gt; :a
  &lt;span class=&quot;code-quote&quot;&gt;&quot;BB&quot;&lt;/span&gt; :b)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="23626" author="importer" created="Tue, 24 Aug 2010 10:32:00 -0500"  >&lt;p&gt;richhickey said: For now, yes, case relies on distinct hashes and provides no secondary hash.&lt;/p&gt;</comment>
                    <comment id="23627" author="importer" created="Tue, 24 Aug 2010 10:32:00 -0500"  >&lt;p&gt;richhickey said: I don&apos;t see a patch attached, so should not be &quot;screened&quot; yet.&lt;/p&gt;</comment>
                    <comment id="23628" author="importer" created="Tue, 24 Aug 2010 10:32:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:c6bgVCtoqr37JQeJe5dVir&quot;&gt;file:c6bgVCtoqr37JQeJe5dVir&lt;/a&gt;]&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-295] disambiguate protocol extended to two interfaces</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-295</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;If a protocol is extended to two interfaces, and an object implements both, it will get one of them at random. I&apos;d be happy if this case was simply an error.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13692">CLJ-295</key>
            <summary>disambiguate protocol extended to two interfaces</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 15 Apr 2010 15:08:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:32:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:32:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23623" author="importer" created="Tue, 24 Aug 2010 10:32:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/295&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/295&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-294] extend should check protocol is not implemented directly</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-294</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The extend function should check and throw an exception if you try to extend a protocol into a class or type that already implements the protocol directly. The current behavior in this case is unintuitive: the extend succeeds, and a method is added to the :impls map, but you can never call it.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13691">CLJ-294</key>
            <summary>extend should check protocol is not implemented directly</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 15 Apr 2010 15:06:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:32:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:32:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23621" author="importer" created="Tue, 24 Aug 2010 10:32:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/294&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/294&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23622" author="importer" created="Tue, 24 Aug 2010 10:32:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:f47895ad8a4a8eac74ccc43c60645c9b121e7d0c&amp;#93;&lt;/span&gt;]) check that type does not already implement protocol interface when extending, fixes #294&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-290] bigint truncates large ratios</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-290</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Clojure 1.2.0-master-SNAPSHOT
user=&amp;gt; (bigint (/ 1000000000000000000000000000 3))
9223372036854775807
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
The correct result should be:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;333333333333333333333333333&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is caused by clojure.core/bigint first converting the ratio to a long:&lt;br/&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;(defn bigint&lt;br/&gt;
  &quot;Coerce to BigInteger&quot;&lt;br/&gt;
  {:tag BigInteger}&lt;br/&gt;
  &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt; (cond&lt;br/&gt;
       (instance? BigInteger x) x&lt;br/&gt;
       (decimal? x) (.toBigInteger #^BigDecimal x)&lt;br/&gt;
       (number? x) (BigInteger/valueOf (long x))&lt;br/&gt;
       :else (BigInteger. x)))&amp;lt;/code&amp;lt;/pre&amp;gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13687">CLJ-290</key>
            <summary>bigint truncates large ratios</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 7 Apr 2010 06:09:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:16:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:16:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23608" author="importer" created="Tue, 24 Aug 2010 10:16:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/290&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/290&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Don-t-truncate-large-ratios-when-converting-to-bigin.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bjG79YqI4r34-reJe5d-aX/download/bjG79YqI4r34-reJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bjG79YqI4r34-reJe5d-aX/download/bjG79YqI4r34-reJe5d-aX&lt;/a&gt;&lt;br/&gt;
0002-Use-bigint-division-when-converting-ratios-to-longs.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bM4IpeqJmr37F6eJe5avMc/download/bM4IpeqJmr37F6eJe5avMc&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bM4IpeqJmr37F6eJe5avMc/download/bM4IpeqJmr37F6eJe5avMc&lt;/a&gt;&lt;br/&gt;
290-tweaked-to-apply-cleanly.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aw7_EOszmr353-eJe5afGb/download/aw7_EOszmr353-eJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aw7_EOszmr353-eJe5afGb/download/aw7_EOszmr353-eJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23609" author="importer" created="Tue, 24 Aug 2010 10:16:00 -0500"  >&lt;p&gt;aosborne said: [&lt;a href=&quot;file:bjG79YqI4r34-reJe5d-aX&quot;&gt;file:bjG79YqI4r34-reJe5d-aX&lt;/a&gt;]: Proposed fix: add a ratio? case to the bigint cond&lt;/p&gt;</comment>
                    <comment id="23610" author="importer" created="Tue, 24 Aug 2010 10:16:00 -0500"  >&lt;p&gt;aosborne said: Additionally I just noticed long conversion can also yield imprecise results:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(&lt;span class=&quot;code-object&quot;&gt;long&lt;/span&gt; 10000000000000000000/3)
    =&amp;gt; 3333333333333332992&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Attaching a patch with uses the bigIntegerValue() for longValue().  I&apos;m unsure whether it&apos;s better to do it this way or to use BigDecimals and increase the precision.&lt;/p&gt;</comment>
                    <comment id="23611" author="importer" created="Tue, 24 Aug 2010 10:16:00 -0500"  >&lt;p&gt;aosborne said: [&lt;a href=&quot;file:bM4IpeqJmr37F6eJe5avMc&quot;&gt;file:bM4IpeqJmr37F6eJe5avMc&lt;/a&gt;]: Use bigint division when converting ratios to longs.&lt;/p&gt;</comment>
                    <comment id="23612" author="importer" created="Tue, 24 Aug 2010 10:16:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aw7_EOszmr353-eJe5afGb&quot;&gt;file:aw7_EOszmr353-eJe5afGb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23613" author="importer" created="Tue, 24 Aug 2010 10:16:00 -0500"  >&lt;p&gt;stu said: April 16 patch subsumes the others and applies cleanly (for now...)&lt;/p&gt;</comment>
                    <comment id="23614" author="importer" created="Tue, 24 Aug 2010 10:16:00 -0500"  >&lt;p&gt;aosborne said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:8e916164ca3a57e5ce924ed153fe435356f8d4a0&amp;#93;&lt;/span&gt;]) Don&apos;t truncate large ratios when converting to bigint. Fixes #290.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-289] Add InternalReduce</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-289</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;InternalReduce protocol lets seqs take advantage of structural details, make reduce run faster.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13686">CLJ-289</key>
            <summary>Add InternalReduce</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 6 Apr 2010 04:41:00 -0500</created>
                <updated>Tue, 24 Aug 2010 17:14:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 17:14:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23601" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/289&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/289&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
internal-reduce.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a45y7yqser379teJe5aVNr/download/a45y7yqser379teJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a45y7yqser379teJe5aVNr/download/a45y7yqser379teJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23602" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:a45y7yqser379teJe5aVNr&quot;&gt;file:a45y7yqser379teJe5aVNr&lt;/a&gt;]: internal-reduce&lt;/p&gt;</comment>
                    <comment id="23603" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;liwp said: Stuart,&lt;/p&gt;

&lt;p&gt;Great stuff!&lt;/p&gt;

&lt;p&gt;You could move the (alength arr) call in arr-impl from the loop form to the let-binding to avoid it getting called on each iteration.&lt;/p&gt;

&lt;p&gt;&amp;#8211; Lauri&lt;/p&gt;</comment>
                    <comment id="23604" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;khinsen said: This looks like a very good idea!&lt;/p&gt;

&lt;p&gt;Question: would it be preferable to pass the original coll to internal-reduce, rather than (seq coll)?&lt;/p&gt;

&lt;p&gt;Advantages:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;no need to create a seq before doing a reduce&lt;/li&gt;
	&lt;li&gt;more potential for optimization if the coll can implement reduce faster directly and the associated seq does not permit to retrieve the coll.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Disadvantage:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;reduce needs to be implemented for seqs anyway, so the number of implementations would increase.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Konrad&lt;/p&gt;</comment>
                    <comment id="23605" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: Lauri,&lt;/p&gt;

&lt;p&gt;I tried lifting the alength calls and the code runs slightly slower (in my unscientific tests on a single laptop. Counterintuitive, huh?&lt;/p&gt;

&lt;p&gt;Stu&lt;/p&gt;</comment>
                    <comment id="23606" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: Konrad,&lt;/p&gt;

&lt;p&gt;The chunking support is on seqs, and it is fast. Also the seq-before-reduce localizes the nil/empty check in reduce. I think Rich had another reason too but I can&apos;t remember what it was. &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Stu&lt;/p&gt;</comment>
                    <comment id="23607" author="importer" created="Tue, 24 Aug 2010 17:14:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#289, #298)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-281] Make more datastructures serializable</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-281</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Make several more core data structures serializable via java-serialization.&lt;/p&gt;

&lt;p&gt;The attached patch is a minimal patch- serialVersionUIDs are not created, nor are redundant &quot;implements Serializable&quot; statements added to classes who already implement Serializable from some other interface.  This patch also does not make functions, lazy lists, atoms, references, etc. serializable, nor those data structures that depend upon any of the above (so tree maps and tree sets, which depend upon an ordering function, are not serializable, for example).  Only those data structures which can be reasonably expected to be serialized by one program and deserialized by another are made serializable.  Whether any of these extra functions should be made serializable is a different debate.&lt;/p&gt;

&lt;p&gt;The classes made serializable are:&lt;br/&gt;
PersistentVector$Node (PersistentVector is already serializable)&lt;br/&gt;
PersistentQueue&lt;br/&gt;
PersistentList&lt;br/&gt;
PersistentList$EmptyList&lt;/p&gt;</description>
                <environment></environment>
            <key id="13678">CLJ-281</key>
            <summary>Make more datastructures serializable</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="cemerick">Chas Emerick</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sun, 14 Mar 2010 17:30:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23556" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/281&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/281&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
serial.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aTM6uyl7Kr34JteJe5avMc/download/aTM6uyl7Kr34JteJe5avMc&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aTM6uyl7Kr34JteJe5avMc/download/aTM6uyl7Kr34JteJe5avMc&lt;/a&gt;&lt;br/&gt;
serial2.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dwWwVQmG0r37KxeJe5aVNr/download/dwWwVQmG0r37KxeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dwWwVQmG0r37KxeJe5aVNr/download/dwWwVQmG0r37KxeJe5aVNr&lt;/a&gt;&lt;br/&gt;
serialization.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bJZ074vWWr34fReJe5cbLA/download/bJZ074vWWr34fReJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bJZ074vWWr34fReJe5cbLA/download/bJZ074vWWr34fReJe5cbLA&lt;/a&gt;&lt;br/&gt;
281-tweaked-to-apply-to-current-master.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dZLUVGv2yr35hJeJe5cbCb/download/dZLUVGv2yr35hJeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dZLUVGv2yr35hJeJe5cbCb/download/dZLUVGv2yr35hJeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23557" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;bhurt said: [&lt;a href=&quot;file:dwWwVQmG0r37KxeJe5aVNr&quot;&gt;file:dwWwVQmG0r37KxeJe5aVNr&lt;/a&gt;]: New diff&lt;/p&gt;</comment>
                    <comment id="23558" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;bhurt said: Just added new file serial2.diff, which is a new diff which adds a few more classes to what is serialized:&lt;br/&gt;
Cons&lt;br/&gt;
PersistentHashMap$ArrayNode&lt;br/&gt;
PersistentHashMap$BitmapIndexedNode&lt;br/&gt;
PersistentHashMap$HashCollisionNode&lt;/p&gt;

&lt;p&gt;Note that serial2.diff implements all the changes serial.diff implements, plus these new classes.  So it&apos;s a complete replacement.&lt;/p&gt;</comment>
                    <comment id="23559" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;dsg said: I am not sure that simply tagging Clojure&apos;s data structures as serializable is the best way to handle this issue.  I have not taken too much time to think about this, but here are some of the issues I do not think have been addressed in this patch:&lt;/p&gt;

&lt;p&gt;1. Given the shared structure of most of Clojure&apos;s data types, I think care should be taken to only serialize the logical snapshot of a structure, not the entire history.&lt;/p&gt;

&lt;p&gt;2. I am not sure that these patches even work.  For example, PersistentVector$Node is marked serializable, but part of its state is an AtomicReference&amp;lt;Thread&amp;gt;.  It doesn&apos;t  make any sense to serialize a reference to a thread.  In fact, I don&apos;t think Thread is serializable at all.  If the reference is set, this will throw a NotSerializableException, I believe.&lt;/p&gt;

&lt;p&gt;In the end, I think the best (and perhaps only) way to handle serialization for Clojure&apos;s data structures is to use Externalizable.&lt;/p&gt;</comment>
                    <comment id="23560" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;bhurt said: 1. I thought that the clojure data structures were just immutable- and that thus they didn&apos;t keep their history.  If I&apos;m wrong, this is a significant problem with clojure, as keeping the history of the data structure would interfere with garbage collecting.&lt;/p&gt;

&lt;p&gt;2. The only times the edit reference is set to not null is when the vector is a transient vector- and I&apos;m explicitly not allowing the serialization of transient vectors.  But I think you could still hit it if some other thread has converted the vector to being a transient while the current thread was trying to serialize the non-transient version of the vector.  Which at least explains why I haven&apos;t hit this bug yet.  In any case, no serializing the edit field is probably a good idea in general.&lt;/p&gt;

&lt;p&gt;I&apos;ll write a new patch to address these problems probably over the weekend.&lt;/p&gt;</comment>
                    <comment id="23561" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;cemerick said: Clojure data structures only retain the portions of their &quot;predecessors&quot; as required by the &quot;current version&quot; of the data structure.  So, there should never be any dead nodes, etc. in the &quot;entire history&quot; of a data structure.&lt;/p&gt;

&lt;p&gt;The AtomicReference&amp;lt;Thread&amp;gt; field is never set to null if I&apos;m reading the code right &amp;#8211; rather, it is set to an AtomicReference containing null (see the NOEDIT static field).  I think the most straightforward way to make this serialization-friendly is to mark the edit field (all all similar fields in other data structures) transient, but default the field to the NOEDIT object so that deserialized instances have a sane value there.&lt;/p&gt;</comment>
                    <comment id="23562" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;bhurt said: The edit member variable (which holds the atomic reference cell) needs to be set up correctly- if I&apos;m reading the code correctly, it&apos;s shared among all copies of the data structure.  So when we deserialize a persistent vector, we need to share the reference cell among all the nodes.&lt;/p&gt;

&lt;p&gt;Actually, the issue of sharing is one I haven&apos;t thought about much.  Consider the case where you serialize multiple versions of the same vector that share a lot of nodes.  Do the deserialized vectors need to share the nodes as well?&lt;/p&gt;</comment>
                    <comment id="23563" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;cemerick said: ObjectOutputStream and ObjectInputStream are smart about using references to previously-written objects instead of duplicating serializations.  So if you write three different large vectors that share a lot of internal structure to the same OOS, that shared structure will be written only once.&lt;/p&gt;

&lt;p&gt;As for the edit field, I &lt;b&gt;think&lt;/b&gt; you can just default it to NOEDIT.  To be clear, that field should never be serialized to begin with, so whatever the default value is in the code will be the value used by deserialized instances.&lt;/p&gt;</comment>
                    <comment id="23564" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;richhickey said: This patch does not apply. Please format your patch with git format-patch as described here:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://clojure.org/patches&quot;&gt;http://clojure.org/patches&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;</comment>
                    <comment id="23565" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;cemerick said: Taking this on, hoping to get it in under the wire for clojure 1.2 RC.&lt;/p&gt;</comment>
                    <comment id="23566" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;cemerick said: [&lt;a href=&quot;file:bJZ074vWWr34fReJe5cbLA&quot;&gt;file:bJZ074vWWr34fReJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23567" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;cemerick said: Patch attached.  It further requires the fix in the patch attached to #331.&lt;/p&gt;</comment>
                    <comment id="23568" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dZLUVGv2yr35hJeJe5cbCb&quot;&gt;file:dZLUVGv2yr35hJeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23569" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;stu said: (My attachment simply updates Chas&apos; patch to work with current master.)&lt;/p&gt;

&lt;p&gt;Looks good, tests pass.  One question: What is the use case for serializing a fn? Deserializing a fn will &lt;b&gt;not&lt;/b&gt; work across VMs, as the fn internally refers to anonymous classes that no longer exist. Without knowing the use case I would be tempted to pull this out because of the confusion it could cause.&lt;/p&gt;

&lt;p&gt;The only other minor interesting thing to note is that serializing a namespace just serializes the namespace, not its contents. This makes sense once you think about it, and is necessary for serializing structs and records, but might be worth a doc note.&lt;/p&gt;</comment>
                    <comment id="23570" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;cemerick said: I&apos;ve mentioned in #clojure a couple of times (and it&apos;s worth adding here &quot;for the record&quot;) that all of the support for Java serialization should be and now is only present with the use case in mind of short term storage, not long term archiving &amp;#8211; the class hierarchy implementing all of the standard data structures will change, and nothing short of a print-dup-esque mechanism (which could be layered on top of Serializable for interop purposes) will ensure longevity of serialized Clojure objects.  More concretely, think sessions, RMI, etc.&lt;/p&gt;

&lt;p&gt;Anyway: functions have been serializable for a while now, so I added tests to that end.  As you said, the serializability of functions has a much narrower useful lifespan at the moment.  I personally don&apos;t know of a use case for same-VM serialization of functions; I wonder if Rich does, or if that was just as far as he got in enabling deeper support for fn serialization.  If the latter, then yes, we should probably pull it out; I can squash that change and the metadata tweak you added if you like.&lt;/p&gt;

&lt;p&gt;I don&apos;t know that any documentation of how namespaces are serialized will be anything other than confusing &amp;#8211; it&apos;s purely an implementation detail that essentially no one will (or should) ever care about.  And, FWIW, the automatic interning of namespaces is essentially implied by the docs on create-ns anyway.&lt;/p&gt;</comment>
                    <comment id="23571" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;cemerick said: From an email exchange between myself, S. Halloway, and Rich addressing the serializability of functions:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Rich&lt;/b&gt;: If the code is AOT compiled and deployed to both VMs, they will have the same classnames for the fns.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;S. Halloway&lt;/b&gt;: But serialization doesn&apos;t know this, and will happily serialize runtime-created fns. If the mangled names happen to exist in the new VM, you would end up calling different fns...&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Rich&lt;/b&gt;: As you say, for consenting adults.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Chas&lt;/b&gt;: I forgot about the (pleasant) AOT caveat.  Yessir, that&apos;s useful.&lt;/p&gt;

&lt;p&gt;Is there any way to tell where a class originated from &amp;#8211; a classfile vs. runtime codegen?  If so, I could put the necessary check-and-throw in so that non-AOT&apos;d functions would fail to serialize.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Rich&lt;/b&gt;: This really isn&apos;t different from the versioning problem inherent with the data structures as well, it&apos;s just that the unit of change is a compilation, not a release. You don&apos;t really protect anything with the AOT check since AOT&apos;ed in two different compilations is potentially different, but might have same name.&lt;/p&gt;

&lt;p&gt;I don&apos;t think we should spend any time trying to protect anyone on this. We can just document the behavior and limitations. Serializing closures is fancy stuff for experts in any case.&lt;/p&gt;</comment>
                    <comment id="23572" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#281, #331)&lt;/p&gt;</comment>
                    <comment id="23573" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;bhurt said: I just wanted to say Thank You to Chas for picking this up.&lt;/p&gt;</comment>
                    <comment id="23574" author="importer" created="Tue, 24 Aug 2010 08:51:00 -0500"  >&lt;p&gt;cemerick said: @Brian: No problem, thanks for getting it started. &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-275] division by negative ratio resulting in a whole number returns a ratio when an integer is expected</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-275</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;i.e.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (/ 1 -1/2)
-2/1
user=&amp;gt; (/ 1 1/2)
2 
user=&amp;gt; (/ 0 -1/2)
0/1&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This happens since the check for the denominator being 1 is done before the negative sign is switched from the denominator to the numerator.&lt;br/&gt;
i.e. &lt;a href=&quot;http://github.com/richhickey/clojure/blob/master/src/jvm/clojure/lang/Numbers.java#L296&quot;&gt;http://github.com/richhickey/clojure/blob/master/src/jvm/clojure/lang/Numbers.java#L296&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have provided a patch which makes this work as I expected, of course this may not be the optimal way of solving this problem as i&apos;m not familiar enough with the internals of clojure.&lt;/p&gt;

&lt;p&gt;Thanks&lt;br/&gt;
.Tristan&lt;/p&gt;</description>
                <environment></environment>
            <key id="13672">CLJ-275</key>
            <summary>division by negative ratio resulting in a whole number returns a ratio when an integer is expected</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 24 Feb 2010 01:39:00 -0600</created>
                <updated>Tue, 24 Aug 2010 07:33:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:33:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23529" author="importer" created="Tue, 24 Aug 2010 07:33:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/275&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/275&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
divide-by-negative.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aGxagWisar37eqeJe5afGb/download/aGxagWisar37eqeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aGxagWisar37eqeJe5afGb/download/aGxagWisar37eqeJe5afGb&lt;/a&gt;&lt;br/&gt;
test-for-assembla-275.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cvsqVgr8Cr37VqeJe5d-aX/download/cvsqVgr8Cr37VqeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cvsqVgr8Cr37VqeJe5d-aX/download/cvsqVgr8Cr37VqeJe5d-aX&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23530" author="importer" created="Tue, 24 Aug 2010 07:33:00 -0500"  >&lt;p&gt;richhickey said: Thanks for the report. You need to have submitted a contributor&apos;s agreement in order to submit patches, though.&lt;/p&gt;

&lt;p&gt;Please see:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://clojure.org/contributing&quot;&gt;http://clojure.org/contributing&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23531" author="importer" created="Tue, 24 Aug 2010 07:33:00 -0500"  >&lt;p&gt;lessthantristan said: I will send off a contributor&apos;s agreement on monday. However, I was not expecting my patch to be &quot;the&quot; fix for this problem. It was just to show where the problem is and an example of what my expected behaviour is. But of course, I have no problems if you feel this is an appropriate fix.&lt;/p&gt;</comment>
                    <comment id="23532" author="importer" created="Tue, 24 Aug 2010 07:33:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cvsqVgr8Cr37VqeJe5d-aX&quot;&gt;file:cvsqVgr8Cr37VqeJe5d-aX&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23533" author="importer" created="Tue, 24 Aug 2010 07:33:00 -0500"  >&lt;p&gt;stu said: code appears correct, added test. please review for speed. Should we create a NEG_ONE constant?&lt;/p&gt;</comment>
                    <comment id="23534" author="importer" created="Tue, 24 Aug 2010 07:33:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#247, #262, #275)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-271] Determine direct binding policy and controls</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-271</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Direct binding is in place as an experiment. We need ways to control the application and granularity of direct binding.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13668">CLJ-271</key>
            <summary>Determine direct binding policy and controls</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 16 Feb 2010 14:47:00 -0600</created>
                <updated>Tue, 24 Aug 2010 06:25:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:25:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23518" author="importer" created="Tue, 24 Aug 2010 06:25:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/271&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/271&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23519" author="importer" created="Tue, 24 Aug 2010 06:25:00 -0500"  >&lt;p&gt;technomancy said: &lt;b&gt;Related&lt;/b&gt; association with ticket #246 was added&lt;/p&gt;</comment>
                    <comment id="23520" author="importer" created="Tue, 24 Aug 2010 06:25:00 -0500"  >&lt;p&gt;stu said: disable for 1.2 and then move to approved backlog&lt;/p&gt;</comment>
                    <comment id="23521" author="importer" created="Tue, 24 Aug 2010 06:25:00 -0500"  >&lt;p&gt;stu said: Direct binding is dead in favor of a better perf enhancement post 1.2.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-269] Add List and Collection support to Vec</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-269</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13666">CLJ-269</key>
            <summary>Add List and Collection support to Vec</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="chouser@n01se.net">Chouser</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 12 Feb 2010 14:25:00 -0600</created>
                <updated>Tue, 24 Aug 2010 15:22:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:22:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23502" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/269&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/269&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-gvec-implement-Iterable-j.u.Collection-and-j.u.Li.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/b_GjzsgfOr36H0eJe5aVNr/download/b_GjzsgfOr36H0eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/b_GjzsgfOr36H0eJe5aVNr/download/b_GjzsgfOr36H0eJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23503" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #264 was added&lt;/p&gt;</comment>
                    <comment id="23504" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;chouser@n01se.net said: [&lt;a href=&quot;file:b_GjzsgfOr36H0eJe5aVNr&quot;&gt;file:b_GjzsgfOr36H0eJe5aVNr&lt;/a&gt;]: gvec: implement Iterable, j.u.Collection, and j.u.List&lt;/p&gt;</comment>
                    <comment id="23505" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;chouser@n01se.net said: Nothing dramatic in the attached patch.  A couple things I was unsure about:&lt;/p&gt;

&lt;p&gt;1. There are a couple places where walking through part or all of the vector is done by incrementing an index and calling .nth each time.  Is it worth while to instead use a chunked seq of the vector?&lt;/p&gt;

&lt;p&gt;2. In a couple other places I use the seq library: some and every?  Neither of these use chunks.  Is this acceptable?  If not, would it be acceptable if those fns used chunks?&lt;/p&gt;

&lt;p&gt;3. Why oh why are Iterator and ListIterator such terrible APIs?  Ok, I&apos;m not really unsure about that one...&lt;/p&gt;

&lt;p&gt;--Chouser&lt;/p&gt;</comment>
                    <comment id="23506" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;chouser@n01se.net said: Oh, one more:&lt;/p&gt;

&lt;p&gt;4. I used subvec on a gvec to implement subList.  It seems to work fine since APersistentVector.SubVector just requires the underlying object to be an IPersistentVector, which of course gvecs are.  This is ok?&lt;/p&gt;</comment>
                    <comment id="23507" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;richhickey said: This all seems ok as a first cut. I wouldn&apos;t do anything with chunks in here right now. subvec seems ok. some/every? we might reconsider at some point due to bootstrapping. But that is an implementation detail&lt;/p&gt;</comment>
                    <comment id="23508" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;chouser@n01se.net said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:df17f32858eb0b700d21a2a2364a54596f139e89&amp;#93;&lt;/span&gt;]) gvec: implement Iterable, j.u.Collection, and j.u.List Fixes #268 and #269&lt;/p&gt;

&lt;p&gt;Signed-off-by: Rich Hickey &amp;lt;richhickey@gmail.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-268] Add Iterable support to Vec</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-268</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13665">CLJ-268</key>
            <summary>Add Iterable support to Vec</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="chouser@n01se.net">Chouser</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 12 Feb 2010 06:24:00 -0600</created>
                <updated>Tue, 24 Aug 2010 07:22:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:22:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23498" author="importer" created="Tue, 24 Aug 2010 07:22:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/268&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/268&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23499" author="importer" created="Tue, 24 Aug 2010 07:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #264 was added&lt;/p&gt;</comment>
                    <comment id="23500" author="importer" created="Tue, 24 Aug 2010 07:22:00 -0500"  >&lt;p&gt;chouser@n01se.net said: See patch in #269&lt;/p&gt;</comment>
                    <comment id="23501" author="importer" created="Tue, 24 Aug 2010 07:22:00 -0500"  >&lt;p&gt;chouser@n01se.net said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:df17f32858eb0b700d21a2a2364a54596f139e89&amp;#93;&lt;/span&gt;]) gvec: implement Iterable, j.u.Collection, and j.u.List Fixes #268 and #269&lt;/p&gt;

&lt;p&gt;Signed-off-by: Rich Hickey &amp;lt;richhickey@gmail.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-267] Add Reversible support to Vec</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-267</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13664">CLJ-267</key>
            <summary>Add Reversible support to Vec</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 12 Feb 2010 14:24:00 -0600</created>
                <updated>Tue, 24 Aug 2010 15:22:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:22:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23495" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/267&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/267&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
make-vec-reversible.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bsOSEGtASr37E7eJe5cbCb/download/bsOSEGtASr37E7eJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bsOSEGtASr37E7eJe5cbCb/download/bsOSEGtASr37E7eJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23496" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #264 was added&lt;/p&gt;</comment>
                    <comment id="23497" author="importer" created="Tue, 24 Aug 2010 15:22:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:bsOSEGtASr37E7eJe5cbCb&quot;&gt;file:bsOSEGtASr37E7eJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-266] Add Comparable support to Vec</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-266</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13663">CLJ-266</key>
            <summary>Add Comparable support to Vec</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dsg">Daniel Solano G&#243;mez</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 12 Feb 2010 05:23:00 -0600</created>
                <updated>Tue, 24 Aug 2010 06:22:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:22:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23480" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/266&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/266&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
fix266.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aUPsnCrXyr36i1eJe5avMc/download/aUPsnCrXyr36i1eJe5avMc&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aUPsnCrXyr36i1eJe5avMc/download/aUPsnCrXyr36i1eJe5avMc&lt;/a&gt;&lt;br/&gt;
add_comparable_support_to_vec.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bt20JetxCr36GpeJe5d-aX/download/bt20JetxCr36GpeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bt20JetxCr36GpeJe5d-aX/download/bt20JetxCr36GpeJe5d-aX&lt;/a&gt;&lt;br/&gt;
add_comparable_support_to_vec-revised.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c2n-HUtXWr34oReJe5dVir/download/c2n-HUtXWr34oReJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c2n-HUtXWr34oReJe5dVir/download/c2n-HUtXWr34oReJe5dVir&lt;/a&gt;&lt;br/&gt;
eliminate-reflection-in-266.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d_AO6it8Sr37m4eJe5dVir/download/d_AO6it8Sr37m4eJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d_AO6it8Sr37m4eJe5dVir/download/d_AO6it8Sr37m4eJe5dVir&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23481" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #264 was added&lt;/p&gt;</comment>
                    <comment id="23482" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;dsg said: This is my first attempt at submitting a real patch to Clojure, so I appreciate any feedback.  This patch actually does a few different things, specifically:&lt;/p&gt;

&lt;p&gt;1. Add java.lang.Comparable interface for Vec.&lt;br/&gt;
2. Modify vector-of to be a little more user-friendly.  The original only creates empty Vecs.  My patch allows vector-of to take arguments similar to vector and vec.  Importantly, it also takes a primitive array as an argument.  The implementation may not be the most efficient, but it seems to work.&lt;br/&gt;
3. I added a bunch of tests to ensure that vector-of mirrors the behaviour of standard vectors.  In doing so, I ran into a few bugs that led me to implement the Associative interface for Vec and IPersistentCollection to VecSeq.&lt;/p&gt;

&lt;p&gt;It is still probably a good idea to add more tests.&lt;/p&gt;</comment>
                    <comment id="23483" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;dsg said: [&lt;a href=&quot;file:aUPsnCrXyr36i1eJe5avMc&quot;&gt;file:aUPsnCrXyr36i1eJe5avMc&lt;/a&gt;]: Patch to fix #266&lt;/p&gt;</comment>
                    <comment id="23484" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;stu said: Hi Daniel, &lt;/p&gt;

&lt;p&gt;Thanks for jumping on this. I am reviewing the patch, and have hit one issue so far. It&apos;s a subtle one:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(let [foo (into (vector-of :&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;) [1 2 3 4])]
  (println &lt;span class=&quot;code-quote&quot;&gt;&quot;count: &quot;&lt;/span&gt;(count (seq (next foo))))
  (println &lt;span class=&quot;code-quote&quot;&gt;&quot;.count: &quot;&lt;/span&gt; (.count (seq (next foo)))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Your count isn&apos;t taking account of the offset in the VecSeq. This is hidden by a weakness in Clojure&apos;s count fn: it doesn&apos;t know when part of a seq is counted to take advantage of that, so you can&apos;t even see the issue by calling count!&lt;/p&gt;

&lt;p&gt;This makes me think we need to test every Java interface method directly. &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/sad.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                    <comment id="23485" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;dsg said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #297 was added&lt;/p&gt;</comment>
                    <comment id="23486" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;dsg said: [&lt;a href=&quot;file:bt20JetxCr36GpeJe5d-aX&quot;&gt;file:bt20JetxCr36GpeJe5d-aX&lt;/a&gt;]: Adds Comparable support to Vec, with tests.&lt;/p&gt;</comment>
                    <comment id="23487" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;dsg said: New patch for Comparable support.  I&apos;ll move the other fixes/features to other bugs.  This new patch (dated 21 Apr), also includes tests specifically for Comparable.&lt;/p&gt;</comment>
                    <comment id="23488" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;stu said: Hi Daniel,&lt;/p&gt;

&lt;p&gt;This looks great. One tweak: it is not idiomatic (in Clojure at least) to do the type check. All the other Comparable types in Clojure simply throw a ClassCastException when you pass a bad arg to .compareTo.&lt;/p&gt;

&lt;p&gt;If you convert that check to a Clojure (cast ...) and update the tests, I think we&apos;re good to go.&lt;/p&gt;

&lt;p&gt;(I can also make this change, but I want to let the whole thing go in under your name.)&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br/&gt;
Stu&lt;/p&gt;</comment>
                    <comment id="23489" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;dsg said: Hello, Stu,&lt;/p&gt;

&lt;p&gt;Thanks for the feedback.  I&apos;ll make your suggested changes and open those other tickets tomorrow.&lt;/p&gt;

&lt;p&gt;Sincerely,&lt;/p&gt;

&lt;p&gt;Daniel Solano G&#65533;&#65533;mez&lt;/p&gt;</comment>
                    <comment id="23490" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;dsg said: [&lt;a href=&quot;file:c2n-HUtXWr34oReJe5dVir&quot;&gt;file:c2n-HUtXWr34oReJe5dVir&lt;/a&gt;]: Revised patch to add Comparable support to Vec.&lt;/p&gt;</comment>
                    <comment id="23491" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;dsg said: I have submitted a new patch &apos;add_comparable_support_to_vec-revised.patch&apos;, which includes Stu&#65533;&#65533;&#65533;s recommendations and adds a couple of extra tests.&lt;/p&gt;</comment>
                    <comment id="23492" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:d_AO6it8Sr37m4eJe5dVir&quot;&gt;file:d_AO6it8Sr37m4eJe5dVir&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23493" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;stu said: recommend the apr 23 patch (which solves the problem) plus the apr 24 patch (which removes reflection from the api)&lt;/p&gt;</comment>
                    <comment id="23494" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;importer said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:a3d1d494e9e574599c50dd83749183c66f653192&amp;#93;&lt;/span&gt;]) Add Comparable support to Vec, with tests. Fixes #266.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-265] Add IFn support to Vec</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-265</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13662">CLJ-265</key>
            <summary>Add IFn support to Vec</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="chouser@n01se.net">Chouser</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 12 Feb 2010 05:22:00 -0600</created>
                <updated>Tue, 24 Aug 2010 06:22:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:22:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23475" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/265&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/265&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-gvec-implement-IFn-Fixes-265.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aUmLZ-f-Wr36H0eJe5aVNr/download/aUmLZ-f-Wr36H0eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aUmLZ-f-Wr36H0eJe5aVNr/download/aUmLZ-f-Wr36H0eJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23476" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #264 was added&lt;/p&gt;</comment>
                    <comment id="23477" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;chouser@n01se.net said: [&lt;a href=&quot;file:aUmLZ-f-Wr36H0eJe5aVNr&quot;&gt;file:aUmLZ-f-Wr36H0eJe5aVNr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23478" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;chouser@n01se.net said: The attached patch mimics PersistentVector&apos;s behavior &amp;#8211; no &quot;notfound&quot; arg, throws on bad key&lt;/p&gt;</comment>
                    <comment id="23479" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;chouser@n01se.net said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:c97e974c492218609e38a6497b953e38e30b1d83&amp;#93;&lt;/span&gt;]) gvec: implement IFn Fixes #265&lt;/p&gt;

&lt;p&gt;Signed-off-by: Rich Hickey &amp;lt;richhickey@gmail.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-264] Complete interface impls for generic vector</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-264</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Vec needs several more interface implementations in order to be as complete as persistentvector.&lt;br/&gt;
See subtasks&lt;/p&gt;</description>
                <environment></environment>
            <key id="13661">CLJ-264</key>
            <summary>Complete interface impls for generic vector</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 12 Feb 2010 05:22:00 -0600</created>
                <updated>Tue, 24 Aug 2010 06:22:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:22:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23468" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/264&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/264&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23469" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Child&lt;/b&gt; association with ticket #265 was added&lt;/p&gt;</comment>
                    <comment id="23470" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Child&lt;/b&gt; association with ticket #266 was added&lt;/p&gt;</comment>
                    <comment id="23471" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Child&lt;/b&gt; association with ticket #267 was added&lt;/p&gt;</comment>
                    <comment id="23472" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Child&lt;/b&gt; association with ticket #268 was added&lt;/p&gt;</comment>
                    <comment id="23473" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Child&lt;/b&gt; association with ticket #269 was added&lt;/p&gt;</comment>
                    <comment id="23474" author="importer" created="Tue, 24 Aug 2010 06:22:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#316, #264)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-262] (resolve &apos;FooBar.) should return nil</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-262</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Currently, (resolve &apos;FooBar.) throws a ClassNotFoundException it should return nil.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13659">CLJ-262</key>
            <summary>(resolve &apos;FooBar.) should return nil</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="cgrand">Christophe Grand</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 10 Feb 2010 06:53:00 -0600</created>
                <updated>Tue, 24 Aug 2010 06:19:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:19:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23456" author="importer" created="Tue, 24 Aug 2010 06:19:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/262&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/262&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-make-resolve-clojure.lang.Compiler-maybeResolveIn-to.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aPbyDofLur34eteJe5aVNr/download/aPbyDofLur34eteJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aPbyDofLur34eteJe5aVNr/download/aPbyDofLur34eteJe5aVNr&lt;/a&gt;&lt;br/&gt;
test-for-assembla-262.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aQu81Cr8er348xeJe5d-aX/download/aQu81Cr8er348xeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aQu81Cr8er348xeJe5d-aX/download/aQu81Cr8er348xeJe5d-aX&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23457" author="importer" created="Tue, 24 Aug 2010 06:19:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:aPbyDofLur34eteJe5aVNr&quot;&gt;file:aPbyDofLur34eteJe5aVNr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23458" author="importer" created="Tue, 24 Aug 2010 06:19:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aQu81Cr8er348xeJe5d-aX&quot;&gt;file:aQu81Cr8er348xeJe5d-aX&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23459" author="importer" created="Tue, 24 Aug 2010 06:19:00 -0500"  >&lt;p&gt;stu said: code patch works, added test patch&lt;/p&gt;</comment>
                    <comment id="23460" author="importer" created="Tue, 24 Aug 2010 06:19:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#247, #262, #275)&lt;/p&gt;</comment>
                    <comment id="23461" author="importer" created="Tue, 24 Aug 2010 06:19:00 -0500"  >&lt;p&gt;cgrand said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:6847019915f2d3a7708e3c810cc68926e35e1a7e&amp;#93;&lt;/span&gt;]) make resolve (clojure.lang.Compiler/maybeResolveIn) to return nil for &apos;MyClass. See #262&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-260] Cannot load clojure classes from Jar files outside classpath using URLClassLoader</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-260</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;It is not possible to use URLClassLoader to load a class from a jar file if the jar is outside the classpath. It seems that RT.load tries to search for *.clj file within the classpath and doesn&apos;t respect the URLClassLoader and then fails with:&lt;/p&gt;

&lt;p&gt;Exception in thread &quot;main&quot; java.lang.ExceptionInInitializerError&lt;br/&gt;
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)&lt;br/&gt;
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)&lt;br/&gt;
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)&lt;br/&gt;
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)&lt;br/&gt;
        at java.lang.Class.newInstance0(Class.java:355)&lt;br/&gt;
        at java.lang.Class.newInstance(Class.java:308)&lt;br/&gt;
        at Loader.main(Loader.java:17)&lt;br/&gt;
Caused by: java.io.FileNotFoundException: Could not locate net/experimentalworks/Foo__init.class or net/experimentalworks/Foo.clj on classpath: &lt;br/&gt;
        at clojure.lang.RT.load(RT.java:402)&lt;br/&gt;
        at clojure.lang.RT.load(RT.java:371)&lt;br/&gt;
        at clojure.core$load_&lt;em&gt;6449$fn&lt;/em&gt;_6458.invoke(core.clj:4171)&lt;br/&gt;
        at clojure.core$load__6449.doInvoke(core.clj:4170)&lt;br/&gt;
        at clojure.lang.RestFn.invoke(RestFn.java:413)&lt;br/&gt;
        at clojure.lang.Var.invoke(Var.java:359)&lt;br/&gt;
        at net.experimentalworks.Foo.&amp;lt;clinit&amp;gt;(Unknown Source)&lt;br/&gt;
        ... 7 more&lt;/p&gt;

&lt;p&gt;The attached .tar.gz contains a sample jar file and the clojure file that was used to generate the class files as well as the sample loader. Java oder Scala written classes can be loaded without any problems. For sure the I put the clojure runtime into the classpath but not the loadme-clojure.jar&lt;/p&gt;</description>
                <environment></environment>
            <key id="13657">CLJ-260</key>
            <summary>Cannot load clojure classes from Jar files outside classpath using URLClassLoader</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 9 Feb 2010 19:08:00 -0600</created>
                <updated>Tue, 24 Aug 2010 15:18:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:18:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23452" author="importer" created="Tue, 24 Aug 2010 15:18:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/260&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/260&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
loader.tar.gz - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/ayyZTifAyr34QPeJe5aVNr/download/ayyZTifAyr34QPeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/ayyZTifAyr34QPeJe5aVNr/download/ayyZTifAyr34QPeJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23453" author="importer" created="Tue, 24 Aug 2010 15:18:00 -0500"  >&lt;p&gt;stu said: Clojure&apos;s base loader uses the thread context loader so long as &lt;b&gt;use-context-classloader&lt;/b&gt; is true (the default). Make sure context class loader is set, and then set the thread context class loader to be the loader you have created by calling:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.currentThread().setContextClassLoader(loader);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Do this before using the loader to load classes.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br/&gt;
Stu&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-258] can&apos;t recur from case special form</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-258</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;the &apos;case&apos; special form doesnt&apos;t propagate tailcontext.&lt;br/&gt;
eg.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;; SLIME 2010-02-01
user&amp;gt; (loop [foo &lt;span class=&quot;code-quote&quot;&gt;&quot;foo&quot;&lt;/span&gt;]
        (&lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; foo
          &lt;span class=&quot;code-quote&quot;&gt;&quot;foo&quot;&lt;/span&gt; (recur &apos;bar)
          &apos;bar (recur :baz)
          :done (&lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; (println &lt;span class=&quot;code-quote&quot;&gt;&quot;hello&quot;&lt;/span&gt;))
          (recur :done)))
; Evaluation aborted.

Can only recur from tail position
  [Thrown class java.lang.UnsupportedOperationException]&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;


&lt;p&gt;This can be easily fixed by making&lt;br/&gt;
Compiler.CaseExpr#emit() and Compiler.CaseExpr.Parser#parse() propagate their context instead stetting the context to C.EXPRESSION.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13655">CLJ-258</key>
            <summary>can&apos;t recur from case special form</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 3 Feb 2010 23:17:00 -0600</created>
                <updated>Tue, 24 Aug 2010 17:12:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 17:12:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23447" author="importer" created="Tue, 24 Aug 2010 17:12:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/258&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/258&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23448" author="importer" created="Tue, 24 Aug 2010 17:12:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:c1ca66b7a171bcd2157e679799f37ba7a37bff36&amp;#93;&lt;/span&gt;]) analyze case exprs in context, fixes #258&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-257] add fnil for wrapping functions to handle nil</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-257</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;As per discussion&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/99cc4a6bfe665a6e&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/99cc4a6bfe665a6e&lt;/a&gt;&lt;br/&gt;
fnil provides a convenient way to supply a default value to be used instead of nil for functions that expect values&lt;/p&gt;</description>
                <environment></environment>
            <key id="13654">CLJ-257</key>
            <summary>add fnil for wrapping functions to handle nil</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="timothypratley">Timothy Pratley</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 30 Jan 2010 06:36:00 -0600</created>
                <updated>Tue, 24 Aug 2010 17:07:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 17:07:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23439" author="importer" created="Tue, 24 Aug 2010 17:07:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/257&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/257&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
fnil.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bxdOVqdvur34_1eJe5aVNr/download/bxdOVqdvur34_1eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bxdOVqdvur34_1eJe5aVNr/download/bxdOVqdvur34_1eJe5aVNr&lt;/a&gt;&lt;br/&gt;
0257-fnil-take2.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c4H_wYCber37b6eJe5cbLr/download/c4H_wYCber37b6eJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c4H_wYCber37b6eJe5cbLr/download/c4H_wYCber37b6eJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23440" author="importer" created="Tue, 24 Aug 2010 17:07:00 -0500"  >&lt;p&gt;timothypratley said: [&lt;a href=&quot;file:bxdOVqdvur34_1eJe5aVNr&quot;&gt;file:bxdOVqdvur34_1eJe5aVNr&lt;/a&gt;]: adding fnil&lt;/p&gt;</comment>
                    <comment id="23441" author="importer" created="Tue, 24 Aug 2010 17:07:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:c4H_wYCber37b6eJe5cbLr&quot;&gt;file:c4H_wYCber37b6eJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23442" author="importer" created="Tue, 24 Aug 2010 17:07:00 -0500"  >&lt;p&gt;stu said: New patch refreshes original patch, adds more tests and some trivial unrelated cleanup.&lt;/p&gt;</comment>
                    <comment id="23443" author="importer" created="Tue, 24 Aug 2010 17:07:00 -0500"  >&lt;p&gt;richhickey said: what&apos;s the definterface stuff in this patch?&lt;/p&gt;</comment>
                    <comment id="23444" author="importer" created="Tue, 24 Aug 2010 17:07:00 -0500"  >&lt;p&gt;stu said: That&apos;s the &quot;trival unrelated cleanup&quot; part. On April 23, some dummy (me) accidentally committed a .rej file, which is a working file used by git when resolving conflicts. This commit kills it.&lt;/p&gt;</comment>
                    <comment id="23445" author="importer" created="Tue, 24 Aug 2010 17:07:00 -0500"  >&lt;p&gt;stu said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:725547f4587f75c063c51659e582cfdbcc140f80&amp;#93;&lt;/span&gt;]) tidy up and test #257, remove spurious .rej file&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="23446" author="importer" created="Tue, 24 Aug 2010 17:07:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#256, #257, #367, #358)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-256] get-in optional default value</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-256</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;As per discussion&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/99cc4a6bfe665a6e&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/99cc4a6bfe665a6e&lt;/a&gt;&lt;br/&gt;
adding optional default value to be like get&lt;/p&gt;</description>
                <environment></environment>
            <key id="13653">CLJ-256</key>
            <summary>get-in optional default value</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="timothypratley">Timothy Pratley</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 30 Jan 2010 04:09:00 -0600</created>
                <updated>Tue, 24 Aug 2010 15:07:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:07:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23431" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/256&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/256&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
get-in-default.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/blYgdOdvar34_1eJe5aVNr/download/blYgdOdvar34_1eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/blYgdOdvar34_1eJe5aVNr/download/blYgdOdvar34_1eJe5aVNr&lt;/a&gt;&lt;br/&gt;
0256-get-in-faster.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aZL87kCmCr35fseJe5cbCb/download/aZL87kCmCr35fseJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aZL87kCmCr35fseJe5cbCb/download/aZL87kCmCr35fseJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23432" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;timothypratley said: [&lt;a href=&quot;file:blYgdOdvar34_1eJe5aVNr&quot;&gt;file:blYgdOdvar34_1eJe5aVNr&lt;/a&gt;]: get-in enhancement&lt;/p&gt;</comment>
                    <comment id="23433" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;meikelbrandmeyer said: As noted by Daniel Werner in the above thread, get-in should allow &lt;tt&gt;nil&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;false&lt;/tt&gt; in maps.&lt;/p&gt;

&lt;p&gt;I propose to change the &lt;tt&gt;if-let&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;(get (reduce get m (pop ks)) (peek ks) not-found)&lt;/tt&gt;.&lt;/p&gt;</comment>
                    <comment id="23434" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;timothypratley said: I&apos;ve updated the patch as discussed on the group, slightly different.&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/99cc4a6bfe665a6e&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/99cc4a6bfe665a6e&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23435" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;timothypratley said: Ok problems addressed.&lt;/p&gt;</comment>
                    <comment id="23436" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:aZL87kCmCr35fseJe5cbCb&quot;&gt;file:aZL87kCmCr35fseJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23437" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;stu said: second patch subsumes first, fixes perf with direct loop.&lt;/p&gt;</comment>
                    <comment id="23438" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#256, #257, #367, #358)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-254] Expose c.l.Ratio&apos;s accessors</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-254</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Expose accessor functions of c.l.Ratio in c.core.&lt;/p&gt;

&lt;p&gt;See here:&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/775351b9335a561e&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/775351b9335a561e&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13651">CLJ-254</key>
            <summary>Expose c.l.Ratio&apos;s accessors</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="meikelbrandmeyer">Meikel Brandmeyer</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 29 Jan 2010 21:05:00 -0600</created>
                <updated>Tue, 24 Aug 2010 15:07:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:07:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23423" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/254&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/254&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Expose-Ratio-s-enumerator-and-denominator-as-clojure.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dzNg_8drer34IaeJe5afGb/download/dzNg_8drer34IaeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dzNg_8drer34IaeJe5afGb/download/dzNg_8drer34IaeJe5afGb&lt;/a&gt;&lt;br/&gt;
ratio-fns.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dPDZz0drur3749eJe5aVNr/download/dPDZz0drur3749eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dPDZz0drur3749eJe5aVNr/download/dPDZz0drur3749eJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23424" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;meikelbrandmeyer said: [&lt;a href=&quot;file:dzNg_8drer34IaeJe5afGb&quot;&gt;file:dzNg_8drer34IaeJe5afGb&lt;/a&gt;]: Expose Ratio&apos;s accessors&lt;/p&gt;</comment>
                    <comment id="23425" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;hiredman said: &lt;b&gt;Duplicated&lt;/b&gt; association with ticket #255 was added&lt;/p&gt;</comment>
                    <comment id="23426" author="importer" created="Tue, 24 Aug 2010 15:07:00 -0500"  >&lt;p&gt;meikelbrandmeyer said: [&lt;a href=&quot;file:dPDZz0drur3749eJe5aVNr&quot;&gt;file:dPDZz0drur3749eJe5aVNr&lt;/a&gt;]: Superior patch from Kevin Downey&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-253] Improve errors for &quot;use&quot;/&quot;require&quot; in REPL</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-253</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;in the repl when i (use &apos;foo) vs. (use :foo) they both return nil, so it doesn&apos;t help me know that the former is right and the latter isn&apos;t. would it be sensible for use to return true or something more positive than nil if it successfully brings in a namespace? or print out an error message when symbols are used?&lt;/p&gt;</description>
                <environment></environment>
            <key id="13650">CLJ-253</key>
            <summary>Improve errors for &quot;use&quot;/&quot;require&quot; in REPL</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="timothypratley">Timothy Pratley</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 29 Jan 2010 11:17:00 -0600</created>
                <updated>Tue, 24 Aug 2010 06:07:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:07:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23420" author="importer" created="Tue, 24 Aug 2010 06:07:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/253&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/253&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
load.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bKJkksdv8r34IaeJe5afGb/download/bKJkksdv8r34IaeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bKJkksdv8r34IaeJe5afGb/download/bKJkksdv8r34IaeJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23421" author="importer" created="Tue, 24 Aug 2010 06:07:00 -0500"  >&lt;p&gt;timothypratley said: [&lt;a href=&quot;file:bKJkksdv8r34IaeJe5afGb&quot;&gt;file:bKJkksdv8r34IaeJe5afGb&lt;/a&gt;]: check for a valid argument&lt;/p&gt;</comment>
                    <comment id="23422" author="importer" created="Tue, 24 Aug 2010 06:07:00 -0500"  >&lt;p&gt;timothypratley said: Please note, patch throws an exception if nothing specified to load,&lt;br/&gt;
in the use case, :foo is a keyword not a valid load target.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-247] Remove clojure.lang.Stream/Streamable and all uses</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-247</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13644">CLJ-247</key>
            <summary>Remove clojure.lang.Stream/Streamable and all uses</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 21 Jan 2010 08:51:00 -0600</created>
                <updated>Tue, 24 Aug 2010 08:59:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:59:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23409" author="importer" created="Tue, 24 Aug 2010 08:59:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/247&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/247&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-remove-streams.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aFB2mGrVGr364FeJe5afGb/download/aFB2mGrVGr364FeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aFB2mGrVGr364FeJe5afGb/download/aFB2mGrVGr364FeJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23410" author="importer" created="Tue, 24 Aug 2010 08:59:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:aFB2mGrVGr364FeJe5afGb&quot;&gt;file:aFB2mGrVGr364FeJe5afGb&lt;/a&gt;]: patch&lt;/p&gt;</comment>
                    <comment id="23411" author="importer" created="Tue, 24 Aug 2010 08:59:00 -0500"  >&lt;p&gt;stu said: patch looks good, tests pass&lt;/p&gt;</comment>
                    <comment id="23412" author="importer" created="Tue, 24 Aug 2010 08:59:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#247, #262, #275)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-246] direct binding inhibits clojure.test functionality</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-246</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;clojure.test offers features that rely on binding functions from its namespace.  With the way direct binding is implemented now, this is impossible, since any namespaces beginning with &quot;clojure&quot; are directly bound.  This also has a (probably) unintended of direct binding namespaces that just &lt;em&gt;start with&lt;/em&gt; &quot;clojure&quot;, like &quot;clojuresque&quot; and &quot;clojure-http-client.&quot;&lt;/p&gt;

&lt;p&gt;I propose that direct binding use a whitelist, instead of direct binding anything that starts with &quot;clojure.&quot;&lt;/p&gt;

&lt;p&gt;An ever better solution, though, would be to use namespace metadata to turn off/on direct binding.  That way user code could turn on direct binding in hotspots.  Unfortunately, there&apos;s an open bug (#130) which causes AOT compilation to erase namespace metadata, so until that&apos;s closed I would prefer the whitelist option.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13643">CLJ-246</key>
            <summary>direct binding inhibits clojure.test functionality</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="technomancy">Phil Hagelberg</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 14 Jan 2010 02:35:00 -0600</created>
                <updated>Tue, 24 Aug 2010 15:53:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:53:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23402" author="importer" created="Tue, 24 Aug 2010 15:53:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/246&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/246&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Don-t-let-clojure.test-test-var-be-dynamically-bound.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/awOFYMhm8r3498eJe5afGb/download/awOFYMhm8r3498eJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/awOFYMhm8r3498eJe5afGb/download/awOFYMhm8r3498eJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23403" author="importer" created="Tue, 24 Aug 2010 15:53:00 -0500"  >&lt;p&gt;technomancy said: Rich indicated in IRC that he would like to offer more flexibility for when direct binding should be applied, (possibly using ns metadata as suggested above) but wants to leave it as-is for now in order to flush out issues with direct binding.&lt;/p&gt;

&lt;p&gt;The workaround is to redefine the var in question with {:dynamic true} metadata.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;http://clojure-log.n01se.net/date/2010-01-14.html#i117&quot;&gt;http://clojure-log.n01se.net/date/2010-01-14.html#i117&lt;/a&gt; for a record of the conversation.&lt;/p&gt;</comment>
                    <comment id="23404" author="importer" created="Tue, 24 Aug 2010 15:53:00 -0500"  >&lt;p&gt;technomancy said: &lt;b&gt;Related&lt;/b&gt; association with ticket #271 was added&lt;/p&gt;</comment>
                    <comment id="23405" author="importer" created="Tue, 24 Aug 2010 15:53:00 -0500"  >&lt;p&gt;technomancy said: [&lt;a href=&quot;file:awOFYMhm8r3498eJe5afGb&quot;&gt;file:awOFYMhm8r3498eJe5afGb&lt;/a&gt;]: patch for dynamic test-var&lt;/p&gt;</comment>
                    <comment id="23406" author="importer" created="Tue, 24 Aug 2010 15:53:00 -0500"  >&lt;p&gt;technomancy said: Until we have a more fine-grained way of switching on and off direct binding, it would be very useful in some contexts to be able to rebind test-var.&lt;/p&gt;</comment>
                    <comment id="23407" author="importer" created="Tue, 24 Aug 2010 15:53:00 -0500"  >&lt;p&gt;stuart.sierra said: For a better long-term solution to this specific problem, I&apos;m working on a complete rewrite of clojure.test that doesn&apos;t depend on any dynamic binding.  Intermediate work here:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://github.com/stuartsierra/lazytest&quot;&gt;http://github.com/stuartsierra/lazytest&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23408" author="importer" created="Tue, 24 Aug 2010 15:53:00 -0500"  >&lt;p&gt;technomancy said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:9694a92d84ddffb6794fa97efd429b5e23285553&amp;#93;&lt;/span&gt;]) Don&apos;t let clojure.test/test-var be dynamically bound. Fixes #246.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Rich Hickey &amp;lt;richhickey@gmail.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-245] Unnamed fns should have no binding of name</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-245</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Currently a binding is created for a generated name&lt;/p&gt;</description>
                <environment></environment>
            <key id="13642">CLJ-245</key>
            <summary>Unnamed fns should have no binding of name</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 13 Jan 2010 22:30:00 -0600</created>
                <updated>Tue, 24 Aug 2010 15:52:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:52:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23398" author="importer" created="Tue, 24 Aug 2010 15:52:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/245&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/245&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23399" author="importer" created="Tue, 24 Aug 2010 15:52:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #94 was added&lt;/p&gt;</comment>
                    <comment id="23400" author="importer" created="Tue, 24 Aug 2010 15:52:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #94 was removed&lt;/p&gt;</comment>
                    <comment id="23401" author="importer" created="Tue, 24 Aug 2010 15:52:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:e6a315bd3d514c6af10d2e7a853b693aa5f4520d&amp;#93;&lt;/span&gt;]) Unnamed fns should have no binding of name - fixes #245&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-243] Add bound? and thread-bound? predicates</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-243</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Discussed in #clojure here: &lt;a href=&quot;http://clojure-log.n01se.net/date/2010-01-12.html#i96&quot;&gt;http://clojure-log.n01se.net/date/2010-01-12.html#i96&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wraps Var.isBound and the truthiness of Var.getThreadBinding; the latter particularly handy for knowing whether or not set! will fail or not.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13640">CLJ-243</key>
            <summary>Add bound? and thread-bound? predicates</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 12 Jan 2010 16:15:00 -0600</created>
                <updated>Tue, 24 Aug 2010 07:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23391" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/243&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/243&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
boundthread-bound.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cIZ_rS_78r3QKheJe5afGb/download/cIZ_rS_78r3QKheJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cIZ_rS_78r3QKheJe5afGb/download/cIZ_rS_78r3QKheJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23392" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;oranenj said: Shouldn&apos;t tickets with patches be marked as &quot;test&quot;? Anyway, I tried this, and it applies cleanly and appears to work.&lt;/p&gt;</comment>
                    <comment id="23393" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;cemerick said: Yep, that&apos;s my bad.  Thanks, Jarkko.&lt;/p&gt;</comment>
                    <comment id="23394" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#230, #243)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-242] Support implicit macro args for form and locals</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-242</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Inside the body of a defmacro expander, &amp;amp;whole will refer to the original macro invocation form (thus allowing recovery and use of metadata on that form by the expander itself). &amp;amp;env will refer to a map of symbols to TBD, such symbols representing the locals in scope. This will break code that depends on defmacro creating a fn with exactly the same signature.&lt;/p&gt;

&lt;p&gt;Possible alternate names: &amp;amp;locals, &amp;amp;form&lt;/p&gt;</description>
                <environment></environment>
            <key id="13639">CLJ-242</key>
            <summary>Support implicit macro args for form and locals</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 12 Jan 2010 09:27:00 -0600</created>
                <updated>Tue, 24 Aug 2010 07:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23389" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/242&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/242&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23390" author="importer" created="Tue, 24 Aug 2010 07:51:00 -0500"  >&lt;p&gt;richhickey said: names are &amp;amp;form and &amp;amp;env&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-241] Tests for reify</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-241</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;subsumed by #239 and #240&lt;/p&gt;</description>
                <environment></environment>
            <key id="13638">CLJ-241</key>
            <summary>Tests for reify</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 12 Jan 2010 16:19:00 -0600</created>
                <updated>Tue, 24 Aug 2010 15:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 15:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23388" author="importer" created="Tue, 24 Aug 2010 15:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/241&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/241&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-240] Tests for protocols and types, round 1</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-240</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I have included a patch with my original tests (pre deftype/defrecord split) plus a final patch to get things passing with the latest greatest.&lt;/p&gt;

&lt;p&gt;The final commit is worth looking at. The reduced dynamism of deftype is visible, in that I used to be able to redefine a type multiple times in a series of tests, and am now relying on per-test named types. I think this tradeoff is worth it for unification with the host type system. But a bigger issue occurs when working at the REPL: you can reload types, but not refer to the reloaded ones.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13637">CLJ-240</key>
            <summary>Tests for protocols and types, round 1</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 12 Jan 2010 06:19:00 -0600</created>
                <updated>Tue, 24 Aug 2010 05:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 05:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23386" author="importer" created="Tue, 24 Aug 2010 05:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/240&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/240&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
initial-tests-for-protocols-and-types.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c5lA0usxGr37xPeJe5d-aX/download/c5lA0usxGr37xPeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c5lA0usxGr37xPeJe5d-aX/download/c5lA0usxGr37xPeJe5d-aX&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23387" author="importer" created="Tue, 24 Aug 2010 05:51:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:c5lA0usxGr37xPeJe5d-aX&quot;&gt;file:c5lA0usxGr37xPeJe5d-aX&lt;/a&gt;]&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-239] Tests for types and protocols, round 2</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-239</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description></description>
                <environment></environment>
            <key id="13636">CLJ-239</key>
            <summary>Tests for types and protocols, round 2</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 12 Jan 2010 06:19:00 -0600</created>
                <updated>Tue, 24 Aug 2010 05:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 05:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23381" author="importer" created="Tue, 24 Aug 2010 05:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/239&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/239&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
239-more-tests-for-types.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c3AD6Av6ur36EQeJe5cbCb/download/c3AD6Av6ur36EQeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c3AD6Av6ur36EQeJe5cbCb/download/c3AD6Av6ur36EQeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23382" author="importer" created="Tue, 24 Aug 2010 05:51:00 -0500"  >&lt;p&gt;mikehinchey said: I started writing some tests, but haven&apos;t gotten any feedback.  Let me know if this is worthwhile.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/68075dbbe48cca4d&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/68075dbbe48cca4d&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://github.com/mikehinchey/clojure/commit/242d477423ef4df21b0f70e2a19a9ef68ea2b5df&quot;&gt;http://github.com/mikehinchey/clojure/commit/242d477423ef4df21b0f70e2a19a9ef68ea2b5df&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23383" author="importer" created="Tue, 24 Aug 2010 05:51:00 -0500"  >&lt;p&gt;stu said: Mike, &lt;/p&gt;

&lt;p&gt;Can you attach a patch that includes just the redef-protocol test and the compiler fix?&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;</comment>
                    <comment id="23384" author="importer" created="Tue, 24 Aug 2010 05:51:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:c3AD6Av6ur36EQeJe5cbCb&quot;&gt;file:c3AD6Av6ur36EQeJe5cbCb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23385" author="importer" created="Tue, 24 Aug 2010 05:51:00 -0500"  >&lt;p&gt;stu said: I have opened a new ticket (#333) for the bug Mike found. &lt;/p&gt;

&lt;p&gt;My patch includes tests and a fix for a NPE when misusing extend.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-232] Locals cleared too aggressively on delay</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-232</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Steve Gilardi and I noticed some strange behaviour with local clearing in conjunction with delay:&lt;/p&gt;

&lt;p&gt;    (defn do-something &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt;&lt;br/&gt;
      (throw (Exception.)))&lt;/p&gt;

&lt;p&gt;    (defn clear-locals &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt;&lt;br/&gt;
      (delay (try (do-something x)&lt;br/&gt;
                  (catch Exception e&lt;br/&gt;
                    (println &quot;argument value:&quot; x)))))&lt;/p&gt;

&lt;p&gt;    (force (clear-locals :argument))&lt;br/&gt;
    ;; =&amp;gt; argument value: nil&lt;/p&gt;

&lt;p&gt;It seems the locals are getting cleared a little too aggressively here. I did some digging to discover that delay is a thin wrapper around an fn, but using an fn in this context (rather than a delay) does not trigger the problem. Also I found that throwing an exception directly inside the try block (rather than in a function called from the try block) did not trigger it.&lt;/p&gt;

&lt;p&gt;I was able to reproduce in the new branch, the master branch, and 1.0.0, so it&apos;s not related to the more recent locals-clearing changes.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13629">CLJ-232</key>
            <summary>Locals cleared too aggressively on delay</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 30 Dec 2009 17:27:00 -0600</created>
                <updated>Tue, 24 Aug 2010 05:43:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 05:43:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23358" author="importer" created="Tue, 24 Aug 2010 05:43:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/232&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/232&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
locals.clj - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d6rA1a9ASr3RHaeJe5afGb/download/d6rA1a9ASr3RHaeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d6rA1a9ASr3RHaeJe5afGb/download/d6rA1a9ASr3RHaeJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23359" author="importer" created="Tue, 24 Aug 2010 05:43:00 -0500"  >&lt;p&gt;technomancy said: [&lt;a href=&quot;file:d6rA1a9ASr3RHaeJe5afGb&quot;&gt;file:d6rA1a9ASr3RHaeJe5afGb&lt;/a&gt;]: repro case&lt;/p&gt;</comment>
                    <comment id="23360" author="importer" created="Tue, 24 Aug 2010 05:43:00 -0500"  >&lt;p&gt;chouser@n01se.net said: &lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;((let [x :foo]
     (#^{:once &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;} fn* []
       (&lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt; (#(&lt;span class=&quot;code-keyword&quot;&gt;throw&lt;/span&gt; (Exception.)))
         (&lt;span class=&quot;code-keyword&quot;&gt;catch&lt;/span&gt; Exception e
           (println &lt;span class=&quot;code-quote&quot;&gt;&quot;x:&quot;&lt;/span&gt; x))))))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
The same problem is visible when a &lt;span class=&quot;code-keyword&quot;&gt;finally&lt;/span&gt; clause uses a closed-over:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;  ((let [x :foo]
     (#^{:once &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;} fn* []
       (&lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt; (#(&lt;span class=&quot;code-keyword&quot;&gt;throw&lt;/span&gt; (Exception.)))
         (&lt;span class=&quot;code-keyword&quot;&gt;finally&lt;/span&gt;
           (println &lt;span class=&quot;code-quote&quot;&gt;&quot;x:&quot;&lt;/span&gt; x))))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;
Both of these print x: nil when they should print x: :foo&lt;/p&gt;

&lt;p&gt;I think the problem is that, because the last expr in a try block produces the value that will be returned, it is compiled in a &quot;return&quot; context (a.k.a. tail position), therefore the locals are cleared before calling the final function.&lt;/p&gt;

&lt;p&gt;But if that final call throws an exception, you end up in the catch clause with your locals cleared.&lt;/p&gt;

&lt;p&gt;emitClearLocals protects against this problem by using localsUsedInCatchFinally, but emitClearCloses (used only when :once is true) does not.&lt;/p&gt;

&lt;p&gt;The solution is so very far beyond me.  I guess the simplest might be to skip clearing of closed-overs that are used in catch/finally clauses, but I don&apos;t think those are currently tracked.  It looks like closeOver could be made to track these as well, but I&apos;m lost as to the relationships between the various instances in that code.&lt;/p&gt;</comment>
                    <comment id="23361" author="importer" created="Tue, 24 Aug 2010 05:43:00 -0500"  >&lt;p&gt;danlarkin said: Kevin Downey and I just stumbled on this problem again. Here&apos;s our smallest repro case:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn throwsomething [] (&lt;span class=&quot;code-keyword&quot;&gt;throw&lt;/span&gt; (Exception.)))

(defn foo [bar]
  @(delay (&lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt;
           (throwsomething)
           (&lt;span class=&quot;code-keyword&quot;&gt;catch&lt;/span&gt; Exception e
             (nil? bar)))))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

We came up with two workarounds, one is to wrap everything inside the delay in a let capturing the &lt;span class=&quot;code-quote&quot;&gt;&quot;bar&quot;&lt;/span&gt; scope, like &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;:

&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;
(defn foo [bar]
  @(delay (let [bar bar]
            (&lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt;
             (throwsomething)
             (&lt;span class=&quot;code-keyword&quot;&gt;catch&lt;/span&gt; Exception e
               (nil? bar))))))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

and the other is to not have the exception-throwing call in the tail position, like &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;:

&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;
(defn foo [bar]
  @(delay (&lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt;
           (let [t (throwsomething)]
             t)
           (&lt;span class=&quot;code-keyword&quot;&gt;catch&lt;/span&gt; Exception e
             (nil? bar)))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="23362" author="importer" created="Tue, 24 Aug 2010 05:43:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:93fecbd825c26e2570f8449cd64d0df0cc520c1d&amp;#93;&lt;/span&gt;]) fold closes clearing into the path system, fixes #232&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-231] deftype cons doesn&apos;t support maps</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-231</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The deftype IPersistentMap implementation of cons does not have the same functionality as APersistentMap.cons. The current implementation doesn&apos;t support cons&apos;ing a map.&lt;/p&gt;

&lt;p&gt;See this thread for the original report:&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/d4dd1a0a1ffee6c5#&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/d4dd1a0a1ffee6c5#&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13628">CLJ-231</key>
            <summary>deftype cons doesn&apos;t support maps</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 30 Dec 2009 18:44:00 -0600</created>
                <updated>Tue, 24 Aug 2010 14:43:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 14:43:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23348" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/231&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/231&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
231.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bUooUw9ymr3PgfeJe5aVNr/download/bUooUw9ymr3PgfeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bUooUw9ymr3PgfeJe5aVNr/download/bUooUw9ymr3PgfeJe5aVNr&lt;/a&gt;&lt;br/&gt;
0001-Fixes-the-deftype-ipersistentmap-implementation-of-c.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/deOmiIlsOr36cneJe5aVNr/download/deOmiIlsOr36cneJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/deOmiIlsOr36cneJe5aVNr/download/deOmiIlsOr36cneJe5aVNr&lt;/a&gt;&lt;br/&gt;
0001-Fixes-the-deftype-ipersistentmap-implementation-of-c.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a1cup-ltur34PWeJe5avMc/download/a1cup-ltur34PWeJe5avMc&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a1cup-ltur34PWeJe5avMc/download/a1cup-ltur34PWeJe5avMc&lt;/a&gt;&lt;br/&gt;
make-defrecord-cons-work.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/coEZaItWar36KFeJe5dVir/download/coEZaItWar36KFeJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/coEZaItWar36KFeJe5dVir/download/coEZaItWar36KFeJe5dVir&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23349" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;importer said: [&lt;a href=&quot;file:bUooUw9ymr3PgfeJe5aVNr&quot;&gt;file:bUooUw9ymr3PgfeJe5aVNr&lt;/a&gt;]: A patch to fix the issue&lt;/p&gt;</comment>
                    <comment id="23350" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;richhickey said: Thanks for this. Primitive ops like this need to be coded for performance though, so would need to be tighter in order to be considered.&lt;/p&gt;</comment>
                    <comment id="23351" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;richhickey said: patch does not apply - &lt;/p&gt;

&lt;p&gt;&quot;Patch does not have a valid e-mail address.&quot;&lt;/p&gt;

&lt;p&gt;did you use git format-patch?&lt;/p&gt;</comment>
                    <comment id="23352" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;importer said: [&lt;a href=&quot;file:deOmiIlsOr36cneJe5aVNr&quot;&gt;file:deOmiIlsOr36cneJe5aVNr&lt;/a&gt;]: A second attempt at the patch. This one is as fast as the original java method, and was created with git format-patch&lt;/p&gt;</comment>
                    <comment id="23353" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;importer said: Actually, ignore the second patch, there&apos;s a bug.&lt;/p&gt;</comment>
                    <comment id="23354" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;importer said: [&lt;a href=&quot;file:a1cup-ltur34PWeJe5avMc&quot;&gt;file:a1cup-ltur34PWeJe5avMc&lt;/a&gt;]: This one works, and is fast&lt;/p&gt;</comment>
                    <comment id="23355" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:coEZaItWar36KFeJe5dVir&quot;&gt;file:coEZaItWar36KFeJe5dVir&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23356" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;stu said: patch had gone stale, and had a minor defect handling nil. Apr 23 patch subsumes previous patches and adds tests.&lt;/p&gt;</comment>
                    <comment id="23357" author="importer" created="Tue, 24 Aug 2010 14:43:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#231, #313, #303, #306)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-230] More precise docstring for #&apos;delay</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-230</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Change docstring for #&apos;delay to precise deref forces delays too.&lt;br/&gt;
See &lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/d835fd49d08e48ca&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/d835fd49d08e48ca&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13627">CLJ-230</key>
            <summary>More precise docstring for #&apos;delay</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="cgrand">Christophe Grand</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 23 Dec 2009 20:55:00 -0600</created>
                <updated>Tue, 24 Aug 2010 14:40:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 14:40:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23339" author="importer" created="Tue, 24 Aug 2010 14:40:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/230&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/230&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
delay-doc-230.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/ctaZRO7_0r3OLweJe5aVNr/download/ctaZRO7_0r3OLweJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/ctaZRO7_0r3OLweJe5aVNr/download/ctaZRO7_0r3OLweJe5aVNr&lt;/a&gt;&lt;br/&gt;
0001-change-docstring-for-delay-to-specifiy-that-deref-fo.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/coSAKicYWr34sbeJe5aVNr/download/coSAKicYWr34sbeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/coSAKicYWr34sbeJe5aVNr/download/coSAKicYWr34sbeJe5aVNr&lt;/a&gt;&lt;br/&gt;
ticket230.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/ao-gBWrTqr36P7eJe5d-aX/download/ao-gBWrTqr36P7eJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/ao-gBWrTqr36P7eJe5d-aX/download/ao-gBWrTqr36P7eJe5d-aX&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23340" author="importer" created="Tue, 24 Aug 2010 14:40:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:ctaZRO7_0r3OLweJe5aVNr&quot;&gt;file:ctaZRO7_0r3OLweJe5aVNr&lt;/a&gt;]: patch&lt;/p&gt;</comment>
                    <comment id="23341" author="importer" created="Tue, 24 Aug 2010 14:40:00 -0500"  >&lt;p&gt;richhickey said: This doesn&apos;t look like it is in the right patch format&lt;/p&gt;</comment>
                    <comment id="23342" author="importer" created="Tue, 24 Aug 2010 14:40:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:coSAKicYWr34sbeJe5aVNr&quot;&gt;file:coSAKicYWr34sbeJe5aVNr&lt;/a&gt;]: used &quot;git format-patch&quot; this time&lt;/p&gt;</comment>
                    <comment id="23343" author="importer" created="Tue, 24 Aug 2010 14:40:00 -0500"  >&lt;p&gt;richhickey said: This patch fails to apply&lt;/p&gt;</comment>
                    <comment id="23344" author="importer" created="Tue, 24 Aug 2010 14:40:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:ao-gBWrTqr36P7eJe5d-aX&quot;&gt;file:ao-gBWrTqr36P7eJe5d-aX&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23345" author="importer" created="Tue, 24 Aug 2010 14:40:00 -0500"  >&lt;p&gt;cgrand said: recreated patch from a fresh checkout of Clojure&apos;s master branch&lt;/p&gt;</comment>
                    <comment id="23346" author="importer" created="Tue, 24 Aug 2010 14:40:00 -0500"  >&lt;p&gt;cgrand said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:92e9c2d76f6b8d86789bc69496596a98d8b67228&amp;#93;&lt;/span&gt;]) change docstring for delay to specifiy that deref forces. See #230&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="23347" author="importer" created="Tue, 24 Aug 2010 14:40:00 -0500"  >&lt;p&gt;stu said: Updating tickets (#230, #243)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-222] line-seq returns element only when successive line is read</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-222</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The &lt;tt&gt;lazy-seq&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;line-seq&amp;lt;/code&amp;gt; wraps the call to &amp;lt;code&amp;gt;cons&amp;lt;/code&amp;gt; but not the &amp;lt;code&amp;gt;readLine()&lt;/tt&gt;, which delays each line of the reader from being returned until the next one is read.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/e0d6efd53187ea09&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/e0d6efd53187ea09&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13619">CLJ-222</key>
            <summary>line-seq returns element only when successive line is read</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="drewr">Drew Raines</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Mon, 14 Dec 2009 13:58:00 -0600</created>
                <updated>Tue, 24 Aug 2010 05:34:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 05:34:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23315" author="importer" created="Tue, 24 Aug 2010 05:34:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/222&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/222&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
issue-222-line-seq.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aR53uY6Pmr3QNNeJe5afGb/download/aR53uY6Pmr3QNNeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aR53uY6Pmr3QNNeJe5afGb/download/aR53uY6Pmr3QNNeJe5afGb&lt;/a&gt;&lt;br/&gt;
issue-222-star-seq.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aIK31O6ZKr3PcSeJe5aVNr/download/aIK31O6ZKr3PcSeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aIK31O6ZKr3PcSeJe5aVNr/download/aIK31O6ZKr3PcSeJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23316" author="importer" created="Tue, 24 Aug 2010 05:34:00 -0500"  >&lt;p&gt;drewr said: [&lt;a href=&quot;file:aR53uY6Pmr3QNNeJe5afGb&quot;&gt;file:aR53uY6Pmr3QNNeJe5afGb&lt;/a&gt;]: Return readLine() before lazy-seq&lt;/p&gt;</comment>
                    <comment id="23317" author="importer" created="Tue, 24 Aug 2010 05:34:00 -0500"  >&lt;p&gt;drewr said: I didn&apos;t see a problem with the other &lt;tt&gt;*-seq&lt;/tt&gt; fns, but I could be wrong.&lt;/p&gt;</comment>
                    <comment id="23318" author="importer" created="Tue, 24 Aug 2010 05:34:00 -0500"  >&lt;p&gt;drewr said: [&lt;a href=&quot;file:aIK31O6ZKr3PcSeJe5aVNr&quot;&gt;file:aIK31O6ZKr3PcSeJe5aVNr&lt;/a&gt;]: Patch other two *-seq fns same way&lt;/p&gt;</comment>
                    <comment id="23319" author="importer" created="Tue, 24 Aug 2010 05:34:00 -0500"  >&lt;p&gt;drewr said: I added a patch which alters &lt;tt&gt;resultset-seq&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;re-seq&amp;lt;/code&amp;gt; so that they don&apos;t require a successive element to be consumed before returning current.  However, these fns now return a &amp;lt;code&amp;gt;Cons&lt;/tt&gt; as the first element.  Assuming that&apos;s not an issue, then these changes should work.&lt;/p&gt;</comment>
                    <comment id="23320" author="importer" created="Tue, 24 Aug 2010 05:34:00 -0500"  >&lt;p&gt;drewr said: My apologies, &quot;return a &lt;tt&gt;Cons&amp;lt;/code&amp;gt; as the first element&quot; is not correct.  I mean that they return a &amp;lt;code&amp;gt;Cons&amp;lt;/code&amp;gt; &lt;em&gt;first&lt;/em&gt;, then &amp;lt;code&amp;gt;lazy-seq&amp;lt;/code&amp;gt;s forward.  Since a &amp;lt;code&amp;gt;Cons&lt;/tt&gt; is seqable, I&apos;m thinking it won&apos;t be an issue.&lt;/p&gt;</comment>
                    <comment id="23321" author="importer" created="Tue, 24 Aug 2010 05:34:00 -0500"  >&lt;p&gt;drewr said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:2855e34106b2cacd4614f2b7e31f1536b4b849bc&amp;#93;&lt;/span&gt;]) Move cons outside of lazy-seq for *-seq fns; fixes #222.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Chouser &amp;lt;chouser@n01se.net&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-220] Adding more test cases for clojure set</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-220</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Expanded the test cases to also test&lt;br/&gt;
difference&lt;br/&gt;
select&lt;br/&gt;
project&lt;br/&gt;
rename-keys&lt;br/&gt;
index&lt;br/&gt;
map-invert&lt;br/&gt;
join&lt;/p&gt;

&lt;p&gt;Attached is the patch file.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13617">CLJ-220</key>
            <summary>Adding more test cases for clojure set</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="importer">Assembla Importer</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 11 Dec 2009 00:47:00 -0600</created>
                <updated>Tue, 24 Aug 2010 08:31:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:31:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23308" author="importer" created="Tue, 24 Aug 2010 08:31:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/220&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/220&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
add-more-test-for-set.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c7bILu5HGr3QaYeJe5afGb/download/c7bILu5HGr3QaYeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c7bILu5HGr3QaYeJe5afGb/download/c7bILu5HGr3QaYeJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23309" author="importer" created="Tue, 24 Aug 2010 08:31:00 -0500"  >&lt;p&gt;chouser@n01se.net said: Applies cleanly to master.  Adds 8 tests that all pass.&lt;/p&gt;

&lt;p&gt;Looks good to me.&lt;/p&gt;

&lt;p&gt;--Chouser&lt;/p&gt;</comment>
                    <comment id="23310" author="importer" created="Tue, 24 Aug 2010 08:31:00 -0500"  >&lt;p&gt;importer said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:caaa0f4c96ddf43b6bbe3d760f49701c3f183783&amp;#93;&lt;/span&gt;]) adding more tests for set  Fixes #220&lt;/p&gt;

&lt;p&gt;Signed-off-by: Chouser &amp;lt;chouser@n01se.net&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-204] clojure.test/thrown-with-msg? uses re-match, should use re-find</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-204</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;By the time exceptions percolate up to clojure.test, they are often decorated by additional levels of RuntimeException, thus the message being matched is usually &quot;java.lang.RuntimeException: My error message&quot;.  I end up always having to prefix my re with &quot;.*&quot;.  If I want to match the entire message, RE&apos;s allow that using ^.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13601">CLJ-204</key>
            <summary>clojure.test/thrown-with-msg? uses re-match, should use re-find</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stuart.sierra">Stuart Sierra</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 21 Oct 2009 09:14:00 -0500</created>
                <updated>Tue, 24 Aug 2010 04:54:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 04:54:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23236" author="importer" created="Tue, 24 Aug 2010 04:54:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/204&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/204&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
fix204-1.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d2LE6U3Pqr3OLfeJe5aVNr/download/d2LE6U3Pqr3OLfeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d2LE6U3Pqr3OLfeJe5aVNr/download/d2LE6U3Pqr3OLfeJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23237" author="importer" created="Tue, 24 Aug 2010 04:54:00 -0500"  >&lt;p&gt;stuart.sierra said: [&lt;a href=&quot;file:d2LE6U3Pqr3OLfeJe5aVNr&quot;&gt;file:d2LE6U3Pqr3OLfeJe5aVNr&lt;/a&gt;]: patch&lt;/p&gt;</comment>
                    <comment id="23238" author="importer" created="Tue, 24 Aug 2010 04:54:00 -0500"  >&lt;p&gt;stuart.sierra said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:634b3d535a13509efca07d8cbfb7f11ff2792a76&amp;#93;&lt;/span&gt;]) Use re-find (not re-matches) in thrown-with-msg?; fixes #204&lt;/p&gt;

&lt;p&gt;Signed-off-by: Chouser &amp;lt;chouser@n01se.net&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-198] attr-map argument for clojure.core/ns</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-198</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Discussion: &lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/97ffdb1d89c0f847&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/97ffdb1d89c0f847&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The clojure.core/ns macro should have an attr-map argument like defn and defmulti. For example:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(ns example
  {:author &lt;span class=&quot;code-quote&quot;&gt;&quot;John Doe&quot;&lt;/span&gt;
   :email &lt;span class=&quot;code-quote&quot;&gt;&quot;jdoe@example.com&quot;&lt;/span&gt;}
  (:use clojure.contrib.def))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13595">CLJ-198</key>
            <summary>attr-map argument for clojure.core/ns</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="jreeves">James Reeves</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 17 Oct 2009 09:05:00 -0500</created>
                <updated>Tue, 24 Aug 2010 04:51:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 04:51:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23216" author="importer" created="Tue, 24 Aug 2010 04:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/198&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/198&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
ns-attr-map.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cMA1GOWjOr3RwUeJe5aVNr/download/cMA1GOWjOr3RwUeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cMA1GOWjOr3RwUeJe5aVNr/download/cMA1GOWjOr3RwUeJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23217" author="importer" created="Tue, 24 Aug 2010 04:51:00 -0500"  >&lt;p&gt;jreeves said: [&lt;a href=&quot;file:cMA1GOWjOr3RwUeJe5aVNr&quot;&gt;file:cMA1GOWjOr3RwUeJe5aVNr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23218" author="importer" created="Tue, 24 Aug 2010 04:51:00 -0500"  >&lt;p&gt;jreeves said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:c2e75b8d668f1609436f8a8f0f722e8df6d03f11&amp;#93;&lt;/span&gt;]) Added optional attr-map argument to ns macro, fixes #198&lt;/p&gt;

&lt;p&gt;Signed-off-by: Chouser &amp;lt;chouser@n01se.net&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="23219" author="importer" created="Tue, 24 Aug 2010 04:51:00 -0500"  >&lt;p&gt;chouser@n01se.net said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:1186fe50804195f961d38cb7eab1bad2abb3a513&amp;#93;&lt;/span&gt;]) Fix &apos;ns&apos; macro arglist doc.  Refs #198&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-162] gen-class fails to accept type hints for arrays of primitives</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-162</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;gen-class fails to accept type hints for arrays of primitives like &quot;[B&quot;&lt;/p&gt;

&lt;p&gt;This is a bug in genclass.clj&apos;s the-class, which should have (some #{\. \[} strx) instead of (some #{\.} strx)&lt;/p&gt;</description>
                <environment></environment>
            <key id="13559">CLJ-162</key>
            <summary>gen-class fails to accept type hints for arrays of primitives</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="mattrevelle">Matt Revelle</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 28 Jul 2009 05:38:00 -0500</created>
                <updated>Tue, 24 Aug 2010 04:03:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 04:03:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23045" author="importer" created="Tue, 24 Aug 2010 04:03:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/162&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/162&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Fixed-162-gen-class-fails-to-accept-type-hints-for-a.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/daM8sM3sar3Ok0eJe5aVNr/download/daM8sM3sar3Ok0eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/daM8sM3sar3Ok0eJe5aVNr/download/daM8sM3sar3Ok0eJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23046" author="importer" created="Tue, 24 Aug 2010 04:03:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #42, #113, #2, #20, #94, #96, #104, #119, #124, #127, #149, #162)&lt;/p&gt;</comment>
                    <comment id="23047" author="importer" created="Tue, 24 Aug 2010 04:03:00 -0500"  >&lt;p&gt;mattrevelle said: [&lt;a href=&quot;file:daM8sM3sar3Ok0eJe5aVNr&quot;&gt;file:daM8sM3sar3Ok0eJe5aVNr&lt;/a&gt;]: Adding [ to skip prepending of &quot;java.lang&quot;&lt;/p&gt;</comment>
                    <comment id="23048" author="importer" created="Tue, 24 Aug 2010 04:03:00 -0500"  >&lt;p&gt;mattrevelle said: The fix recommended by Rich seems to work.  &lt;/p&gt;

&lt;p&gt;It was as simple as adding [ to the conditional expression.&lt;/p&gt;</comment>
                    <comment id="23049" author="importer" created="Tue, 24 Aug 2010 04:03:00 -0500"  >&lt;p&gt;mattrevelle said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:493b8f25dea8dc316f5224509d09a50c0672a1eb&amp;#93;&lt;/span&gt;]) Fixed #162: gen-class fails to accept type hints for arrays of primitives. Rich&apos;s proposed fix works fine.&lt;/p&gt;

&lt;p&gt;Signed-off-by: Chouser &amp;lt;chouser@n01se.net&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-145] clojure.set/rename-keys doesn&apos;t do what it says it should</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-145</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;user=&amp;gt; (doc rename-keys)&lt;br/&gt;
-------------------------&lt;br/&gt;
clojure.set/rename-keys&lt;br/&gt;
(&lt;span class=&quot;error&quot;&gt;&amp;#91;map kmap&amp;#93;&lt;/span&gt;)&lt;br/&gt;
  Returns the map with the keys in kmap renamed to the vals in kmap&lt;br/&gt;
nil&lt;/p&gt;

&lt;p&gt;I expect the return value to be a map of the same size as the first input, with its keys being those in the first input other than those which are substituted according to the second. That is not what occurs:&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (rename-keys {:foo 1 :bar 2} {:foo :new-foo :zob :new-zob})&lt;br/&gt;
{:new-zob nil, :new-foo 1, :bar 2}&lt;/p&gt;

&lt;p&gt;Tested against a1397390d8b3b63f2039359520629d87b152d717 (current at time of filing).&lt;/p&gt;</description>
                <environment></environment>
            <key id="13542">CLJ-145</key>
            <summary>clojure.set/rename-keys doesn&apos;t do what it says it should</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="chouser@n01se.net">Chouser</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Mon, 6 Jul 2009 16:52:00 -0500</created>
                <updated>Tue, 24 Aug 2010 06:52:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:52:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22972" author="importer" created="Tue, 24 Aug 2010 06:52:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/145&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/145&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
patch-issue145.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d8vdtEbFyr36hUeJe5aVNr/download/d8vdtEbFyr36hUeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d8vdtEbFyr36hUeJe5aVNr/download/d8vdtEbFyr36hUeJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22973" author="importer" created="Tue, 24 Aug 2010 06:52:00 -0500"  >&lt;p&gt;rnewman said: [&lt;a href=&quot;file:d8vdtEbFyr36hUeJe5aVNr&quot;&gt;file:d8vdtEbFyr36hUeJe5aVNr&lt;/a&gt;]: One-line fix.&lt;/p&gt;</comment>
                    <comment id="22974" author="importer" created="Tue, 24 Aug 2010 06:52:00 -0500"  >&lt;p&gt;rnewman said: This is still biting me a little, so here&apos;s a one-line fix.&lt;/p&gt;</comment>
                    <comment id="22975" author="importer" created="Tue, 24 Aug 2010 06:52:00 -0500"  >&lt;p&gt;chouser@n01se.net said: Richard, would you please use git to format your patch as described here: &lt;a href=&quot;http://clojure.org/patches&quot;&gt;http://clojure.org/patches&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br/&gt;
--Chouser&lt;/p&gt;</comment>
                    <comment id="22976" author="importer" created="Tue, 24 Aug 2010 06:52:00 -0500"  >&lt;p&gt;rnewman said: Done. Sorry about that!&lt;/p&gt;</comment>
                    <comment id="22977" author="importer" created="Tue, 24 Aug 2010 06:52:00 -0500"  >&lt;p&gt;richhickey said: Thanks for the patch. FYI, the tests needed patching too.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-119] GC  Issue 115: Document that #^chars works</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-119</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by hlship, May 05, 2009

In the Java Interop documentation, it identifies a number of special tags
that can be used to identify parameters of primitive arrays.

It does not list #^chars (equivalent to &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt;[]) but &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; appears to (at
least partially) work.

On a related note, &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; code:

(def #^StringBuilder *buffer*)

(defn- add-text
  &lt;span class=&quot;code-quote&quot;&gt;&quot;Adds text to the buffer and manages the *text-location* &lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;.&quot;&lt;/span&gt;
  [#^chars ch start length]
  (.append *buffer* ch start length)  ;;;; line 98
  (when (nil? *text-location*)
        (set! *text-location* (current-location))))


I still get 

Reflection warning,
com/howardlewisship/cascade/internal/xmltokenizer.clj:98 - call to append
can&apos;t be resolved.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13516">CLJ-119</key>
            <summary>GC  Issue 115: Document that #^chars works</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 14:18:00 -0500</created>
                <updated>Tue, 24 Aug 2010 03:45:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 03:45:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22816" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/119&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/119&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22817" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22818" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;troussan said: The reflection warning in the example code is caused by start and length parameters. If you replace the line 98 with:&lt;br/&gt;
      (.append &lt;b&gt;buffer&lt;/b&gt; ch (int start) (int length))  ;;;; line 98&lt;br/&gt;
the call to append is resolved.&lt;/p&gt;</comment>
                    <comment id="22819" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #42, #113, #2, #20, #94, #96, #104, #119, #124, #127, #149, #162)&lt;/p&gt;</comment>
                    <comment id="22820" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#94, #96, #104, #119, #163)&lt;/p&gt;</comment>
                    <comment id="22821" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;stu said: To prevent the reflection warning, use primitive coercions as needed:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(.append *buffer* ch start length)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I have update the docs on clojure.org.&lt;/p&gt;</comment>
                    <comment id="22822" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;stu said: repeating the previous comment, with the coercions this time. &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(.append *buffer* ch (&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; start) (&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; length))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-104] GC Issue 100: gen-class creating non-compliant field names</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-104</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by solkis, Apr 04, 2009

The defect was described in &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; clojure group post by Michael Reid: 

http:&lt;span class=&quot;code-comment&quot;&gt;//groups.google.com/group/clojure/browse_thread/thread/e64719d716c29ce0
&lt;/span&gt;
It appears that IBM JVMs have more stringent field name checking than &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt;
the Sun JVMs.

Classes generated by gen-class and executing on IBM JVMs used with the
WebSphere Application Server require the basic fix outlined in the patch on
the thread above or the following error will result:

java.lang.ClassFormatError: JVMCFRE114 field name is invalid;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13501">CLJ-104</key>
            <summary>GC Issue 100: gen-class creating non-compliant field names</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 13:56:00 -0500</created>
                <updated>Tue, 24 Aug 2010 03:45:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 03:45:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22768" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/104&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/104&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
use-underscore-instead-of-dash-104.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cNfYU0r9qr348xeJe5d-aX/download/cNfYU0r9qr348xeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cNfYU0r9qr348xeJe5d-aX/download/cNfYU0r9qr348xeJe5d-aX&lt;/a&gt;&lt;br/&gt;
munge-genclass-field-names-104.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/akvHectnCr37JQeJe5dVir/download/akvHectnCr37JQeJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/akvHectnCr37JQeJe5dVir/download/akvHectnCr37JQeJe5dVir&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22769" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #42, #113, #2, #20, #94, #96, #104, #119, #124, #127, #149, #162)&lt;/p&gt;</comment>
                    <comment id="22770" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#94, #96, #104, #119, #163)&lt;/p&gt;</comment>
                    <comment id="22771" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:cNfYU0r9qr348xeJe5d-aX&quot;&gt;file:cNfYU0r9qr348xeJe5d-aX&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22772" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:akvHectnCr37JQeJe5dVir&quot;&gt;file:akvHectnCr37JQeJe5dVir&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22773" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;stu said: Disregard the April 14 patch, and please take a look at the April 20 patch (which includes tests).&lt;/p&gt;</comment>
                    <comment id="22774" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;stu said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:084e5604710eb16df43ad529adabf18f40795bf9&amp;#93;&lt;/span&gt;]) munge genclass field names to keep Java side happy, see #104&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-96] GC  Issue 92:    Check for key identity in collections</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-96</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by chouser, Mar 09, 2009

Describe the feature/change.

Clojure code routes key lookups through
clojure.lang.Util.equiv()/equals(), which &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; an identity check.

Using the collections from outside Clojure may to more expensive
comparisons even on identical objects, so each collection should also
&lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; an identity check.

Was &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; discussed on the group? If so, please provide a link to the
discussion:

http:&lt;span class=&quot;code-comment&quot;&gt;//groups.google.com/group/clojure/msg/6a2e491fcf564a68&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13493">CLJ-96</key>
            <summary>GC  Issue 92:    Check for key identity in collections</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="cgrand">Christophe Grand</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 16:44:00 -0500</created>
                <updated>Tue, 24 Aug 2010 06:45:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:45:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22746" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/96&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/96&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Check-for-identity-before-equality-in-.equals-for-co.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/ch_3rOrUir36rbeJe5d-aX/download/ch_3rOrUir36rbeJe5d-aX&quot;&gt;https://www.assembla.com/spaces/clojure/documents/ch_3rOrUir36rbeJe5d-aX/download/ch_3rOrUir36rbeJe5d-aX&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22747" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22748" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #42, #113, #2, #20, #94, #96, #104, #119, #124, #127, #149, #162)&lt;/p&gt;</comment>
                    <comment id="22749" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#94, #96, #104, #119, #163)&lt;/p&gt;</comment>
                    <comment id="22750" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:ch_3rOrUir36rbeJe5d-aX&quot;&gt;file:ch_3rOrUir36rbeJe5d-aX&lt;/a&gt;]: patch&lt;/p&gt;</comment>
                    <comment id="22751" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;cgrand said: Add identity check to .equals in gvec, ASeq, APersistentVector, APersistentSet and APersistentMap.&lt;/p&gt;</comment>
                    <comment id="22752" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;cgrand said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:ee9fc81dd2ef15d7ea3e17e7ec2370c5c09d633e&amp;#93;&lt;/span&gt;]) Check for identity before equality in .equals for collections, see #96&lt;/p&gt;

&lt;p&gt;Signed-off-by: Stuart Halloway &amp;lt;stu@thinkrelevance.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-94] GC  Issue 90:    Support metadata on fns</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-94</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by richhickey, Mar 04, 2009

Requires dealing with the with-meta copying issues &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; closures&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13491">CLJ-94</key>
            <summary>GC  Issue 90:    Support metadata on fns</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 16:43:00 -0500</created>
                <updated>Tue, 24 Aug 2010 06:45:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:45:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22739" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/94&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/94&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22740" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #42, #113, #2, #20, #94, #96, #104, #119, #124, #127, #149, #162)&lt;/p&gt;</comment>
                    <comment id="22741" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#94, #96, #104, #119, #163)&lt;/p&gt;</comment>
                    <comment id="22742" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Child&lt;/b&gt; association with ticket #245 was added&lt;/p&gt;</comment>
                    <comment id="22743" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: &lt;b&gt;Child&lt;/b&gt; association with ticket #245 was removed&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-30] GC Issue 26: agent error queue</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-30</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by richhickey, Jan 01, 2009
Route agent errors to a queue

Comment 1 by chouser, May 26, 2009
The attached patch allows agents to have an error-callback, which could be used to
route errors to one or more queues.

Example usage:

user=&amp;gt; (send-off (agent nil
                   :error-callback (fn [a es]
                                     (.printStackTrace (first es))
                                     (clear-agent-errors a)))
                 (fn f [_]
                   (&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;/sleep 1000)
                   (send-off *agent* f)))
#&amp;lt;Agent@5dd2b9b7: nil&amp;gt;
user=&amp;gt; (shutdown-agents)
nil
user=&amp;gt;
java.lang.RuntimeException: Error executing action user$eval__394$f__399@63d87b85
        at clojure.lang.Agent$Action.execute(Agent.java:63)
        at clojure.lang.Agent$Action.doRun(Agent.java:107)
        at clojure.lang.Agent$Action.run(Agent.java:118)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.run(&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.java:619)
Caused by: java.util.concurrent.RejectedExecutionException
        at
java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1760)
        at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
        at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
        at clojure.lang.Agent$Action.execute(Agent.java:57)
        ... 5 more

 error-callback.patch
3.9 KB Download&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13427">CLJ-30</key>
            <summary>GC Issue 26: agent error queue</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="chouser@n01se.net">Chouser</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 00:06:00 -0500</created>
                <updated>Tue, 24 Aug 2010 03:44:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 03:44:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22537" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/30&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/30&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
error-callback.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dY6WBiw3er3R14eJe5aVNr/download/dY6WBiw3er3R14eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dY6WBiw3er3R14eJe5aVNr/download/dY6WBiw3er3R14eJe5aVNr&lt;/a&gt;&lt;br/&gt;
agent-error-handler-v1.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cwEwcA_RSr3RpIeJe5aVNr/download/cwEwcA_RSr3RpIeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cwEwcA_RSr3RpIeJe5aVNr/download/cwEwcA_RSr3RpIeJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22538" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;cemerick said: [&lt;a href=&quot;file:dY6WBiw3er3R14eJe5aVNr&quot;&gt;file:dY6WBiw3er3R14eJe5aVNr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22539" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22540" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;richhickey said: could you please name them set/get-agent-error-callback and mark them as experimental? thanks&lt;/p&gt;</comment>
                    <comment id="22541" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;richhickey said: &amp;lt;pre&amp;gt;could you please name them set/get-agent-error-callback and mark them as experimental? thanks&amp;gt;&amp;lt;/pre&amp;gt;&lt;/p&gt;</comment>
                    <comment id="22542" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;richhickey said: &lt;tt&gt;could you please name them set/get-agent-error-callback and mark them as experimental? thanks&lt;/tt&gt;&lt;/p&gt;</comment>
                    <comment id="22543" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;chouser@n01se.net said: &amp;lt;pre&amp;gt;I was under the impression this patch had some significant&lt;br/&gt;
flaws:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://clojure-log.n01se.net/date/2009-05-26.html#11:22-11:50&quot;&gt;http://clojure-log.n01se.net/date/2009-05-26.html#11:22-11:50&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Specific issues:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;error handlers using clear-agent-errors&lt;/li&gt;
	&lt;li&gt;the error being a seq instead of a single error&lt;/li&gt;
	&lt;li&gt;no way for the handler to know what the action or action&lt;br/&gt;
   args were (needed to re-run the action)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Is marking this as &quot;experimental&quot; sufficient to cover those&lt;br/&gt;
issues for now?&amp;lt;/pre&amp;gt;&lt;/p&gt;</comment>
                    <comment id="22544" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;richhickey said: &amp;lt;pre&amp;gt;&lt;br/&gt;
I agree this still needs work, but would be nice to get it in people&apos;s hands&lt;br/&gt;
to get some feedback.&lt;/p&gt;

&lt;p&gt;I guess don&apos;t mark it fixed until we are happy with it? Or, we could create a branch&lt;br/&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;</comment>
                    <comment id="22545" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;richhickey said: We need to finesse this a bit or pull for 1.1. I&apos;m not sure anyone is using it, so we&apos;ve had no feedback. I don&apos;t want to marry the error seq, so how about just simply:&lt;/p&gt;

&lt;p&gt;agent + exception&lt;br/&gt;
clear-agent-errors is not ok in a handler&lt;br/&gt;
mark as experimental - subject to change&lt;/p&gt;</comment>
                    <comment id="22546" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;chouser@n01se.net said: A proposed solution is discussed here:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.assembla.com/wiki/show/clojure/Agent_exception_handlers&quot;&gt;http://www.assembla.com/wiki/show/clojure/Agent_exception_handlers&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22547" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;chouser@n01se.net said: [&lt;a href=&quot;file:cwEwcA_RSr3RpIeJe5aVNr&quot;&gt;file:cwEwcA_RSr3RpIeJe5aVNr&lt;/a&gt;]: Implementation of :error-handler proposal &amp;#8211; still needs docstrings and more testing, but code should be complete.&lt;/p&gt;</comment>
                    <comment id="22548" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;chouser@n01se.net said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:b63af1ad6ce38b50552be3c424ea166cb063ee7c&amp;#93;&lt;/span&gt;]) Add agent error handlers and error modes :fail and :continue. Fixes #30&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-20] GC Issue 16: Pretty printing</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-20</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by richhickey, Dec 17, 2008
A rudimentary pprint
Some efforts have been posted to group, no consensus yet&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13417">CLJ-20</key>
            <summary>GC Issue 16: Pretty printing</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="tomfaulhaber">Tom Faulhaber</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 14:58:00 -0500</created>
                <updated>Tue, 24 Aug 2010 06:44:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:44:00 -0500</resolved>
                                            <fixVersion>Release 1.2</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22510" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/20&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/20&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
add-pprint.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aPTaMOvS8r36QjeJe5cbCb/download/aPTaMOvS8r36QjeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aPTaMOvS8r36QjeJe5cbCb/download/aPTaMOvS8r36QjeJe5cbCb&lt;/a&gt;&lt;br/&gt;
add-pprint.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aXqnnYvS8r3630eJe5cbLA/download/aXqnnYvS8r3630eJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aXqnnYvS8r3630eJe5cbLA/download/aXqnnYvS8r3630eJe5cbLA&lt;/a&gt;&lt;br/&gt;
verify-added-metadata-for-pprint-api.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dtjKrQvVCr36mfeJe5cbLr/download/dtjKrQvVCr36mfeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dtjKrQvVCr36mfeJe5cbLr/download/dtjKrQvVCr36mfeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22511" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;richhickey said: Should now be - move pprint to clojure.jar&lt;/p&gt;</comment>
                    <comment id="22512" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #42, #113, #2, #20, #94, #96, #104, #119, #124, #127, #149, #162)&lt;/p&gt;</comment>
                    <comment id="22513" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;tomfaulhaber said: We&apos;ll address this by moving the version of pprint from contrib into clojure for 1.2.&lt;/p&gt;

&lt;p&gt;The plan is:&lt;/p&gt;

&lt;p&gt;1.  Remove the gen-class requirement from pprint (see ticket 81 in clojure)&lt;/p&gt;

&lt;p&gt;2. Create a branch of clojure that includes:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;The clojure.contrib.pprint tree less the examples directory (I&apos;ll put these in their own github project for the moment).&lt;/li&gt;
	&lt;li&gt;A new doc directory for the supporting docs that get picked up by autodoc (this is broken right now, but I&apos;m about to fix it).&lt;/li&gt;
	&lt;li&gt;tests moved from contrib to clojure tests&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;3. Create a patch that matches my branch. Add it to the ticket.&lt;/p&gt;

&lt;p&gt;4. Commit the patch once it&apos;s reviewed&lt;/p&gt;

&lt;p&gt;5. Update contrib to point back to clojure with the appropriate deprecation warnings.&lt;/p&gt;</comment>
                    <comment id="22514" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;tomfaulhaber said: [&lt;a href=&quot;file:aPTaMOvS8r36QjeJe5cbCb&quot;&gt;file:aPTaMOvS8r36QjeJe5cbCb&lt;/a&gt;]: The patch that add clojure.pprint&lt;/p&gt;</comment>
                    <comment id="22515" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;tomfaulhaber said: [&lt;a href=&quot;file:aXqnnYvS8r3630eJe5cbLA&quot;&gt;file:aXqnnYvS8r3630eJe5cbLA&lt;/a&gt;]: The patch that adds clojure.pprint&lt;/p&gt;</comment>
                    <comment id="22516" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:dtjKrQvVCr36mfeJe5cbLr&quot;&gt;file:dtjKrQvVCr36mfeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22517" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;stu said: The following vars are the doc&apos;ed, public API. These are the same as contrib, minus earmuffs on code-dispatch and simple-dispatch.&lt;/p&gt;


&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;*print-base*
*print-miser-width*
*print-pprint-dispatch*
*print-pretty*
*print-radix*
*print-right-margin*
*print-suppress-namespaces*
cl-format
code-dispatch
formatter
formatter-out
fresh-line
get-pretty-writer
pp
pprint
pprint-indent
pprint-logical-block
pprint-newline
pprint-tab
set-pprint-dispatch
simple-dispatch
with-pprint-dispatch
write
write-out&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="22518" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;stu said: Tom&apos;s patch looks good. My patch simply adds a test for :added metadata. &lt;/p&gt;

&lt;p&gt;Don&apos;t forget: We&apos;ll need a separate code change to refer some vars at the repl.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>
</channel>
</rss>