Well it is Friday the 13th, but it is also our 4-month anniversary. We are back on track with our projects and have done some necessary cleanup to our website.

We removed the Polaris project from the Studio Projects page, as we will likely not be getting to this anytime soon. It joins our backlog of ideas that may someday appear there. Next in the queue is project Thrifty Tom, which will be developed alongside MikoPoker once Lyric and Novi are released.

Lyric will now likely be released at version 0.9.1 as originally planned. I don't feel comfortable moving this to version 1.0.0 until it has undergone significantly more testing. I am adding a blacklist as it does not make sense in a new language to allow modules related to Python internals such as traceback and pdb. This is because your source code will be Lyric, not Python itself, and Lyric is its own language. Speaking of pdb, I am going to try and have a minimal step debugger built in to the interpreter, but this will likely come at some point after the first release.

The Studio was initially conceived as a Game Studio to develop Magicka Offline using Unreal Engine. That seems like such a far off dream now, especially for someone who loves to start new projects like me. I am still very much interested in learning game programming, but I want to have a couple of games under my belt before I tackle something like Unreal Engine.

But Lyric is the top priority right now so back to Lyric we go. I know Lyric is mentioned as statically typed in the spec, but currently type checking occurs at runtime. Types cannot change after they are declared unless it is a var, so in this sense types are static. I have been having lengthy discussions with ChatGPT about the trade-offs of doing static analysis here, and have plans to create an experimental branch which optionally moves type checking that occurs during a semantic analysis phase after parse time and before runtime. Then we can mark the AST Node as type safe, so we don't have to check the type at runtime. This will likely not be an option in 0.9.1, but should be available before 1.0.0. We will collect some real world data about performance and decide on a default mode for 1.0.0. Since all variables are explicitly typed, there should be no reason why we can't do this with our current syntax.

Novi will also be coming along, and its default mode may very well be vi. And then Lyric is supposed to be a teaching language you say and you're forcing vi on people from the beginning. This is not really the case. You can turn off vi mode with set vimode off in the Novi Shell. That is all it takes then it behaves like VSCode as it is the same base editor, Monaco, underneath. I was thinking about calling the option to disable vi mode set novi, but that seemed a little too cheeky even for me. Also, you don't have to use Novi to use Lyric. You can use any editor you like, though most will not recognize the syntax because it is so new. Syntax highlighting extensions for VSCode and Vim will be made available along with the release, and these are the recommended environments. Novi will not be ready yet, but it is coming.

Lyric has come a long way in our first 4 months, but it still has a ways to go. I have no idea how this will perform in the real world and only have time to test a small subset of the available modules. I am building this primarily because I think it is actually fun, but if someone finds it useful it would mean a lot to me too.

— Michael (Aeonath)