Home

Awesome

<p align="center"> <img src="./Resources/Logo-Long.svg#gh-light-mode-only" width=60%> <img src="./Resources/Logo-Long-Inverted.svg#gh-dark-mode-only" width=60%> </p> <h2 align="center">A new .NET programming language in the making</h1> <p align="center"> <a href="https://discord.gg/gHfhpPFzYu"><img alt="Discord" src="https://badgen.net/discord/members/gHfhpPFzYu?icon=discord&color=D70&labelColor=F80&label=Join+our+Discord!"></a> </p>

Important about this repository

This was the initial repository we created to formulate very random ideas about designing a language. There are many-many issues discussing design choices ranging from "the usual" to very radical or plain weird ones. The language isn't the collection of these issues. We use these issues to initiate discussions, shift perspectives, collect ideas from other languages and so on. Currently, the actual specification is extremely small and bare-bones.

I just want to see how the language looks!

See the Samples folder.

The aims of the language

I want to do to C# what Kotlin did to Java

Draco should be a high-level language which could replace C#. Here are a few major key points that we aren't changing:

Current state of the project

There is a very basic and not finished Compiler.

Right now we are still working out the core of the language. We do this by collecting ideas, inspiration, frustrating things and useful bits from existing languages. We have started working on a specification (see the Specification folder) and you can see an examples folder that we try to keep updated to more or less reflect our current idea of the language. You can also take a look at the feature tracking document, where we keep track of all features we want to investigate.

Our workflow

  1. We start from an idea or a discussion, usually either on our Discord server or in an issue.
  2. The ideas we like are then worked on as an issue, we append comments, elaborate on the features and internals.
  3. When we want to add something to the specification, we either create a new, or edit an existing file in the Specification folder, write the specification document and open a Pull Request with the name RFCnnnn - Short description.
  4. We critique the RFC, modify if needed, even leave out features we can't agree on for a while.
  5. When no more comments arrive on the RFC and we can agree on the feature, we merge it into the specification.

Propose your ideas!

Now that you grasped the main idea, feel free to open an issue which