go go go, Go!

Release von Go 1.5: komplett ohne C

Michael Thomas

© Shutterstock.com/phloxii

Wie die Macher der systemnahen Sprache verlauten lassen, stellt das Release von Go 1.5 einen gewaltigen Wandel im Hinblick auf die Architektur der Implementierung dar. Die Kompilierung und Ausführung von Go-Programmen soll davon jedoch größtenteils unberührt bleiben.

Was Google bereits im Januar dieses Jahres veröffentlichten Konzeptpapier “Go 1.5 Bootstrap Plan” ankündigte, ist mit Go 1.5 Realität geworden: Die Programmiersprache kommt komplett ohne C aus, Compiler und Runtime sind von nun an vollständig in Go (mit Ausnahme von ein wenig Assembler) geschrieben.

Auch der Garbage Collector wurde im Rahmen des aktuellen Release einer Generalüberholung unterzogen: Dieser arbeitet nun nebenläufig und soll deutlich geringere Pausenzeiten aufweisen als zuvor.

Darüber hinaus wurde das Scheduling der goroutines geändert. Die Eigenschaften des Schedulers waren zwar nie durch Go definiert, allerdings könnten Programme, die von der Scheduling-Reihenfolge abhängen, den Entwicklern zufolge in Mitleidenschaft gezogen werden. Ein weiterer potentieller Breaking Change kann sich demnach dadurch ergeben, dass die standardmäßige Anzahl der simultanen Threads nun von der Runtime über GOMAXPROCS vorgegeben wird, wobei diese den vorhandenen CPU-Kernen entspricht. Programme, die nicht auf die Arbeit mit Mehrkernprozessoren ausgelegt sind, könnten deshalb unabsichtlich gestört werden

Alle weiteren der umfangreichen Änderungen und Neuerungen können den offiziellen Release Notes entnommen werden.

Go – das bessere C?

Go wird seit 2007 bei Google entwickelt. Ziel ist die Entwicklung einer modernen Sprache zur systemnahen Programmierung. Die Go-Syntax ist an C angelehnt und durch Elemente aus der Pascal/Modula/Oberon-Familie sowie aus Newsqueak und Limbo (Nebenläufigkeit) angereichert.

Laut Google soll Go die Vorteile einer interpretierten Hochsprache mit der Effizienz und Sicherheit einer statisch typisierten, kompilierten Sprache verbinden. Etwa wird die Speicherverwaltung wie in Java von einem Garbage Collector erledigt. Typensicherheit soll Variablen-Chaos verhindern. Unterstützung für Multikern-Programmierung, Closures, Reflexion und klassenlose Objektorientierung mittels Interfaces und Mixins gehören zu den weiteren Merkmalen der Sprache.

Aufmacherbild: Let’s go, a cloud message on sky von Shutterstock / Urheberrecht: phloxii

Verwandte Themen:

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: