Go 1.15 beta oferuje mniejsze rozmiary binarne
Go 1.15 beta jest kolejną zapowiedzianą wersją popularnego języka skryptowego Google. Statyczny typ języka pozwala tworzyć mniejsze binarne rozmiary, a to wszystko dzięki ulepszonemu kompilatorowi. Wśród najważniejszych zmian jest także ulepszenie środowiska wykonawczego i linkera. W dokumentacji o języku zapowiedziano pełne wydanie w sierpniu 2020.
Środowisko wykonawcze
W środowisku wykonawczym zmieni się wyświetlanie wartości. Przede wszystkim, jeśli panic jest wywoływane z wartością, której typ pochodzi z m.in.: bool, complex64, float32, float64, int16, int32, int64, string, uint32, uint64, uintptr, to wyświetlona zostanie wartość, a nie tylko jej adres.
Teraz, przy większej liczbie rdzeni, przydział małych obiektów będzie działał znacznie lepiej. Dodatkowo będzie mniejsze opóźnienie. Inną ze zmian jest usunięcie problemu alokacji przy konwersji małej wartości całkowitej na wartość interfejsu.
Rozmiary binarne w języku Go 1.15 beta
Prawie o 5 % zmniejszyły się typowe rozmiary binarne w planowanej na sierpień wersji produkcyjnej w porównaniu z wersją 1.14. Twórcy mówią, że osiągnęli to przede wszystkim przez wyeliminowanie metadanych związanych z odśmiecaniem.
W nowej wersji kompilator odrzuca dyrektywy //go:. Zazwyczaj nie mają one znaczenia dla deklaracji, ponieważ zgłaszają błąd „niewłaściwej dyrektywy kompilatora”. Poprzednio były one ignorowane przez kompilator.
Inne zmiany – optymalizacja i linker
Także ulepszenia wprowadzone w linkerze Go zmniejszyły zużycie jego zasobów. Przykładowo, dla zestawu dużych programów Go łączenie trwało 20% krócej i zużywało mniej pamięci o nawet 30%. Rejestracja optymalizacji –json kompilatora w nowej wersji będzie informowała o tym, czy duże kopie są większe lub równe 128 bajtom. Ponadto dostarczy wyjaśnień o decyzji analizy ucieczki.
Źródła:
- https://www.itnews.com/article/3562690/go-115-moves-to-beta-offering-smaller-binary-sizes.html
- https://tip.golang.org/doc/go1.15