The Power of Choice

Coders are constrained in the way they express themselves by the language they are using. Different languages have different strengths and weaknesses, but expert coders are often unable to choose a programming language or library with the combination of strengths they desire. There are many scenarios that produce this result…

About Loyc

Loyc is the idea that all programming languages should interoperate with each other on a high level, so that you can code in the language of your choice without losing interoperability. The Loyc initiative is about finding ways to bring the world’s programming languages closer together, and making developers more productive by giving them options they’ve never had before.

I, David Piepgrass, started the Loyc project in 2007, after I added a feature to a compiler and the makers of that language showed no interest in adding that feature to their language. It got me thinking that progress in the design of popular programming languages is held back by the gatekeepers we put in charge of them. It seemed to me that programming languages should offer ways for users to add features, in such a way that two features made by different people should ordinarily be compatible.

Since Microsoft .NET was the only environment designed for multi-language interoperability, I started with the goal of making a .NET compiler that accepted multiple syntactic styles (e.g. Visual Basic and C#) so that

  1. Code from multiple languages could combine into a single binary, with mutual dependencies between the languages. This would eliminate the need to write all your new code in the same language as your old code. It would also allow building or using “experimental” languages without hurting interoperability.
  2. Existing programming languages could be extended with new features. Most importantly, the hope was that new features could be created by third parties unaffiliated with the Loyc compiler, thus democratizing programming language design.

My project didn’t get very far, because of the difficulty of creating sufficiently flexible extensibility mechanisms that would allow different programming language features written by different people and unaware of each other to “get along” and work together. Eventually, in early 2012, I decided to tackle a simpler problem first, by designing Enhanced C#, which has been a more successful project due to its narrower focus.

In the same time frame that I developed Enhanced C#, I also created

I call these “Loyc projects” because they are all meant to contribute to the twin goals of

Here are some other projects that I have been thinking about:

These days I’m thinking the MLSL and SIL should be based on WebAssembly, which, if I have anything to say about it, will take over the world. So far, I haven’t had much say in the matter.

At the moment, all these “Loyc tools” are limited to the .NET platform, but Microsoft has refused to fix the design flaws in .NET, and it is clear that they will not generalize .NET to support new programming languages, either. Therefore, I have decided to shift my focus to WebAssembly in the future.

I’d like help to

Please send me a message if you want to help, or to inform me of any other interoperability-related initiatives. You can reach me at, with account name qwertie256.