<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Aral on Calogero Sanfilippo</title><link>http://calogerosanfilippo.it/tags/aral/</link><description>Recent content in Aral on Calogero Sanfilippo</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 03 May 2026 10:00:00 +0200</lastBuildDate><atom:link href="http://calogerosanfilippo.it/tags/aral/index.xml" rel="self" type="application/rss+xml"/><item><title>aral 1.0.0: first stable release with namespace support</title><link>http://calogerosanfilippo.it/posts/aral-100-released/</link><pubDate>Sun, 03 May 2026 10:00:00 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/aral-100-released/</guid><description>&lt;p&gt;&lt;strong&gt;aral 1.0.0&lt;/strong&gt; is out, marking the library&amp;rsquo;s first stable release.&lt;/p&gt;
&lt;p&gt;The main addition in this version is full &lt;strong&gt;namespace support&lt;/strong&gt; for both the JVM/Android (SAX) and Apple (&lt;code&gt;NSXMLParser&lt;/code&gt;) backends. &lt;code&gt;ElementStartFound&lt;/code&gt; and &lt;code&gt;ElementEndFound&lt;/code&gt; events now carry two additional fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;namespaceURI: String?&lt;/code&gt; — the namespace URI declared for that element, or &lt;code&gt;null&lt;/code&gt; if absent&lt;/li&gt;
&lt;li&gt;&lt;code&gt;localName: String&lt;/code&gt; — the unprefixed name (e.g. &lt;code&gt;creator&lt;/code&gt; for &lt;code&gt;dc:creator&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-this-matters"&gt;
 Why this matters
 &lt;a class="heading-link" href="#why-this-matters"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Without namespace awareness, distinguishing between two &lt;code&gt;title&lt;/code&gt; elements from different vocabularies in the same document requires brittle prefix-matching. With 1.0.0, the parser surfaces the URI directly, so the structure of the document drives the logic — not the prefix conventions an author happened to choose.&lt;/p&gt;</description></item><item><title>aral (finally) indexed on Klibs.io</title><link>http://calogerosanfilippo.it/posts/aral-on-klibs/</link><pubDate>Wed, 26 Nov 2025 11:02:09 +0100</pubDate><guid>http://calogerosanfilippo.it/posts/aral-on-klibs/</guid><description>&lt;p&gt;Starting from yesterday, &lt;a href="http://calogerosanfilippo.it/libs/aral" &gt;aral&lt;/a&gt; is indexed on &lt;a href="https://klibs.io/" class="external-link" target="_blank" rel="noopener"&gt;Klibs.io&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The project is live since &lt;a href="http://calogerosanfilippo.it/posts/aral-is-here/" &gt;October&lt;/a&gt;, but due to &lt;a href="https://github.com/JetBrains/klibs-io-issue-management/issues/149" class="external-link" target="_blank" rel="noopener"&gt;some bug&lt;/a&gt; in Klibs.io indexing, the library wasn&amp;rsquo;t showing up in search results.&lt;/p&gt;
&lt;p&gt;They finally fixed the issue, and now aral is discoverable on Klibs.io.&lt;/p&gt;
&lt;p&gt;Happy coding!&lt;/p&gt;</description></item><item><title>aral 0.6.0 released: support for CDATA</title><link>http://calogerosanfilippo.it/posts/aral-060-released/</link><pubDate>Sat, 01 Nov 2025 20:23:45 +0100</pubDate><guid>http://calogerosanfilippo.it/posts/aral-060-released/</guid><description>&lt;p&gt;&lt;strong&gt;aral 0.6.0&lt;/strong&gt; is now available. It adds &lt;strong&gt;support for CDATA sections&lt;/strong&gt; in XML parsing.&lt;/p&gt;
&lt;h3 id="changes"&gt;
 Changes
 &lt;a class="heading-link" href="#changes"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;CDATA sections are now recognized and emitted as parser events.&lt;/li&gt;
&lt;li&gt;This improves compatibility with XML documents that embed raw text, code, or markup.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>aral 0.5.1 released: A More Robust and Performant Parser</title><link>http://calogerosanfilippo.it/posts/aral-051-released/</link><pubDate>Fri, 31 Oct 2025 22:38:49 +0100</pubDate><guid>http://calogerosanfilippo.it/posts/aral-051-released/</guid><description>&lt;p&gt;&lt;strong&gt;aral 0.5.1&lt;/strong&gt; is now available. It&amp;rsquo;s a small update focused on correctness and efficiency.&lt;/p&gt;
&lt;h3 id="changes"&gt;
 Changes
 &lt;a class="heading-link" href="#changes"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Internal refactoring of the code managing the parser of an empty XML.&lt;/li&gt;
&lt;li&gt;Character data assembly uses &lt;code&gt;StringBuilder&lt;/code&gt; for better performance.&lt;/li&gt;
&lt;li&gt;Documentation for &lt;code&gt;parse&lt;/code&gt; updated to reflect the correct behavior.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="links"&gt;
 Links
 &lt;a class="heading-link" href="#links"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/csanfilippo/aral/releases/tag/0.5.1" class="external-link" target="_blank" rel="noopener"&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Diff 0.5.0 → 0.5.1](&lt;a href="https://github.com/csanfilippo/aral/compare/0.5.0...0.5" class="external-link" target="_blank" rel="noopener"&gt;https://github.com/csanfilippo/aral/compare/0.5.0...0.5&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>aral 0.5.0 released</title><link>http://calogerosanfilippo.it/posts/aral-050-released/</link><pubDate>Mon, 20 Oct 2025 22:37:25 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/aral-050-released/</guid><description>&lt;p&gt;Version &lt;strong&gt;0.5.0&lt;/strong&gt; of aral is now available.&lt;/p&gt;
&lt;p&gt;This update does not introduce new features or breaking changes. The main focus has been a &lt;strong&gt;refactoring of the internal engine&lt;/strong&gt;. The goal of this work is to make the codebase easier to maintain and extend in the future, while keeping the external API stable.&lt;/p&gt;
&lt;h3 id="highlights"&gt;
 Highlights
 &lt;a class="heading-link" href="#highlights"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Internal engine refactored for clarity and maintainability&lt;/li&gt;
&lt;li&gt;No changes required for existing users&lt;/li&gt;
&lt;li&gt;API and behavior remain the same&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="installation"&gt;
 Installation
 &lt;a class="heading-link" href="#installation"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;aral is published on Maven Central. To use the latest version:&lt;/p&gt;</description></item><item><title>aral 0.4.1 released</title><link>http://calogerosanfilippo.it/posts/aral-041-released/</link><pubDate>Thu, 16 Oct 2025 20:53:32 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/aral-041-released/</guid><description>&lt;p&gt;aral 0.4.1 is now available.&lt;/p&gt;
&lt;p&gt;This patch release fixes a bug in the XML parser related to character handling between elements.&lt;/p&gt;
&lt;p&gt;When processing characters inside elements like &lt;code&gt;&amp;lt;element&amp;gt;characters&amp;lt;/element&amp;gt;&lt;/code&gt;, push parsers emit multiple character events. The previous implementation did not accumulate these fragments correctly, resulting in incomplete or malformed values during resource parsing.&lt;/p&gt;
&lt;p&gt;The fix ensures that character data is properly buffered across consecutive events, restoring expected behavior for XML resource interpretation.&lt;/p&gt;</description></item><item><title>aral 0.4.0 Released</title><link>http://calogerosanfilippo.it/posts/aral-040-released/</link><pubDate>Sat, 11 Oct 2025 07:59:17 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/aral-040-released/</guid><description>&lt;p&gt;Aral 0.4.0 is now available. This release introduces support for the &lt;a href="https://developer.android.com/kotlin/multiplatform/plugin" class="external-link" target="_blank" rel="noopener"&gt;Android Gradle Library Plugin for Kotlin Multiplatform (KMP)&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="android-gradle-library-plugin-for-kmp"&gt;
 Android Gradle Library Plugin for KMP
 &lt;a class="heading-link" href="#android-gradle-library-plugin-for-kmp"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;com.android.kotlin.multiplatform.library&lt;/code&gt; plugin is the officially supported way to add an Android target to a Kotlin Multiplatform library module. It replaces the previous use of &lt;code&gt;com.android.library&lt;/code&gt; in KMP projects, which is now deprecated.&lt;/p&gt;
&lt;p&gt;Key characteristics of the plugin include:&lt;/p&gt;</description></item><item><title>aral 0.3.0 released — now with JVM support</title><link>http://calogerosanfilippo.it/posts/aral-030-released/</link><pubDate>Mon, 06 Oct 2025 22:10:25 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/aral-030-released/</guid><description>&lt;p&gt;Version &lt;strong&gt;0.3.0&lt;/strong&gt; of &lt;a href="http://calogerosanfilippo.it/projects/aral" &gt;aral&lt;/a&gt; is out — and it brings &lt;strong&gt;JVM support&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="expanding-the-reach"&gt;
 Expanding the reach
 &lt;a class="heading-link" href="#expanding-the-reach"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Until now, aral has focused on mobile and embedded platforms: Android, iOS, watchOS, tvOS, macOS. With this release, it steps confidently into the &lt;strong&gt;JVM world&lt;/strong&gt;, making it usable in desktop apps, server-side Kotlin, and even scripting environments.&lt;/p&gt;
&lt;p&gt;This means you can now use aral in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kotlin/JVM projects&lt;/li&gt;
&lt;li&gt;Spring Boot services&lt;/li&gt;
&lt;li&gt;CLI tools and desktop utilities&lt;/li&gt;
&lt;li&gt;Anywhere the JVM runs&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Announcing aral: a multiplatform XML parser with a lightweight philosophy</title><link>http://calogerosanfilippo.it/posts/aral-is-here/</link><pubDate>Sun, 05 Oct 2025 08:42:44 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/aral-is-here/</guid><description>&lt;p&gt;I’m happy to share something I’ve been working on: &lt;strong&gt;aral&lt;/strong&gt;, a Kotlin Multiplatform library for parsing XML.&lt;/p&gt;
&lt;h2 id="the-motivation"&gt;
 The motivation
 &lt;a class="heading-link" href="#the-motivation"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;XML may not be the trendiest format, but it remains deeply embedded in the systems we rely on every day — from configuration files to data exchanges in healthcare, finance, and beyond.&lt;/p&gt;
&lt;p&gt;When building with Kotlin Multiplatform, I found the existing XML tooling either too heavy or too tied to a single platform. What I wanted was something &lt;strong&gt;lightweight, predictable, and consistent across environments&lt;/strong&gt;. That gap is what led to aral.&lt;/p&gt;</description></item></channel></rss>