<!--
RSS generated by JIRA (4.4#649-r158309) at Tue May 21 01:33:29 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+NREPL+AND+fixVersion+%3D+%220.2.0-beta9%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+NREPL+AND+fixVersion+%3D+%220.2.0-beta9%22</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="5" total="5"/>
                <build-info>
            <version>4.4</version>
            <build-number>649</build-number>
            <build-date>25-07-2011</build-date>
        </build-info>
<item>
            <title>[NREPL-26] Middleware metadata + collection of middleware names =&gt; well-formed handler</title>
                <link>http://dev.clojure.org/jira/browse/NREPL-26</link>
                <project id="10022" key="NREPL">tools.nrepl</project>
                        <description></description>
                <environment></environment>
            <key id="15624">NREPL-26</key>
            <summary>Middleware metadata + collection of middleware names =&gt; well-formed handler</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <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="cemerick">Chas Emerick</reporter>
                        <labels>
                    </labels>
                <created>Fri, 10 Aug 2012 23:32:50 -0500</created>
                <updated>Mon, 20 Aug 2012 15:48:26 -0500</updated>
                    <resolved>Mon, 20 Aug 2012 15:48:26 -0500</resolved>
                                            <fixVersion>0.2.0-beta9</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29233" author="cemerick" created="Mon, 20 Aug 2012 15:48:26 -0500"  >&lt;p&gt;See &lt;tt&gt;clojure.tools.nrepl.middleware&lt;/tt&gt;, the metadata descriptors described there, etc.&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>[NREPL-25] Metadata -&gt; middleware/handler documentation</title>
                <link>http://dev.clojure.org/jira/browse/NREPL-25</link>
                <project id="10022" key="NREPL">tools.nrepl</project>
                        <description></description>
                <environment></environment>
            <key id="15623">NREPL-25</key>
            <summary>Metadata -&gt; middleware/handler documentation</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <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="cemerick">Chas Emerick</reporter>
                        <labels>
                    </labels>
                <created>Fri, 10 Aug 2012 23:31:46 -0500</created>
                <updated>Mon, 13 Aug 2012 23:31:47 -0500</updated>
                    <resolved>Mon, 13 Aug 2012 23:31:11 -0500</resolved>
                                            <fixVersion>0.2.0-beta9</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29129" author="cemerick" created="Mon, 13 Aug 2012 23:31:47 -0500"  >&lt;p&gt;See &lt;tt&gt;clojure.tools.nrepl.middleware/wrap-describe&lt;/tt&gt;, &lt;tt&gt;set-descriptor!&lt;/tt&gt;, etc.&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>[NREPL-23] NPE when interruptible-eval/evaluate is passed a non-existant namespace</title>
                <link>http://dev.clojure.org/jira/browse/NREPL-23</link>
                <project id="10022" key="NREPL">tools.nrepl</project>
                        <description>&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;Stack Trace&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;Exception in thread &quot;nREPL-worker-2&quot; java.lang.NullPointerException
	at clojure.core$refer.doInvoke(core.clj:3779)
	at clojure.lang.RestFn.applyTo(RestFn.java:139)
	at clojure.core$apply.invoke(core.clj:603)
	at clojure.core$load_lib.doInvoke(core.clj:5279)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invoke(core.clj:603)
	at clojure.core$load_libs.doInvoke(core.clj:5298)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invoke(core.clj:605)
	at clojure.core$use.doInvoke(core.clj:5392)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.main$repl.doInvoke(main.clj:259)
	at clojure.lang.RestFn.invoke(RestFn.java:1096)
	at clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__337.invoke(interruptible_eval.clj:51)
	at clojure.lang.AFn.applyToHelper(AFn.java:159)
	at clojure.lang.AFn.applyTo(AFn.java:151)
	at clojure.core$apply.invoke(core.clj:601)
	at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1771)
	at clojure.lang.RestFn.invoke(RestFn.java:425)
	at clojure.tools.nrepl.middleware.interruptible_eval$evaluate.invoke(interruptible_eval.clj:36)
	at clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn__374$fn__376.invoke(interruptible_eval.clj:162)
	at clojure.core$comp$fn__4034.invoke(core.clj:2278)
	at clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__367.invoke(interruptible_eval.clj:129)
	at clojure.lang.AFn.run(AFn.java:24)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:636)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15586">NREPL-23</key>
            <summary>NPE when interruptible-eval/evaluate is passed a non-existant namespace</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <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="jsnikeris">Joe Snikeris</reporter>
                        <labels>
                    </labels>
                <created>Sun, 22 Jul 2012 11:19:08 -0500</created>
                <updated>Mon, 20 Aug 2012 21:40:11 -0500</updated>
                    <resolved>Mon, 20 Aug 2012 21:40:11 -0500</resolved>
                            <version>0.2.0</version>
                                <fixVersion>0.2.0-beta9</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29022" author="jsnikeris" created="Sun, 22 Jul 2012 11:23:00 -0500"  >&lt;p&gt;I&apos;m not sure which would be better: behave as if one wasn&apos;t passed in or return an error on the transport.&lt;/p&gt;</comment>
                    <comment id="29236" author="cemerick" created="Mon, 20 Aug 2012 21:40:11 -0500"  >&lt;p&gt;Fixed to send an error with a &lt;tt&gt;status&lt;/tt&gt; of &lt;tt&gt;&quot;namespace-not-found&quot;&lt;/tt&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>[NREPL-11] Ensure efficient bytestring (byte[]) support in bencode transport</title>
                <link>http://dev.clojure.org/jira/browse/NREPL-11</link>
                <project id="10022" key="NREPL">tools.nrepl</project>
                        <description>&lt;p&gt;In particular, no boxing of individual bytes or multiple en/decoding steps should be involved.&lt;/p&gt;

