<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="https://pooka.run/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Pooka news</title>
    <link>https://pooka.run/</link>
    <atom:link href="https://pooka.run/feed.xml" rel="self" type="application/rss+xml" />
    <description>Releases, guides and stories from the Pooka community.</description>
    <language>en</language>
    <item>
      <title>Pooka 0.2.0: alternatives, spreads and projections</title>
      <link>https://pooka.run/news/pooka-0-2-0/</link>
      <description>&lt;p&gt;Pooka 0.2.0 is out. Download it from the &lt;a href=&quot;https://github.com/pooka-lang/pooka/releases/tag/v0.2.0&quot;&gt;release page&lt;/a&gt;, or run the installer again:&lt;/p&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;curl -fsSL https://pooka.run/install.sh | sh&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;pattern-alternatives&quot;&gt;Pattern alternatives&lt;/h2&gt;
&lt;p&gt;Match arms that do the same thing can now share one body. Alternatives work with guards, and with bindings as long as every alternative binds the same names with compatible types.&lt;/p&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;pooka&quot;&gt;&lt;code class=&quot;language-pooka&quot;&gt;&lt;span class=&quot;tok-keyword&quot;&gt;match&lt;/span&gt; arguments &lt;span class=&quot;tok-punct&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;tok-punct&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;tok-string&quot;&gt;&quot;--help&quot;&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;tok-string&quot;&gt;&quot;-h&quot;&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;tok-function&quot;&gt;help&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;tok-punct&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;tok-string&quot;&gt;&quot;--version&quot;&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;tok-string&quot;&gt;&quot;-V&quot;&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;tok-function&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;)&lt;/span&gt;
  _ &lt;span class=&quot;tok-punct&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;tok-function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;(&lt;/span&gt;arguments&lt;span class=&quot;tok-punct&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;tok-punct&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;list-spreads&quot;&gt;List spreads&lt;/h2&gt;
&lt;p&gt;Lists can be built with a spread tail. It compiles straight to cons cells, so prepending stays as cheap as it should be.&lt;/p&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;pooka&quot;&gt;&lt;code class=&quot;language-pooka&quot;&gt;&lt;span class=&quot;tok-keyword&quot;&gt;let&lt;/span&gt; path &lt;span class=&quot;tok-punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;[&lt;/span&gt;first&lt;span class=&quot;tok-punct&quot;&gt;,&lt;/span&gt; second&lt;span class=&quot;tok-punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;..&lt;/span&gt;rest&lt;span class=&quot;tok-punct&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;tuple-projections&quot;&gt;Tuple projections&lt;/h2&gt;
&lt;p&gt;Read tuple elements by position. Projections chain, and reaching past the end is a compile-time error, not a crash.&lt;/p&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;pooka&quot;&gt;&lt;code class=&quot;language-pooka&quot;&gt;&lt;span class=&quot;tok-keyword&quot;&gt;let&lt;/span&gt; pair &lt;span class=&quot;tok-punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;tok-string&quot;&gt;&quot;owl&quot;&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;tok-punct&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;tok-number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;tok-keyword&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;tok-punct&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;tok-keyword&quot;&gt;echo&lt;/span&gt; pair&lt;span class=&quot;tok-punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;tok-number&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;tok-keyword&quot;&gt;echo&lt;/span&gt; pair&lt;span class=&quot;tok-punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;tok-number&quot;&gt;1.0&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&quot;callout&quot;&gt;
  &lt;span class=&quot;ic&quot; aria-hidden=&quot;true&quot;&gt;✦&lt;/span&gt;
  &lt;div&gt;&lt;p&gt;Positions start at zero: &lt;code&gt;pair.0&lt;/code&gt; is the first element.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&quot;fixes&quot;&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Explicit annotations on local bindings are respected during generic inference, including nested containers and destructured patterns.&lt;/li&gt;
&lt;li&gt;An imported module that fails to parse no longer produces a misleading “unknown module” error.&lt;/li&gt;
&lt;li&gt;A function&#39;s declared signature stays available after an error in its body, so correct call sites are not blamed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;thank-you&quot;&gt;Thank you&lt;/h2&gt;
&lt;p&gt;Every one of these changes started as an issue. If something surprises you, &lt;a href=&quot;https://github.com/pooka-lang/pooka/issues&quot;&gt;tell us&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Fri, 13 Nov 2026 00:00:00 GMT</pubDate>
      <dc:creator>The Pooka team</dc:creator>
      <guid>https://pooka.run/news/pooka-0-2-0/</guid>
    </item>
    <item>
      <title>Hello, BEAM: Pooka 0.1.0</title>
      <link>https://pooka.run/news/pooka-0-1-0/</link>
      <description>&lt;p&gt;Pooka 0.1.0 is the first release of the compiler and its command-line toolchain, licensed under the Apache License, Version 2.0.&lt;/p&gt;
&lt;p&gt;The whole toolchain is one file, &lt;code&gt;pooka&lt;/code&gt;. It creates projects, builds, runs, tests, formats, documents and publishes them, and it only asks for Erlang/OTP 29 in return.&lt;/p&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;pooka new lantern
cd lantern
pooka run&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;New here? Start with &lt;a href=&quot;https://pooka.run/docs/getting-started/&quot;&gt;Getting started&lt;/a&gt;, then take &lt;a href=&quot;https://pooka.run/tour/&quot;&gt;the tour&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Tue, 10 Nov 2026 00:00:00 GMT</pubDate>
      <dc:creator>The Pooka team</dc:creator>
      <guid>https://pooka.run/news/pooka-0-1-0/</guid>
    </item>
  </channel>
</rss>