Disclaimer: I have no idea if the title is true or not. There are no world cups for languages competing against each other for the trophy. What I do know is that X++ has taken some gigantic leaps forward lately in terms of extensibility – if someone decides to host a world cup; I’d be happy to sign up X++ for the contest! And by the way: Isn’t X++ the perfect name for the most eXtensible language?
“Extensibility” is an overloaded term. In this context it means the ability to extend code from another library without editing their source code – in a manner that allows multiple extenders to live side-by-side without risk of collision.
Here is a top-ten list of the extensibility features in X++:
- You can change text resources (aka. labels).
- You can extend enums.
- You can add controls, datasources methods to forms.
- You can add fields, relations, indices and methods to tables.
- You can add new methods to classes.
- You can add state to classes.
- You can wrap any protected and public method and thereby inject your code into the execution.
- You can subscribe to custom and system events using attributes. (Yes – we have a patent on this).
- You can respond to delegates in a safe manner – graceful handling of multiple respondents.
- You can use the SysExtension framework for plug’n play class factories.
The innovation outlined above is driven by the need to deprecate source code editing of other’s libraries (overlayering is just glorified source code editing). This has only been possible as we are in full control of the language and compiler. A strong justification for keeping a proprietary language alive and kicking.
For visitors not familiar with X++, let me mention that X++ is a .NET language; the compiler emits IL code; the CLR is the runtime. The language is used to write business applications in Dynamics 365 for Finance and Operations.