<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Release on BXM.net</title>
    <link>https://bxm.net/tags/release/</link>
    <description>Recent content in Release on BXM.net</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 22 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://bxm.net/tags/release/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>BXM 0.1.0 Launches With Canon and Memo, Two Open Source Tools for Repeatable Results</title>
      <link>https://bxm.net/bxm-0.1.0-launches-with-canon-and-memo-two-open-source-tools-for-repeatable-results/</link>
      <pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://bxm.net/bxm-0.1.0-launches-with-canon-and-memo-two-open-source-tools-for-repeatable-results/</guid>
      <description>&lt;p&gt;BXM 0.1.0 is out. It&amp;rsquo;s two small command-line tools in one repository, open source under the Apache License 2.0, with builds for Linux, macOS and Windows.&lt;/p&gt;&#xA;&lt;p&gt;They share one idea. Same input, same bytes, same result. Canon applies it to data and Memo applies it to work.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;BXM Canon&lt;/strong&gt; is a binary encoding with exactly one valid form for every value. Two programs that encode the same data get the same bytes, whatever order they wrote the keys in and however they spelled the numbers. A hash or a signature taken on one machine holds on every other. The decoder refuses any byte string that isn&amp;rsquo;t the one encoding of its value, so a second spelling can&amp;rsquo;t sneak in through the back door.&lt;/p&gt;</description>
    </item>
    <item>
      <title>BXM Canon 0.2.0 Brings the Same Bytes to JavaScript With One Rust Core Compiled to WebAssembly</title>
      <link>https://bxm.net/bxm-canon-0.2.0-brings-the-same-bytes-to-javascript-with-one-rust-core-compiled-to-webassembly/</link>
      <pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://bxm.net/bxm-canon-0.2.0-brings-the-same-bytes-to-javascript-with-one-rust-core-compiled-to-webassembly/</guid>
      <description>&lt;p&gt;BXM Canon 0.2.0 adds a JavaScript package. It runs in Node 18 and later and in browsers, and it gives exactly the bytes and hashes the &lt;code&gt;bxm-canon&lt;/code&gt; command gives, because it is the same Rust code compiled to WebAssembly.&lt;/p&gt;&#xA;&lt;p&gt;That matters more for Canon than for most libraries. A canonical encoding is only as good as the agreement between the programs that use it. If the Node service and the Go service each carry their own implementation, a single corner case they read differently, a float spelled one way or a key compared another, brings back the problem Canon exists to remove.&lt;/p&gt;</description>
    </item>
    <item>
      <title>BXM Canon 0.3.0 Adds Python, With Ints, Floats and Bytes Kept Apart and the Same Hash as Every Other Build</title>
      <link>https://bxm.net/bxm-canon-0.3.0-adds-python-with-ints-floats-and-bytes-kept-apart-and-the-same-hash-as-every-other-build/</link>
      <pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://bxm.net/bxm-canon-0.3.0-adds-python-with-ints-floats-and-bytes-kept-apart-and-the-same-hash-as-every-other-build/</guid>
      <description>&lt;p&gt;BXM Canon 0.3.0 adds a Python package. It&amp;rsquo;s the same Rust core again, this time called through PyO3, with wheels for Linux, macOS and Windows and any Python from 3.9 up. A value hashed in Python gives the hash the command line, the C library and the JavaScript package give, because all of them run the same code.&lt;/p&gt;&#xA;&lt;p&gt;Python turned out to be the most natural fit so far. JavaScript has one number type, so a JavaScript caller has to think about whether &lt;code&gt;1&lt;/code&gt; should be an integer or a float. Python already keeps &lt;code&gt;int&lt;/code&gt; and &lt;code&gt;float&lt;/code&gt; apart, and it has a real &lt;code&gt;bytes&lt;/code&gt; type, which is exactly what Canon distinguishes. So the Python package can take a value straight from your program, no text step in between.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
