<feed xmlns='http://www.w3.org/2005/Atom'>
<title>fwd/include, branch master</title>
<subtitle>A programming language that cannot return</subtitle>
<id>https://metanimi.dy.fi/cgit/fwd/atom?h=master</id>
<link rel='self' href='https://metanimi.dy.fi/cgit/fwd/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/'/>
<updated>2026-05-01T19:16:26Z</updated>
<entry>
<title>add support for coverage</title>
<updated>2026-05-01T19:16:26Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2026-05-01T17:35:00Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=8946c27306abed7065afad3f015df5ee81e72ad2'/>
<id>urn:sha1:8946c27306abed7065afad3f015df5ee81e72ad2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>run formatter</title>
<updated>2026-05-01T11:40:06Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2026-05-01T11:40:06Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=7a68d1106b37e16c24e58bc77ce49fc6beadce9c'/>
<id>urn:sha1:7a68d1106b37e16c24e58bc77ce49fc6beadce9c</id>
<content type='text'>
+ Should really get this done automatically somehow
</content>
</entry>
<entry>
<title>add initial reference invalidation</title>
<updated>2026-03-13T12:09:53Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2026-03-13T12:07:29Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=ed7da0d9e31e8dd6847e2e603f0d1943330cf4d0'/>
<id>urn:sha1:ed7da0d9e31e8dd6847e2e603f0d1943330cf4d0</id>
<content type='text'>
+ Makes vec example actually memory safe, which is cool

+ Specify owner &gt; sub relationships with "&gt;" in closure parameter
  lists, uses the same group idea as closure calls

+ Relies on users implementing functions in a consistent manner,
  since you can kind of do whatever with pointers. Presumably
  there would be a stdlib of vec/map/set etc. which applications
  could then use and by proxy be memory safe. Although some more
  checks wouldn't hurt, I suppose?

+ Not sure I like having reference invalidation be 'just a move',
  seems to work alright but the semantics of it are a bit muddy.
</content>
</entry>
<entry>
<title>example/vec fixes</title>
<updated>2026-02-25T23:19:56Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2026-02-25T23:19:56Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=e36f35d0ee1132a8aa998891ca333ff0c4ed64c2'/>
<id>urn:sha1:e36f35d0ee1132a8aa998891ca333ff0c4ed64c2</id>
<content type='text'>
+ Doesn't quite work yet, but compiles fine. Some issues were in the
  example itself, heh
</content>
</entry>
<entry>
<title>filter out empty nodes from statement list</title>
<updated>2026-02-25T20:55:35Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2026-02-25T20:54:10Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=0dd32cca3b8ad7e2a34ec815996e68e2f81c1da1'/>
<id>urn:sha1:0dd32cca3b8ad7e2a34ec815996e68e2f81c1da1</id>
<content type='text'>
+ Fixes tail call analysis that was accidentally broken by
  64146b46da45ce69ab380add00459f7b60fe9196

+ Kind of wasteful to first allocate empty node and then just throw it
  away, but I don't have any better ideas at the moment
</content>
</entry>
<entry>
<title>vec example produces C, but broken C</title>
<updated>2026-02-25T20:42:22Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2026-02-25T20:42:22Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=ee50ee4ef760521c0764177b3bb8fed25beb2092'/>
<id>urn:sha1:ee50ee4ef760521c0764177b3bb8fed25beb2092</id>
<content type='text'>
</content>
</entry>
<entry>
<title>improve move checker to detect pointer leaks</title>
<updated>2026-01-06T15:19:52Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2026-01-06T15:17:27Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=99601456e6ad4c86287ba786923c99c5499037e0'/>
<id>urn:sha1:99601456e6ad4c86287ba786923c99c5499037e0</id>
<content type='text'>
+ Currently requires a lot of unnecessary `forget` statements,
  but at least some can likely be eliminated by doing some
  basic origin analysis, kind of like with groups
</content>
</entry>
<entry>
<title>work towards a simple integer vector implementation</title>
<updated>2026-01-06T15:19:52Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2025-12-28T22:07:16Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=c7b41b47d038fd4973da05224b7aa29efaae1784'/>
<id>urn:sha1:c7b41b47d038fd4973da05224b7aa29efaae1784</id>
<content type='text'>
+ Hopefully shows that useful programs can be implemented with
  the rules present

+ Still missing at least external functions with non-void returns
</content>
</entry>
<entry>
<title>implement enough type analysis for vector example</title>
<updated>2026-01-06T15:19:52Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2025-05-07T18:22:38Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=d501b2c9ebab6f5b90c808ea0e5fde912818707d'/>
<id>urn:sha1:d501b2c9ebab6f5b90c808ea0e5fde912818707d</id>
<content type='text'>
+ Big commit, scary
+ Some details still a bit up in the air, mainly about move checking
  structure member access ('register' types are freely copied I guess,
  same as in rust? How about user types?)
</content>
</entry>
<entry>
<title>WIP: rewrite C++ backend to be C</title>
<updated>2025-03-30T19:41:21Z</updated>
<author>
<name>Kimplul</name>
<email>kimi.h.kuparinen@gmail.com</email>
</author>
<published>2025-03-30T19:36:53Z</published>
<link rel='alternate' type='text/html' href='https://metanimi.dy.fi/cgit/fwd/commit/?id=957da9056c36a5eea15c6058701f7465b31f64a8'/>
<id>urn:sha1:957da9056c36a5eea15c6058701f7465b31f64a8</id>
<content type='text'>
+ C allows for a bit more control, and we can manually handle closure
  contexts. For example `examples/fib.fwd` now works for effectively any
  `n`, pretty cool.

+ Fairly slow Fibonacci, I must admit. Initial profiling indicates it's
  mainly due to branch mispredictions, but I'll have to look into this a
  bit deeper.

+ The code is a bit hacked together, for now I'm more interested in
  getting things working, I'll worry about making things pretty later.

+ For testing, there's also initial support for modules, just so I can
  print stuff to the terminal

+ This commit is way too big, lol
</content>
</entry>
</feed>
