Andrew here from Planimeter, the guys who make Grid, the largest pure-Lua 2D game engine. <a href="https://www.planimeter.org/grid-sdk/" rel="nofollow">https://www.planimeter.org/grid-sdk/</a><p>One of the biggest difficulties I have with managing a project as large as Grid is, is that you just barely start to become large enough for one person to have difficulties not only keeping all the finer details in your brain, but writing extensive documentation is exceptionally time expensive. And we do a really bad job of it.<p>We're supposed to be launching Grid Engine 10 sometime between now and March, but I don't think we're going to make it, because we haven't finished writing documentation for the next new major version.<p>So I looked into tooling to get around these problems, but you have to hint at types in Lua comments. I also looked into typed variations of Lua, but there's a few, and some of them are all-or-nothing solutions.<p>Teal has been out for a while, but I'm always pleasantly reminded of what exists in the Lua space, and how people continue to create great solutions for what I accept to be a more niche language.<p>I hope that these solutions continue to be shared around on HN, because even though Lua's ecosystem is small enough for many of us to recognize one another, there's a lot more tech out there than Lua and you forget what people are working on.<p>For as mature as Lua is, there are still complimentary solutions that are lacking in maturity or solutions that still don't exist all together. It's a very exciting space for developers.
> Every type in Teal accepts nil as a valid value, even if, like in Lua, attempting to use it with some operations would cause a runtime error, so be aware!<p>There has been a fair bit of discussion about this design decision/limitation recently in other channels. Seems like that's one of the main safety checks you'd want/expect from a compiler.<p>That said - Pallene[1] and Nelua[2] are two very promising projects in similar spaces (although both are offering more than Teal's scope)<p>[1]: <a href="https://github.com/pallene-lang/pallene" rel="nofollow">https://github.com/pallene-lang/pallene</a><p>[2]: <a href="https://github.com/edubart/nelua-lang" rel="nofollow">https://github.com/edubart/nelua-lang</a>
I wanted to create a language named Teal, just to be able to name the compiler Teal'c (or really tealc). I was disappointed the name was already taken, and even more disappointed the compiler is just tl.
Worth mentioning TypescriptToLua here I think.<p><a href="https://typescripttolua.github.io/" rel="nofollow">https://typescripttolua.github.io/</a>
> It compiles Teal into Lua using<p>We need better and more rigorous terms in computing science. This use of the compiler word blurs the meaning of interpreted vs compiled languages.<p>I was under the assumption that it would generate executable machine code, not Lua source code.