<!--
RSS generated by JIRA (4.4#649-r158309) at Sat May 18 22:43:31 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+resolution+%3D+Unresolved+AND+assignee+%3D+%22jim.blomo%22+ORDER+BY+priority+DESC&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+resolution+%3D+Unresolved+AND+assignee+%3D+%22jim.blomo%22+ORDER+BY+priority+DESC</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="4" total="4"/>
                <build-info>
            <version>4.4</version>
            <build-number>649</build-number>
            <build-date>25-07-2011</build-date>
        </build-info>
<item>
            <title>[CLJ-248] Add support for subsets and submaps to sorted Sets/Maps</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-248</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Currently we can have a subseq of a sorted-set|map-by, but this returns a seq and&lt;br/&gt;
not a Set or Map.&lt;br/&gt;
Implementing the interfaces java.util.SortedSet and java.util.SortedMap would give&lt;br/&gt;
us support for calling .subSet and .subMap.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13645">CLJ-248</key>
            <summary>Add support for subsets and submaps to sorted Sets/Maps</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="jim.blomo">Jim Blomo</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 27 Jan 2010 05:52:00 -0600</created>
                <updated>Sat, 2 Jun 2012 19:08:44 -0500</updated>
                                                    <fixVersion>Approved Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="23413" author="importer" created="Tue, 24 Aug 2010 06:05:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/248&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/248&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23414" author="importer" created="Tue, 24 Aug 2010 06:05:00 -0500"  >&lt;p&gt;awizzard said: Another nice addition could be &lt;a href=&quot;http://java.sun.com/javase/6/docs/api/java/util/NavigableMap.html&quot;&gt;java.util.NavigableMap&lt;/a&gt;, though this is available only since Java 6.&lt;/p&gt;</comment>
                    <comment id="28444" author="jim.blomo" created="Fri, 11 May 2012 01:13:12 -0500"  >&lt;p&gt;SortedSet-SortedMap-interfaces-248.diff 2012-05-10 is a first pass at the SortedMap interface.  If there are no objections, I&apos;ll build on the SortedMap implementation to add SortedSet support.&lt;/p&gt;</comment>
                    <comment id="28517" author="jim.blomo" created="Fri, 18 May 2012 00:33:57 -0500"  >&lt;p&gt;SortedMap-interfaces-248.diff 2012-05-10 supersedes the last diff.  It implements and tests the SortedMap interface.&lt;/p&gt;

&lt;p&gt;Additionally it includes tests for `sorted-map`, which didn&apos;t seem to be tested yet.&lt;/p&gt;</comment>
                    <comment id="28519" author="jim.blomo" created="Fri, 18 May 2012 01:56:15 -0500"  >&lt;p&gt;SortedMap-SortedSet-interfaces-248.diff 2012-05-18 supersedes the last diff.  It implements and tests both SortedMap and SortedSet.&lt;/p&gt;

&lt;p&gt;(Concurrent)NavigableMap is not implemented because I think 1.5 is still targeted.  In any case, it probably should have its own ticket.&lt;/p&gt;</comment>
                    <comment id="28595" author="jafingerhut" created="Thu, 24 May 2012 22:25:04 -0500"  >&lt;p&gt;clj-248-SortedMap-SortedSet-interfaces-patch2.txt dated May 24, 2012 is simply an updated version of SortedMap-SortedSet-interfaces-248.diff dated May 17, 2012.  The latter patch no longer applied cleanly.&lt;/p&gt;

&lt;p&gt;The new patch combines what was internally multiple git commits into one, simply because it was easier for me to create the patch that way.  I left out the addition of *.swp and *.swo files to the .gitignore file.  Builds and tests cleanly on Oracle/Apple JDK 1.6 on Mac OS X 10.6.8.&lt;/p&gt;</comment>
                    <comment id="28597" author="jafingerhut" created="Fri, 25 May 2012 00:27:31 -0500"  >&lt;p&gt;I don&apos;t know why Priority changed to Blocker when I changed Patch to &quot;Code and Test&quot;.  I didn&apos;t try to do that &amp;#8211; suspect that something with the web UI is doing that automatically somehow.&lt;/p&gt;</comment>
                    <comment id="28686" author="jim.blomo" created="Sat, 2 Jun 2012 19:08:44 -0500"  >&lt;p&gt;Added &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-1008&quot; title=&quot;Make sorted maps and sets implement j.u.NavigableMap and NavigableSet interfaces &quot;&gt;CLJ-1008&lt;/a&gt; for NavigableMap interface enhancement.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11255" name="clj-248-SortedMap-SortedSet-interfaces-patch2.txt" size="19029" author="jafingerhut" created="Thu, 24 May 2012 22:25:04 -0500" />
                    <attachment id="11226" name="SortedMap-SortedSet-interfaces-248.diff" size="41027" author="jim.blomo" created="Fri, 18 May 2012 01:56:15 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-862] pmap level of parallelism inconsistent for chunked vs non-chunked input</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-862</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The code of pmap creates futures for the set of map operations it needs to perform with (map #(future %) coll), then acts on that sequence in a fashion obviously intended to keep only #CPUs+2 unfinished futures realized at any given time.  It works exactly this way for non-chunked input seqs, but when pmap is passed a chunked seq, the seq of futures also becomes chunked.  This causes an arbitrary number of futures to be realized as the #CPUs+2 window and chunk-size window interact.&lt;/p&gt;

&lt;p&gt;The doc-string for pmap doesn&apos;t promise any particular level of parallelism, but I think the inconsistent parallelism for chunked vs non-chunked input comprises a bug.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14805">CLJ-862</key>
            <summary>pmap level of parallelism inconsistent for chunked vs non-chunked input</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="jim.blomo">Jim Blomo</assignee>
                                <reporter username="llasram">Marshall T. Vandegrift</reporter>
                        <labels>
                    </labels>
                <created>Sun, 23 Oct 2011 09:50:38 -0500</created>
                <updated>Sat, 20 Oct 2012 00:45:48 -0500</updated>
                                    <version>Release 1.1</version>
                <version>Release 1.2</version>
                <version>Release 1.3</version>
                <version>Release 1.4</version>
                                <fixVersion>Reviewed Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="27093" author="stu" created="Tue, 25 Oct 2011 18:51:55 -0500"  >&lt;p&gt;Next person to take a deep look at pmap should probably also think through fork/join.&lt;/p&gt;</comment>
                    <comment id="28533" author="jim.blomo" created="Sat, 19 May 2012 00:31:23 -0500"  >&lt;p&gt;fork/join is a Java 7 feature. Would a proposed patch need to be able to fall back to Java 5 features?&lt;/p&gt;</comment>
                    <comment id="28535" author="jafingerhut" created="Sat, 19 May 2012 01:06:37 -0500"  >&lt;p&gt;Clojure/core folks can say more authoritatively, but I believe with the recent reduce enhancements that rely on jsr166 code, Clojure 1.5 will most likely require Java 6 or later, and Java 5 will no longer be supported.&lt;/p&gt;</comment>
                    <comment id="28630" author="jim.blomo" created="Mon, 28 May 2012 17:29:01 -0500"  >&lt;p&gt;Spinning up more threads than CPU cores is not a good idea when the work is CPU bound.  Currently (1.4) pmap uses an unbounded thread pool, so chunked sequences will create more threads than intended.  The least invasive change is to use a fixed sized thread pool (ForkJoinPool being one example).  pmap is differentiated from core.reducers by the fact that it is lazy.  This implies a one-at-a-time ThreadPool.submit model, instead of the recursive fork/join model.  Tradeoffs include:&lt;/p&gt;

&lt;p&gt;Enforce look-ahead even on chunked sequences:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;+ no threadPool changes&lt;/li&gt;
	&lt;li&gt;- working against chunking, which is presumably being used for a reason&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Move to a fixed size thread pool:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;+ reduce contention for cpu-bound functions on chunked sequences&lt;/li&gt;
	&lt;li&gt;- increase total realization time for io-bound functions&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Use ForkJoinPool for fixed thread pool (instead of newFixedThreadPool):&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;+ automatic and dynamic parallelism&lt;/li&gt;
	&lt;li&gt;- more complex setup (picking Java 6 vs 7 implementation, sharing pool with core.reducers)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I think using a traditional fixed size thread pool is the right option.  Most of the time all of pmap&apos;s results will be realized, so I don&apos;t think it&apos;s worth saving work by being strict about the look-ahead size.  This is also the decision map has made.  Since we&apos;re not using ForkJoin&apos;s main strength (recursive work queuing), I don&apos;t think it is worth setting it up in clojure.core.&lt;/p&gt;

&lt;p&gt;I&apos;ll use Agent/pooledExecutor as the fixed size thread.&lt;/p&gt;

&lt;p&gt;Let me know if I forgot or misunderstood anything.&lt;/p&gt;</comment>
                    <comment id="28637" author="jim.blomo" created="Mon, 28 May 2012 19:59:01 -0500"  >&lt;p&gt;2012-05-28 pmap-chunking-862.diff uses a fixed size thread pool for pmap functions.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11265" name="pmap-chunking-862.diff" size="2825" author="jim.blomo" created="Mon, 28 May 2012 19:59:01 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-970] extend/implement parameterized types (generics)</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-970</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;When extending parameterized types, class files can track the original signatures of the superclass and super interfaces so that the original types can be obtained at run time.  This runtime reflection is used in some Java frameworks, and implementing it in Clojure can enable interop.  See &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/5efd692804df3f47/1336e591c2eedfa1&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/5efd692804df3f47/1336e591c2eedfa1&lt;/a&gt; for examples of this request.&lt;/p&gt;

