/Language-suggestions

Collecting ideas for a new .NET language that could replace C#

A new .NET programming language in the making

Discord

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:

  • It is strongly statically typed
  • It is not academic & should be easily used by a regular .NET developer
  • It should be more or less readable by people not knowing it (as opposed to ML, for instance)
  • It should be debuggable
  • It prefers generalized approaches over sugared special cases
  • It adds a bigger and more worked out feature earlier, than an underspecified one that will result in extra features to work out the missed use cases

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

  • Proposes a language idea. No strict requirements, so for now, any idea is welcomed
  • Tells about your experience using any programming language. Tell us what you find interesting about a language or what you disliked about it