Nächste Schritte 2

Zustand


Wir arbeiten hart an Go 1.13, dessen Veröffentlichung hoffentlich Anfang August dieses Jahres stattfinden wird. Dies ist die erste Version, die Änderungen speziell in der Sprache (und nicht nur geringfügige Änderungen an der Spezifikation) nach einem langen Moratorium für solche Änderungen enthält.


Um zu diesen Änderungen in der Sprache zu gelangen, haben wir mit mehreren realisierbaren Vorschlägen begonnen, die aus einer viel größeren Liste von Go 2-Angeboten ausgewählt wurden. Dies entspricht dem neuen Bewertungsprozess für Vorschläge, der im Beitrag „ Go 2, hier kommen wir !“ Beschrieben ist. Wir wollten, dass die anfängliche Auswahl von Vorschlägen durch uns eine relativ geringe Rolle spielt und größtenteils keine Kontroversen hervorruft, damit sie mit hoher Wahrscheinlichkeit den gesamten Prozess durchlaufen. Die vorgeschlagenen Änderungen mussten abwärtskompatibel sein, um so wenig wie möglich zu brechen, da die Module (mit denen Sie in Zukunft die Sprachversion für ein bestimmtes Modul auswählen können) noch nicht der Standard-Erstellungsmodus sind. Kurz gesagt, die aktuelle Anfangsphase der Änderungen zielte eher darauf ab, wieder in Gang zu kommen und Erfahrungen zu sammeln, als große Probleme zu lösen.


Unsere anfängliche Liste von Sätzen - Unicode in der allgemeinen Form in Bezeichnern , binären Ganzzahlliteralen , Trennzeichen für numerische Literale , Bitverschiebungen durch eine vorzeichenbehaftete Ganzzahl - wurde gekürzt und erweitert. Der Vorschlag für Unicode im Allgemeinen in Bezug auf Kennungen hat die Reduzierung nicht überstanden, da es uns nicht gelungen ist, rechtzeitig ein Entwurfsdokument zu erstellen. Der Vorschlag für binäre Ganzzahlliterale wurde erheblich erweitert und hat zu einer umfassenden Überprüfung und Modernisierung der Syntax von numerischen Go-Literalen geführt. Wir haben auch einen Entwurf für einen Vorschlag zur Fehlerprüfung für Go 2 hinzugefügt, der teilweise akzeptiert wurde.


Angesichts dieser anfänglichen Änderungen an Go 1.13 ist es Zeit, über die Zukunft von Go 1.14 nachzudenken und zu bestimmen, was wir als nächstes ändern möchten.


Vorschläge für Go 1.14


Die Ziele, die wir uns heute für Go gesetzt haben, sind die gleichen wie 2007: die Softwareentwicklung skalierbar zu machen . Die drei Haupthindernisse für die Verbesserung der Skalierbarkeit für Go sind das Fehlen eines Paket- und Versionsverwaltungssystems, die Unterstützung eines besseren Fehlerbehandlungssystems und Generika.


Mit der Verbesserung des Go-Modulsystems wird das Problem der Verwaltung von Paketen und Versionen behoben. Verbleibende Fehlerbehandlung und Generika bleiben erhalten. Wir haben an beiden Themen gearbeitet und auf der GopherCon in Denver im vergangenen Jahr Entwürfe für Designdokumente vorgestellt. Seitdem haben wir sie schrittweise verbessert. Zur Fehlerbehandlung haben wir einen erheblich überarbeiteten und vereinfachten Vorschlag veröffentlicht (siehe unten). Was Generika betrifft, arbeiten wir daran. Ian Lance Taylors „Generics in Go“ wird dieses Jahr auf der GopherCon in San Diego eine Rede zu diesem Thema halten, aber wir haben noch nicht das Stadium erreicht, in dem wir einen konkreten Vorschlag unterbreiten könnten.


