Was bringt Go 1.3?

Laut der Go-Mailingliste bereitet man bei Google das Release einer ersten Beta von Version 1.3 der Programmiersprache vor. Sie soll zwar keine neuen Features bringen, dafür aber Neuerungen enthalten, die sich positiv auf die Performance auswirken.

 –  0 Kommentare

Die Veröffentlichung der ersten Beta-Version von Go 1.3 steht offenbar kurz bevor. Ein Blick auf die noch in Arbeit befindlichen Release Notes erlaubt allerdings schon einen Blick auf die Neuerungen in Googles Programmiersprache und lässt vermuten, dass die Fertigstellung der neuen Version für Juni geplant ist.

Mit zusätzlichen Features soll sie nicht aufwarten können, dafür haben sich die Entwickler mit Problemen beschäftigt, die in den letzten Jahren aufgetreten sind und deren Beseitigung sich in einigen Fällen positiv auf die Leistungsfähigkeit der Sprache auswirkt. Unter anderem soll die Garbage Collection jetzt genauer arbeiten, und auch Compiler und Linker wurden einem Refactoring unterzogen. So soll das Auslagern der Instruktionsauswahl-Phase aus dem Linker in eine eigene Bibliothek (liblink) beispielsweise dazu führen, dass sich besonders große Projekte deutlich schneller kompilieren lassen.

Eine weitere Änderung ist die Implementierung des goroutine-Stacks, der nun ein fortlaufendes statt ein "segmentierendes" Modell umsetzt. Das Memory Model soll durch eine neue Regel beim Senden und Empfangen auf Buffered Channels (sie sollen auch als einfache Semaphore dienen können) für mehr Klarheit sorgen.

Darüber hinaus schafft Go 1.3 den Support für Windows 2000 ab, stattdessen erhält man aber noch als experimentell anzusehende Unterstützung für Solaris auf der amd64-Architektur (64-Bit x86) und das in den Bell Laboratories entwickelte Plan 9 auf der 386-Architektur (32-Bit x86). Zudem kann Go mit FreeBSD (sofern das COMPAT_FREEBSD32-Flag beim Kompilieren gesetzt ist) und Googles Native Client auf Intel-Architekturen arbeiten.

Go ist von C inspiriert und vor allem für die Systemprogrammierung gedacht. Es soll gut mit Multicore-Architekturen und Nebenläufigkeit zurechtkommen und sich zudem schnell ausführen sowie kompilieren lassen. Trotz des Einsatzes in verschiedenen Projekte kommt allerdings immer noch die Frage auf, ob sich die von ihr adressierten Probleme nicht auch mit bereits verbreiteteren Sprachen elegant lösen lassen. (jul)