&lt;p&gt;This implies that:&lt;/p&gt;

&lt;p&gt;1. all string values should remain &lt;tt&gt;byte[]&lt;/tt&gt; coming out of the bencode protocol support (which makes it more compliant with bencode anyway)&lt;br/&gt;
2. the string decoding should occur in the bencode transport impl&lt;br/&gt;
3. all string values should be decoded, &lt;em&gt;except&lt;/em&gt; for those named in a reserved slot (say, &lt;tt&gt;&quot;-unencoded&quot;&lt;/tt&gt;)&lt;/p&gt;

&lt;p&gt;All map keys should always be decoded to Strings.&lt;/p&gt;

&lt;p&gt;While nREPL should continue to be fully compatible with Clojure 1.2.x, let&apos;s not kill ourselves trying to optimize for 1.2.x as well as Clojure &amp;gt;= 1.3.0; if necessary, just make sure the latter is fast.  If 1.2.x benefits as well, then good.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15240">NREPL-11</key>
            <summary>Ensure efficient bytestring (byte[]) support in bencode transport</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <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="cemerick">Chas Emerick</reporter>
                        <labels>
                    </labels>
                <created>Tue, 21 Feb 2012 19:33:08 -0600</created>
                <updated>Tue, 21 Aug 2012 20:26:25 -0500</updated>
                    <resolved>Tue, 21 Aug 2012 20:26:25 -0500</resolved>
                                            <fixVersion>0.2.0-beta9</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27804" author="mbrandmeyer" created="Wed, 22 Feb 2012 14:05:29 -0600"  >&lt;p&gt;How about &#8220;&lt;tt&gt;nrepl/unencoded&lt;/tt&gt;&#8221; re point 3?&lt;/p&gt;</comment>
                    <comment id="27805" author="cemerick" created="Wed, 22 Feb 2012 17:57:01 -0600"  >&lt;p&gt;Is that intended to become a namespaced keyword at some point (further up in the stack than the bencode parser or transport, of course)?&lt;/p&gt;

&lt;p&gt;If so, does that imply that other keys (perhaps &quot;nonstandard&quot; ones defined by middlewares) should be namespaced as well?&lt;/p&gt;

