<!-- 
RSS generated by JIRA (4.4#649-r158309) at Tue Jun 18 02:06:15 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/si/jira.issueviews:issue-xml/CLJ-213/CLJ-213.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Clojure JIRA</title>
    <link>http://dev.clojure.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>4.4</version>
        <build-number>649</build-number>
        <build-date>25-07-2011</build-date>
    </build-info>

<item>
            <title>[CLJ-213] Invariants and the STM</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-213</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;(ticket requested here &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/119311e89fa46806/4903ce25ff6deaa6#4903ce25ff6deaa6&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/119311e89fa46806/4903ce25ff6deaa6#4903ce25ff6deaa6&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The general idea is to declare invariants inside a transaction and, when at commit time an invariant doesn&apos;t hold anymore, the transaction retries.&lt;br/&gt;
So it can both act as a kind of soft ensure or to specify actions that &quot;partially commute&quot;.&lt;br/&gt;
Thus it would enable coarser refs.&lt;/p&gt;

&lt;p&gt;See the attached file for quick prototype.&lt;/p&gt;

&lt;p&gt;User code would looks like:&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;(invariant (@world :key))
(commute world update-in [:key] val-transform-fn)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This means the commute will occur only if (@world :key) returns the same value in-transaction and at commit point.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13610">CLJ-213</key>
            <summary>Invariants and the STM</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 1 Dec 2009 06:29:00 -0600</created>
                <updated>Tue, 24 Aug 2010 07:23:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23280" author="importer" created="Tue, 24 Aug 2010 07:23:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/213&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/213&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
invariants.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dd4kUS3MWr3QvMeJe5aVNr/download/dd4kUS3MWr3QvMeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dd4kUS3MWr3QvMeJe5aVNr/download/dd4kUS3MWr3QvMeJe5aVNr&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>
</channel>
</rss>