Updates for June 2023

Author: thothonegan
Tags: c++ canis wolf_engine website hguild catalyst

A lot has happened over the last few months! Theirs a lot of updates to various programs.

Canis

Currently, I'm working on some major improvements to Canis and Okami. I'm adding support for exceptions to be handled, which requires some major changes into how c++ functions will be bound. Specifically:

  • C++ functions have a custom attribute to document any single exception type it can use.
  • If this attribute is used, Okami adds an extra return to that function with a new marker, marking it as an ErrorReturn. This means c++ functions can now have multiple returns.
  • When generating the binder, Okami will write out a catch for the exception type. No matter what, it will also write out an unknown exception handler to prevent exceptions from crossing over the binding boundary.
  • Lastly, all binders now return a status code - either Success (what it does now), Error (if a known exception fired) or UnexpectedError (some other exception we cant return). This can then let the caller know what return to use.

This will then feed into other future things, for example Ruby can then throw proper exceptions across the language boundary. And Wolf's error handling strategy will be changing drastically accordingly - so stay tuned about that.

Wolf

Another major update has been released (2.7). Some of the bigger features:

  • WolfWeb/WolfHttp have had quite a few cleanups, and now supports arbitrary mimetypes.
  • WolfJwt - can now handle Jwt tokens
  • WolfFile - A new basic filesystem library when you don't need the complexities of WolfVFS. Eventually WolfVFS will use WolfFile for all the file drivers, but right now its experimental.
  • CanisInspectorWebSrv: A webserver version of WolfTool
  • Lots of other bug fixes and library updates.

Website

The website has had an entire rewrite. While not much has happened on the frontend yet, the backend is completely different. This allowed the blog to be hosted directly, along with an atom feed! Much more to come as It's adjusted to start using the new capabilities of the backend.

Other

Catalyst/Hguild have had some improvements in how they manage CI builds and credentials. This has helped catch cases where HGuild would accidentally try to switch to source builds when binaries weren't available, inflating build times. As part of this, it also is much better at updating dependencies. HGuild also can now associate different default branches for each project.

Outside that, work has started on a few IntelliJ plugins. A simple Wexpr plugin is already working and some experimental plugins to help working with Wolf. Hopefully will have more to talk about there soon!