&lt;p&gt;Also, this is actually impacting the protocol; &lt;tt&gt;nrepl/*&lt;/tt&gt; makes me think the slot is related to an &quot;application-level&quot; handler provided by nREPL.&lt;/p&gt;

&lt;p&gt;FWIW, my suggestion of &lt;tt&gt;-unencoded&lt;/tt&gt; was a nod to Python&apos;s &lt;tt&gt;_foo&lt;/tt&gt; and Clojure&apos;s &lt;tt&gt;-foo&lt;/tt&gt; to denote private / internal members. &amp;#42;shrug&amp;#42;&lt;/p&gt;</comment>
                    <comment id="27811" author="mbrandmeyer" created="Thu, 23 Feb 2012 05:03:05 -0600"  >&lt;p&gt;Namespaced keywords are indeed the inspiration. So that it should probably be more like &lt;tt&gt;clojure.tools.nrepl.transport/unencoded&lt;/tt&gt; rather than just &lt;tt&gt;nrepl/unencoded&lt;/tt&gt;. However it is not a requirement to be a real keyword. A qualified string works just as well. There could be a middleware which turns the map keys into keywords (considering also a possible namespace). ring has a similar middleware, IIRC. I think that qualified operation and result field values (in some form or the other) are a best practise in this respect.&lt;/p&gt;

&lt;p&gt;However your argument of &lt;tt&gt;unencoded&lt;/tt&gt; being part of the protocol is valid. But then why should it be private? Document it in the official protocol spec and let middlewares also add fields to it. The question is then: what happens with nested structures (eg. &lt;tt&gt;:status&lt;/tt&gt;, which has to be traversed now painfully)? If middlewares weren&apos;t allowed to add to it, then only &lt;tt&gt;:value&lt;/tt&gt; would be an interesting target for &lt;tt&gt;unencoded&lt;/tt&gt;. So a simple flag would suffice.&lt;/p&gt;

&lt;p&gt;In general, I still think a tagged protocol would have been the better solution since it also allows nesting and each slot knows whether it&apos;s encoded or not.&lt;/p&gt;

&lt;p&gt;Maybe we should clarify what middlewares are allowed to do. Is there already some documentation on this? (I&apos;m must confess I&apos;m not up-to-date with all the design changes.)&lt;/p&gt;</comment>
                    <comment id="27900" author="cemerick" created="Thu, 1 Mar 2012 15:32:33 -0600"  >&lt;p&gt;Re: encoding, I&apos;ve started to think perhaps nothing should be decoded by default, and middlewares can independently handle such things.  The standard middlewares will stake out one approach, but that at least leaves open the possibility of a different convention emerging over time that can be adopted later.&lt;/p&gt;

&lt;p&gt;Opinions?&lt;/p&gt;</comment>
                    <comment id="29234" author="cemerick" created="Mon, 20 Aug 2012 16:14:44 -0500"  >&lt;p&gt;Sorry, where is the code for this?  No .patch here, and nothing in bitbucket looks right.&lt;/p&gt;

&lt;p&gt;Leaving aside the code for now, defaulting to unencoded strings continues to seem reasonable; a default &lt;tt&gt;Transport&lt;/tt&gt; impl/substrate can perform the en/decoding, as well as establish a default convention for indicating that some fields values should be left unencoded and should not be decoded.&lt;/p&gt;</comment>
                    <comment id="29235" author="mbrandmeyer" created="Mon, 20 Aug 2012 16:21:28 -0500"  >&lt;p&gt;The code is here: &lt;a href=&quot;https://github.com/kotarak/tools.nrepl/tree/bencode-improvements2&quot;&gt;https://github.com/kotarak/tools.nrepl/tree/bencode-improvements2&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="29237" author="cemerick" created="Mon, 20 Aug 2012 22:14:49 -0500"  >&lt;p&gt;Looks good, patch applied.&lt;/p&gt;

&lt;p&gt;I&apos;m less and less sure re: &lt;tt&gt;-unencoded&lt;/tt&gt;.  Thinking back to your &quot;tagged protocol&quot; comment, adopting a convention of keys like &lt;tt&gt;&quot;value/binary&quot;&lt;/tt&gt; (or something similar) would be quite a bit more flexible and somewhat simpler to handle.&lt;/p&gt;

&lt;p&gt;(Thinking of rich content, mime types could then be sent in e.g. &lt;tt&gt;&quot;value/mime&quot;&lt;/tt&gt; &#8212; not that the transport would care about that, but it would at least be easy to pair up data with its &quot;tag&quot;.)&lt;/p&gt;

&lt;p&gt;Thoughts?&lt;/p&gt;</comment>
                    <comment id="29248" author="cemerick" created="Tue, 21 Aug 2012 20:26:25 -0500"  >&lt;p&gt;Releasing -beta9 now; further discussion of unencoded value semantics can continue elsewhere&#8230;&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>[NREPL-8] set stack size for Android</title>
                <link>http://dev.clojure.org/jira/browse/NREPL-8</link>
                <project id="10022" key="NREPL">tools.nrepl</project>
                        <description>&lt;p&gt;If you want to use nREPL on Android (currently only possible with sattvik&apos;s fork of Clojure) then you need bigger stack sizes than Android&apos;s default 8k to eval even moderately complex expressions. For comparison: A regular JVM on a PC has default stack sizes around 256k ... 512k depending on platform.&lt;/p&gt;

&lt;p&gt;In nrepl.clj, modify&lt;/p&gt;

&lt;p&gt;(doto (Thread. r)&lt;br/&gt;
  (.setDaemon true))))))&lt;/p&gt;

&lt;p&gt;to read&lt;/p&gt;

&lt;p&gt;(doto (Thread. (.getThreadGroup (Thread/currentThread)) r &quot;nREPL&quot; 524288)  ; 512k generous stack size&lt;br/&gt;
  (.setDaemon true))))))&lt;/p&gt;

&lt;p&gt;Note: There are warnings here &lt;a href=&quot;http://bit.ly/u86tF1&quot;&gt;http://bit.ly/u86tF1&lt;/a&gt; about choosing a good stack size but since in practice nREPL seems to have &amp;lt;10 threads running with 1 active client connection we can be generous here.&lt;/p&gt;

&lt;p&gt;The more advanced version would be to make this somehow configurable but that&apos;d probably be over-engineering things.&lt;/p&gt;</description>
                <environment>Android</environment>
            <key id="15089">NREPL-8</key>
            <summary>set stack size for Android</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="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="hank">Hank</reporter>
                        <labels>
                        <label>Android</label>
                    </labels>
                <created>Fri, 30 Dec 2011 09:05:19 -0600</created>
                <updated>Wed, 3 Oct 2012 07:03:59 -0500</updated>
                    <resolved>Wed, 3 Oct 2012 07:03:59 -0500</resolved>
                            <version>0.0.5</version>
                                <fixVersion>0.2.0-beta9</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27500" author="cemerick" created="Fri, 30 Dec 2011 09:14:15 -0600"  >&lt;p&gt;Noted, thank you.  I&apos;ll try to make sure a provision for this gets into the next significant release.&lt;/p&gt;

&lt;p&gt;My first inclination is to ensure that the stack size is configurable; a hardcoded size would likely be just as inappropriate in some environments as the system default.&lt;/p&gt;</comment>
                    <comment id="27789" author="cemerick" created="Tue, 21 Feb 2012 05:21:48 -0600"  >&lt;p&gt;nREPL is now using Clojure&apos;s built-in agent threadpools.  This should theoretically simplify things for you, correct?  i.e. Isn&apos;t a patched build of Clojure necessary for use on Android for this stack size issue, among other reasons?&lt;/p&gt;</comment>
                    <comment id="27796" author="hank" created="Wed, 22 Feb 2012 07:21:21 -0600"  >&lt;p&gt;The patched build is only necessary for the JVM byte code that the Clojure compiler dynamically generates to be converted to Dalvik bytecode. However adding additional android patches such as configuring the agent threadpool with a larger stack size do make sense. I&apos;m not the official Android Clojure maintainer though &amp;#8211; I guess there isn&apos;t an official one really &amp;#8211; so my opinion on this only goes so far.&lt;/p&gt;</comment>
                    <comment id="27797" author="cemerick" created="Wed, 22 Feb 2012 08:11:02 -0600"  >&lt;p&gt;Well, I think you have a solid case for expanding the scope of the android fork, or even for a change to parameterize the threadpools in Clojure itself.&lt;/p&gt;

&lt;p&gt;I&apos;m going to close this; there&apos;s really nothing to be done from within nREPL given that it doesn&apos;t maintain its own threadpool anymore.&lt;/p&gt;</comment>
                    <comment id="29035" author="cemerick" created="Tue, 24 Jul 2012 04:49:27 -0500"  >&lt;p&gt;Reopening; since the use of agents was a fool&apos;s errand, parameterizing stack size needs to happen.&lt;/p&gt;</comment>
                    <comment id="29189" author="cemerick" created="Wed, 15 Aug 2012 15:58:29 -0500"  >&lt;p&gt;Now that I look at this again, there are a number of options in nREPL to solve this.&lt;/p&gt;

&lt;p&gt;First, you can provide an &lt;tt&gt;:executor&lt;/tt&gt; argument to the &lt;tt&gt;interruptible-eval&lt;/tt&gt; middleware.  This could be any &lt;tt&gt;java.util.concurrent.Executor&lt;/tt&gt;, so you can configure it to use whatever threads you want.&lt;/p&gt;

&lt;p&gt;Second, and if you want to minimize work and retain as much of nREPL&apos;s default configuration otherwise, you can patch in your own thread pool by binding &lt;tt&gt;#&apos;clojure.tools.nrepl.middleware.interruptible-eval/configure-thread-factory&lt;/tt&gt; like so:&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 thread-group ...)
(def stack-size ...)

(defn android-thread-factory
  &quot;Returns a &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; ThreadFactory suitable &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; use with android. This implementation
   generates daemon threads, with names that include the session id.&quot;
  []
  (let [session-thread-counter (AtomicLong. 0)]
    (reify ThreadFactory
      (newThread [_ runnable]
        (doto (&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;. thread-group
                runnable
                (format &lt;span class=&quot;code-quote&quot;&gt;&quot;nREPL-worker-%s&quot;&lt;/span&gt; (.getAndIncrement session-thread-counter))
                stack-size)
          (.setDaemon &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;))))))

(with-bindings {#&apos;clojure.tools.nrepl.middleware.interruptible-eval/configure-thread-factory
                android-thread-factory}
  (clojure.tools.nrepl.server/start-server ...))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The above totally untested, but I hope you get the idea.  Give it a shot, and let me know how it goes.  I&apos;m going to take off this issue&apos;s fix target for now.&lt;/p&gt;</comment>
                    <comment id="29587" author="cemerick" created="Wed, 3 Oct 2012 07:03:59 -0500"  >&lt;p&gt;I hear good things at this point about people connecting to nREPL endpoints running on Android.  Please file another issue if this or other Android-specific problems arise in the future.&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>
</channel>
</rss>