Roslyn – Arbeit an C# 7
Kommentare

Die Arbeiten an der nächsten Generation der Sprachen C# und VB.NET laufen auf Hochtouren. Das Team um die .NET Compiler Plattform, auch bekannt unter dem Namen “Roslyn”, veröffentlicht in regelmäßigen Abständen die Protokolle und Notizen der Design Meetings.

Diese werden auf GitHub als Issues veröffentlicht und können hier eingesehen werden. Ziel ist es, die Community einzubinden, die zu den jeweiligen Design Meetings und Resultaten Feedback geben kann.

Interaktive Review Meetings für APIs und Sprachmerkmale wechseln sich mit Design Meetings zu C# und VB.NET ab. Abbildung 1 zeigt die Meetings Notes.

Figure 1: Liste der Design Meeting Notes des Roslyn-Teams

Interactive Window API

Im letzten Review Meeting kam das Team zusammen, um über Änderungen am Interactive Window API zu sprechen (zu finden auf GitHub). Das Interactive Window ist ein Tool in Visual Studio, in dem Entwickler Code-Schnipsel direkt ausführen können. Dazu wird eine REPL (read-eval-print-loop) verwendet, also eine Schleife zum Lesen und Auswerten von Eingaben und anschließender Ausgabe der Ergebnisse. Das API erlaubt den einzelnen Sprachteams von Microsoft, mittels eines Evaluators eine REPL für eine spezifische Sprache zur Verfügung zu stellen. Die Teams müssen dazu bestimmte Interfaces in dem Evaluator implementieren.

Vorschläge und Pull Requests für das Interactive Windows API kamen insbesondere aus dem Team um Dino Viehland, das für die Python Tools für Visual Studio zuständig ist. Im Grunde wurden Umbenennungen und Erweiterungen für Asynchronität in den oben erwähnten Interfaces diskutiert. Ziel ist es, die Schnittstellen so sauber, konsistent und effizient wie möglich zu halten. Das Protokoll des Meetings kann unter GitHub eingesehen werden.

Neue Sprachfeatures in C#

Im letzten Design Meeting wurde es etwas interessanter, vor allem für Entwicklers. Denn in diesem ging es um neue Sprachfeatures in C# selbst. Wie bereits zuvor angekündigt, möchte das Roslyn-Team einen scharfen Fokus auf den Umgang mit Daten in C# und VB.NET richten. So diskutierte das Team über Tupel, Records und deren Dekonstruktion (also Zerlegung in seine Werte bei Zuweisungen), sowie multiple asynchrone Rückgabewerte für Methoden.

Einen ersten Entwurf lieferte das Team für unveränderliche Typen mit Werte-Semantik. Darunter versteht das Team unveränderliche Klassen, die einen veränderlichen Wert besitzen. Dieser Wert kann eine komplexe Struktur sein. Der Test auf Gleichheit zweier Instanzen eines solchen Typs basiert auf dem entsprechenden Wert, den die Instanz besitzt. Das könnte wie folgt ausshen:

 public class Person 
{
    public readonly PersonValue Value;
    public Person(PersonValue value) { Value = value; }
    public string Name => Value.Name;
    public int Age => Value.Age;
    …
    public struct PersonValue
    {
        public string Name;
        public int Age;
    }
}

Damit ist es möglich, Member-basierten Code zu vermeiden. Alle Operationen laufen auf den veränderlichen Wert des unveränderlichen Typs.

Versteht der Compiler erst einmal derartige Patterns für unveränderliche Typen, können diese z.B. für die Implementierung von Records verwendet werden. Records könnten so aussehen:

 class Person(string Name, int Age);

Der Compiler würde daraus eine Klasse wie diese generieren:

 class Person 
{
    public readonly (string Name, int Age) Value;
    public Person((string Name, int Age) value) { Value = value; }
    public string Name => Value.Name;
    public int Age => Value.Age;
    public override bool Equals(object other) => (other as Person)?.Value.Equals(Value) ?? false; // or similar
    public override int GetHashCode() => Value.GetHashCode;
}

Dekonstruktion wäre dann auf diesem Weg möglich:

 (var n, var a) = GetPerson(); // deconstructed as per the `Value` tuple

Das Protokoll des Meetings befindet sich hier.

Mit den aktuellen Veröffentlichungen der Arbeitsergebnisse zeigt das Roslyn-Team, dass es seinen Plan durchaus einhalten möchte. Die oben beschriebenen Entwürfe sind eben zuerst Entwürfe und das Team stellt diese zur Diskussion in der Community.

Aufmacherbild: Students University Learning Communication Concept von Shutterstock / Urheberrecht: Rawpixel

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -