<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="300730" data-post-id="300730">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="billylanchantin" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/billylanchantin/120/28428_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  billylanchantin
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h1><a name="p-300730-comparechain-release-v040-2023-09-10-1" class="anchor" href="#p-300730-comparechain-release-v040-2023-09-10-1" aria-label="Heading link" rel="nofollow"></a>CompareChain Release: v0.4.0 (2023-09-10)</h1>
<ul>
<li>Docs: <a href="https://hexdocs.pm/compare_chain/readme.html" rel="noopener nofollow ugc">CompareChain</a></li>
<li>Git: <a href="https://github.com/CargoSense/compare_chain" rel="noopener nofollow ugc">CargoSense/compare_chain </a></li>
</ul>
<p>Hi, there’s been another (tiny) release of CompareChain.</p>
<p>This is the only change:</p>
<ul>
<li>
<p><strong>Using a struct with <code>compare?/1</code> results in a warning</strong></p>
<p>Running:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">iex&gt; compare?(~D[2023-01-02] &lt; ~D[2023-01-02]) #=&gt; false
</code></pre>
<p>Now yields:</p>
<pre><code class="lang-plaintext">[warning] Performing structural comparison on matching structs.

Did you mean to use `compare?/2`?

  compare?(~D[2022-01-02] ??? ~D[2022-02-01], Date)
</code></pre>
</li>
</ul>
<p>We decided that’s preferable to silently giving you the wrong answer and making you chase down a weird bug. Not speaking from experience or anything…</p>
<p>As always, issues and PRs are welcome! <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="300730" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/comparechain-semantic-chained-comparisons-for-elixir/51577/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-300730" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="300730"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="329104" data-post-id="329104">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="billylanchantin" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/billylanchantin/120/28428_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  billylanchantin
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h2><a name="p-329104-comparechain-release-v050-2024-05-22-1" class="anchor" href="#p-329104-comparechain-release-v050-2024-05-22-1" aria-label="Heading link" rel="nofollow"></a>CompareChain Release: v0.5.0 (2024-05-22)</h2>
<ul>
<li>Docs: <a href="https://hexdocs.pm/compare_chain/0.5.0/readme.html" rel="noopener nofollow ugc">CompareChain</a></li>
<li>Git: <a href="https://github.com/CargoSense/compare_chain" rel="noopener nofollow ugc">CargoSense/compare_chain</a></li>
</ul>
<p>Hi! Another release. There’s a bugfix and a few changes including one breaking change:</p>
<ul>
<li>Allow <code>===</code> and <code>!===</code> in expressions</li>
<li>Improve documentation</li>
<li>Fix bug with certain operation chains:<pre data-code-wrap="elixir"><code class="lang-elixir">compare?(1 &lt; 2 != 3 &lt; 4) #=&gt; true
compare?(1 &lt; 2 != 3 &gt; 4) #=&gt; true (wrong!)
</code></pre>
</li>
<li>Improve error message and documentation for invalid expressions</li>
<li>[BREAKING] all branches of <code>and</code>, <code>or</code> and <code>not</code> must now contain comparisons
<ul>
<li>Example: <code>compare?(1 &lt; 2 and true)</code> used to be ok but is no longer allowed because the right argument to <code>and</code> doesn’t contain a comparison.</li>
</ul>
</li>
</ul>
<p>As always, issues and PRs are welcome! <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<hr>
<p>A new section I added to the docs that I want to callout:</p>
<h3><a name="p-329104-one-last-selling-point-2" class="anchor" href="#p-329104-one-last-selling-point-2" aria-label="Heading link" rel="nofollow"></a>One last selling point</h3>
<p>As a happy accident, <a href="https://hexdocs.pm/compare_chain/0.5.0/CompareChain.html#compare?/2" rel="noopener nofollow ugc"><code>CompareChain.compare?/2</code></a> always uses fewer characters than its <code>compare/2</code> counterpart:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">compare?(a &lt;= b, Date)
# vs.
Date.compare(a, b) != :gt
</code></pre>
<p>(Assuming you’ve already included <code>import CompareChain</code>, of course!)</p>
<p>Because it’s shorter <em>and</em> more readable, these days I always use <a href="https://hexdocs.pm/compare_chain/0.5.0/CompareChain.html" rel="noopener nofollow ugc"><code>CompareChain</code></a> for any semantic comparison, chained or not.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="329104" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/comparechain-semantic-chained-comparisons-for-elixir/51577/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-329104" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="329104"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="352291" data-post-id="352291">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="billylanchantin" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/billylanchantin/120/28428_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  billylanchantin
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h2><a name="p-352291-comparechain-release-v060-2025-01-09-1" class="anchor" href="#p-352291-comparechain-release-v060-2025-01-09-1" aria-label="Heading link" rel="nofollow"></a>CompareChain Release: v0.6.0 (2025-01-09)</h2>
<ul>
<li>Docs: <a href="https://hexdocs.pm/compare_chain/0.6.0/readme.html" class="inline-onebox" rel="noopener nofollow ugc">CompareChain — compare_chain v0.6.0</a></li>
<li>GitHub: <a href="https://github.com/CargoSense/compare_chain" class="inline-onebox" rel="noopener nofollow ugc">GitHub - CargoSense/compare_chain: Chained semantic comparisons for Elixir. · GitHub</a></li>
</ul>
<p>This release is largely to fix a warning: Elixir 1.17+ warned about the code <code>a &lt; b</code> in one of the doctests.</p>
<p>It also shifts version support: it’s now Elixir 1.15 to 1.18 officially. Older versions of Elixir should still work, but they’re no longer “officially” supported.</p>
<h3><a name="p-352291-changelog-2" class="anchor" href="#p-352291-changelog-2" aria-label="Heading link" rel="nofollow"></a>Changelog</h3>
<h4><a name="p-352291-v060-2025-01-09-3" class="anchor" href="#p-352291-v060-2025-01-09-3" aria-label="Heading link" rel="nofollow"></a>v0.6.0 (2025-01-09)</h4>
<ul>
<li>Drop official support for Elixir 1.13 and 1.14 (though they should still work)</li>
<li>Currently support Elixir 1.15 to 1.18</li>
<li>Change docs so they no longer warn about a doctest</li>
<li>Miscellanea: renamed LISENCE file, added CODEOWNERS file, etc.</li>
</ul>
<hr>
<p>As always, issues and PRs welcome <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="352291" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/comparechain-semantic-chained-comparisons-for-elixir/51577/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-352291" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="352291"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>