<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>https://hg.linkmauve.fr/touhou/</link>
    <language>en-us</language>

    <title>PyTouhou Changelog</title>
    <description>PyTouhou Changelog</description>
    <item>
    <title>[default] formats: Implement T6RP in Rust</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/8c2ef2d503c9</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/8c2ef2d503c9</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>8c2ef2d503c9</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td>default</td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td>tip</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>formats: Implement T6RP in Rust<br/>
<br/>
This has been tested against demo00.rpy shipped in CM.DAT.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>formats/src/th06/mod.rs<br />formats/src/th06/t6rp.rs<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Tue, 02 Jun 2026 16:39:21 +0200</pubDate>
</item>
<item>
    <title>python: Bump the dependencies</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/bdefd3e6d6f9</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/bdefd3e6d6f9</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>bdefd3e6d6f9</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>python: Bump the dependencies</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>python/Cargo.toml<br />utils/Cargo.toml<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Wed, 13 May 2026 21:43:58 +0200</pubDate>
</item>
<item>
    <title>python: Replace the image crate with png</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/11bc22bad1bf</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/11bc22bad1bf</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>11bc22bad1bf</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>python: Replace the image crate with png<br/>
<br/>
We weren’t using any of its features anyway, so the png crate is exactly what<br/>
we need, without the many heavy dependencies of image.<br/>
<br/>
https://github.com/image-rs/image-png/pull/670 will eventually make it even<br/>
faster to build.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>python/Cargo.toml<br />python/src/lib.rs<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Sat, 17 Jan 2026 22:22:25 +0100</pubDate>
</item>
<item>
    <title>utils: Simplify translate_2d and align Mat4 to 16 bytes</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/a29122662cde</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/a29122662cde</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>a29122662cde</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>utils: Simplify translate_2d and align Mat4 to 16 bytes<br/>
<br/>
This lowers the amount of instructions from 61 to 32 on PowerPC with AltiVec,<br/>
and from 25 to 14 on amd64 with AVX2.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>utils/src/math.rs<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Sat, 17 Jan 2026 14:19:58 +0100</pubDate>
</item>
<item>
    <title>utils: Use const_for to make more const fn</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/d005f5927447</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/d005f5927447</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>d005f5927447</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>utils: Use const_for to make more const fn</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>utils/Cargo.toml<br />utils/src/math.rs<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Sat, 17 Jan 2026 14:12:08 +0100</pubDate>
</item>
<item>
    <title>utils: Make some math functions const</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/b5bca9274335</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/b5bca9274335</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>b5bca9274335</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>utils: Make some math functions const<br/>
<br/>
Sadly f32::sqrt() isn’t const, so we can’t make normalize() const nor any<br/>
function which depends on it.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>utils/src/math.rs<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Sun, 04 Jan 2026 11:49:03 +0100</pubDate>
</item>
<item>
    <title>Remove leftover MSG import</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/f56b10812b77</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/f56b10812b77</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>f56b10812b77</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Remove leftover MSG import<br/>
<br/>
This should have been part of a30ce01b9154.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>pytouhou/resource/loader.py<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Sun, 04 Jan 2026 11:47:06 +0100</pubDate>
</item>
<item>
    <title>interpreters: Make Interpolator generic over N</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/7f9b3f5001c2</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/7f9b3f5001c2</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>7f9b3f5001c2</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>interpreters: Make Interpolator generic over N<br/>
<br/>
This was a workaround for Rust &lt; 1.51 which didn’t support const generics yet,<br/>
but we’ve had tat for close to five years now!</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>interpreters/src/th06/anm0.rs<br />interpreters/src/th06/enemy.rs<br />interpreters/src/th06/interpolator.rs<br />interpreters/src/th06/std.rs<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Mon, 15 Dec 2025 11:34:58 +0100</pubDate>
</item>
<item>
    <title>Replace SDL2_image with the image crate</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/7e940ebeb5fd</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/7e940ebeb5fd</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>7e940ebeb5fd</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Replace SDL2_image with the image crate</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>README<br />interpreters/src/lib.rs<br />python/Cargo.toml<br />python/src/lib.rs<br />pytouhou/lib/_sdl.pxd<br />pytouhou/lib/sdl.pxd<br />pytouhou/lib/sdl.pyx<br />pytouhou/ui/opengl/texture.pyx<br />pytouhou/ui/sdl/texture.pyx<br />setup.py<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Mon, 01 Dec 2025 17:05:48 +0100</pubDate>
</item>
<item>
    <title>SDL Backend: Fix renderer interactions</title>
    <guid isPermaLink="true">https://hg.linkmauve.fr/touhou/rev/f73e8524c045</guid>
    <link>https://hg.linkmauve.fr/touhou/rev/f73e8524c045</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>f73e8524c045</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>SDL Backend: Fix renderer interactions</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>pytouhou/lib/sdl.pxd<br />pytouhou/lib/sdl.pyx<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#76;&#105;&#110;&#107;&#32;&#77;&#97;&#117;&#118;&#101;&#32;&#60;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#64;&#108;&#105;&#110;&#107;&#109;&#97;&#117;&#118;&#101;&#46;&#102;&#114;&#62;</author>
    <pubDate>Mon, 01 Dec 2025 16:22:05 +0100</pubDate>
</item>

  </channel>
</rss>