Metalama Status Update (May 2022)

by Gael Fraiteur on 31 May 2022

It has been another month since our last update so I wanted to give you a fresh status briefing.

New features

  • Completely automated multi-repo deployment. Our build and deployment process is now completely integrated. We can now ship, in just a few clicks, all kinds of artifacts coming from 9 different git repos (and counting). We have created a custom build integration front-end, free and open source on GitHub.

  • Contracts allow you to validate or normalize the value assigned to field, properties, or parameters. Check the documentation for details. There is a great example that validates all non-nullable parameters of public methods in the project, just with a few lines of code.

  • Template Parameters and Generic Templates. Template can now have compile-time parameters and type parameters (i.e. generic parameters). Generic templates are especially convenient when your template code needs to use a generic method or type whose generic argument depends on the type of the declaration to which the aspect is applied. For details, see the documentation of this feature.

  • Telemetry. Anonymous error and usage reports now get automatically uploaded. You can of course opt out.

  • Extensibility examples. We fixed several bugs around the extensibility of Metalama using the Roslyn API. We are not completely finished with this use case, but you can already look at the following examples:

  • Documentation. We have completed chapters the following articles:

New feature gap

We have decided to add a new feature to Metalama 1.0: the ability to pull a dependency from the constructor. It seems important to implement aspects that need to consume a dependency from a container.

What’s next

We’re now really close to a feature-complete release. The only feature gap is the one we have recently discovered - pulling dependencies.

In the next weeks, we will be focusing on the following:

  • Testing and bug fixing
  • Documentation:
    • Migration from PostSharp
  • Licensing

We still expect to be code complete in June and to spend the summer in stabilizing everything.

In the mean time, your feedback is greatly appreciated and, most likely, can have large impact on the final product.

Happy meta-programming with Metalama!

-gael