Metalama Status Update, Mid Summer 2025
It’s been over two months since our last status update. After a busy spring that peaked with the open-sourcing of Metalama, summer has been a bit quieter on the development side. Our focus shifted to releasing the source code of both PostSharp and Metalama’s premium packages under a source-available license, while fitting in some vacation time. But don’t worry, the open-source Metalama hasn’t been neglected. We’ve been moving our bug tracker to GitHub, squashing bugs in 2025.1, and tackling one of the last feature gaps between PostSharp and Metalama: the ability to override event invocations.
This article was first published on the Metalama Blog.
Metalama 2025.1 - Maintenance
Since the last status update, we’ve released three maintenance builds, focusing solely on bug fixes: 2025.1.12, 2025.1.11, and 2025.1.10.
In general, we now consider 2025.1 to be stable.
Metalama 2025.2 - WIP
The focus of Metalama 2025.2 is a single new feature: the ability to intercept the invocation of events. This addresses one of the last gaps with PostSharp — the main remaining one is the ability to advise the await operator.
The first preview is planned for late August or early September, with an RC in late September and GA in late October.
We aim to make it possible to write aspects like this:
public class SafeEventAttribute : OverrideEventAspect
{
public override dynamic? OverrideEvent( dynamic? handler )
{
try
{
return meta.Proceed();
}
catch ( Exception e )
{
Console.WriteLine( e );
// First time shame on you, second time shame on me.
meta.Target.Event.Remove( handler );
throw;
}
}
}
Metalama 2026.0 - Roadmap
Metalama 2026.0 will add support for .NET 10 and C# 14.
Our goal this year is to release the GA days after Microsoft’s own GA, expected in mid-November. Previously, our tradition was to release in the early days of the new year, but this time we’ll aim to be ready sooner with platform support, ensuring the release isn’t bogged down with other features.
We want to enable Metalama users to utilize new C# features in normal code. However, support for new language features in aspect code, such as generation of extension members, will be delayed to another version. This should ensure we’re ready with the GA in November.
Equality comparison sample
We’ve published a new comprehensive example: implementing equality comparison, i.e., IEquatable<T> and its companions. Metalama can now implement the complete pattern.
The ultimate goal is to be able to write code like this:
public partial class Entity
{
[StringEqualityMember( StringComparison.InvariantCultureIgnoreCase )]
public required string EntityType { get; init; }
[EqualityMember]
public int Id { get; init; }
public Guid ObjectId { get; } = Guid.NewGuid();
}
Check it out step by step: Equality Comparison Example.
Project management on GitHub
Being open source is not just about making the source code public. It’s also about collaboration and transparency, including in product and project management.
This summer, we have moved our project management to a public GitHub project, and migrated our complete backlog.
You might be surprised by the number of bugs now. Most of them have been discovered internally and never reported by the community. We try to fix community- and customer-reported bugs as soon as possible, but delay internally-discovered bugs until we are done with more important features.
Source access for proprietary components
As you know, Metalama is 85% open-source, with premium components available for enterprise customers who need advanced features and commercial support.
We’re happy to announce that the source code of premium packages is now available, together with PostSharp’s source code, to enterprise customers under a relatively permissive proprietary source-available license, allowing you to modify, build, and distribute the software for various purposes. The principal scenarios are troubleshooting, supply chain security, and supply chain resilience.
Here’s the process:
- Sign in to the customer portal.
- Check your support entitlements. You must have an Enterprise support plan (E1 or higher). If you’re a PostSharp customer, you might have it without knowing it.
- Go to the source access page.
- Sign the Non-Disclosure/Non-Competing Agreement online (or offline).
- Allow for one business day to review the signature and update your account.
- Return to the source access page and create Git users and passwords.
- Clone the
Metalama.Premiumrepository using Git.
For details, see PostSharp Is Now Source Available on PostSharp’s blog.
Summary
Even though summer has been quieter for Metalama, we’ve made significant progress with moving the project management to GitHub, fixing bugs, keeping up with Roslyn, and adding small features. Down the road, the upcoming features in 2025.2 are set to further close the gap with PostSharp, and 2026.0 will be compatible with .NET 10 and C# 14. The new source access policy for enterprise customers also marks a significant step in our journey towards greater transparency.
Happy meta-programming!
P.S. If you’re looking for more frequent updates than our monthly (or less) newsletter provides, we regularly share quick announcements and technical tidbits on Metalama Briefs. Subscribe to this RSS feed with your favorite newsreader, which won’t manipulate your timeline like social media algorithms do.