Wir wollen auch die Sprache selbst schrittweise weiter verbessern. Für Go 1.14 haben wir folgende Angebote ausgewählt:


# 32437 . Die integrierte Fehlerprüffunktion ist "try" ( Konstruktionsdokument ).


Dies ist unser Vorschlag zur Verbesserung der Fehlerbehandlung. Obwohl die vorgeschlagene abwärtskompatible Spracherweiterung klein ist, erwarten wir erhebliche Auswirkungen auf den Fehlerbehandlungscode. Dieser Vorschlag hat bereits eine Vielzahl von Kommentaren hervorgerufen, und dies ist nicht so einfach zu befolgen. Wir empfehlen, mit dem ersten Kommentar für eine kurze Beschreibung zu beginnen und dann das detaillierte Designdokument zu lesen. Der erste Kommentar enthält einige Links zu einer Zusammenfassung der Bewertungen. Bitte befolgen Sie die Feedback-Richtlinien (siehe Abschnitt „Nächste Schritte“), bevor Sie antworten.


# 6977 . Einbetten überlappender Schnittstellen zulassen ( Designdokument ).


Dies ist ein alter abwärtskompatibler Vorschlag, um das Einbetten von Schnittstellen toleranter zu gestalten.


# 32479 . Warnen Sie vor der Konvertierung der Formularzeichenfolge string(int) zum go vet .


Eine Konvertierung der Formularzeichenfolge string(int) wurde der string(int) schon lange zu Go hinzugefügt, ist jedoch für Anfänger sehr verwirrend ( string(10) ist "\n" , nicht "10" ) und nicht mehr gerechtfertigt, da die Konvertierung jetzt im unicode/utf8 Paket verfügbar ist unicode/utf8 . Da das Löschen dieser Transformation keine abwärtskompatible Änderung ist, empfehlen wir, stattdessen einen Fehler zu machen, wenn go vet .


# 32466 . Akzeptieren Sie die Entwurfsprinzipien für Kryptografie ( Entwurfsdokument ).


Dies ist eine Feedback-Anfrage für eine Reihe von Entwurfsprinzipien für kryptografische Bibliotheken, die wir akzeptieren möchten. Siehe auch den entsprechenden Vorschlag zum Entfernen der SSLv3-Unterstützung aus crypto/tls .


Nächste Schritte


Wir sammeln aktiv Feedback zu all diesen Vorschlägen. Wir sind besonders an Beweisen interessiert, die zeigen, warum der Vorschlag in der Praxis möglicherweise nicht gut funktioniert, oder an problematischen Aspekten, die wir bei der Entwicklung möglicherweise übersehen haben. Überzeugende Beispiele zur Unterstützung von Vorschlägen sind ebenfalls sehr hilfreich. Andererseits sind Kommentare, die nur persönliche Meinungen enthalten, weniger effektiv: Wir können sie berücksichtigen, aber wir können nicht konstruktiv mit ihnen arbeiten. Bitte nehmen Sie sich vor der Beantwortung einen Moment Zeit, um die detaillierten Konstruktionsdokumente und früheren Bewertungen oder deren Zusammenfassung zu lesen. Ihr Thema wurde möglicherweise bereits in früheren Kommentaren angesprochen und diskutiert, insbesondere während langer Diskussionen.


Wenn diese Vorschläge nicht auf offensichtliche Probleme stoßen, planen wir, alles zu Beginn des Entwicklungszyklus Go 1.14 (Anfang August 2019) umzusetzen, damit dies bereits in der Praxis bewertet werden kann. Entsprechend dem Bewertungsprozess der Vorschläge wird die endgültige Entscheidung am Ende des Entwicklungszyklus (Anfang November 2019) getroffen.


Vielen Dank, dass Sie zur Verbesserung der Go-Sprache beigetragen haben!


Robert Griesemer für das Go-Team

Source: https://habr.com/ru/post/de457814/


All Articles