&lt;p&gt;This proposal checks the :parameters keyword in type meta information.  If a parameter is found, it is added to the class signature.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15324">CLJ-970</key>
            <summary>extend/implement parameterized types (generics)</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="jim.blomo">Jim Blomo</assignee>
                                <reporter username="jim.blomo">Jim Blomo</reporter>
                        <labels>
                    </labels>
                <created>Tue, 10 Apr 2012 01:33:49 -0500</created>
                <updated>Fri, 1 Mar 2013 09:46:59 -0600</updated>
                                    <version>Release 1.5</version>
                                                        <due></due>
                    <votes>1</votes>
                        <watches>4</watches>
                        <comments>
                    <comment id="28143" author="jim.blomo" created="Sat, 14 Apr 2012 11:30:17 -0500"  >&lt;p&gt;2012-04-14 extend-implement-parameterized-types.diff is the correctly formatted `git format-patch master` for this change.  It supersedes clojure-parameterized-generics.diff from 2012-04-10.&lt;/p&gt;</comment>
                    <comment id="29230" author="jafingerhut" created="Sun, 19 Aug 2012 05:00:31 -0500"  >&lt;p&gt;Patch clj-970-extend-implement-parameterized-types-patch2.txt dated Aug 19 2012 is identical to Jim Blomo&apos;s patch extend-implement-parameterized-types.diff dated Apr 14 2012, except it has updated context lines so that it applies cleanly to latest master as of today.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11450" name="clj-970-extend-implement-parameterized-types-patch2.txt" size="5525" author="jafingerhut" created="Sun, 19 Aug 2012 05:00:31 -0500" />
                    <attachment id="11049" name="extend-implement-parameterized-types.diff" size="5594" author="jim.blomo" created="Sat, 14 Apr 2012 11:30:17 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-1004] ArrayChunk implements Seqable</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-1004</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I&apos;ve found it helpful to be able to iterate over ArrayChunks.  Implementing Seqable means they can be used by most collections functions.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15485">CLJ-1004</key>
            <summary>ArrayChunk implements Seqable</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="jim.blomo">Jim Blomo</assignee>
                                <reporter username="jim.blomo">Jim Blomo</reporter>
                        <labels>
                    </labels>
                <created>Mon, 28 May 2012 18:53:55 -0500</created>
                <updated>Mon, 25 Mar 2013 23:10:02 -0500</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="28636" author="jim.blomo" created="Mon, 28 May 2012 19:55:02 -0500"  >&lt;p&gt;2012-05-28 implements the seq method for vec and vector-of. It uses the array backing ArrayChunk to construct a sequence.  Simple tests are included.&lt;/p&gt;</comment>
                    <comment id="30673" author="stu" created="Fri, 1 Mar 2013 09:44:37 -0600"  >&lt;p&gt;Please add discussion of motivating use cases.&lt;/p&gt;</comment>
                    <comment id="30822" author="jim.blomo" created="Mon, 25 Mar 2013 23:10:02 -0500"  >&lt;p&gt;This was motivated by the desire to implement chunk-sequence-aware functions in Clojure elegantly.  Currently, dealing with ArrayChunks in Clojure is clumsy because few of the functions dealing with collections will work with non-seqables.  This functionality will mostly be used by implementers since end users shouldn&apos;t care if their sequence is chunked or not.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11264" name="arraychunk-seq-10004.diff" size="2946" author="jim.blomo" created="Mon, 28 May 2012 19:55:02 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

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