Go programmeringssprog udgivelse 1.16

Udgivelsen af ​​programmeringssproget Go 1.16 præsenteres, som udvikles af Google med deltagelse af fællesskabet som en hybridløsning, der kombinerer den høje ydeevne af kompilerede sprog med sådanne fordele ved scriptsprog som let at skrive kode , udviklingshastighed og fejlbeskyttelse. Projektkoden distribueres under BSD-licensen.

Go's syntaks er baseret på velkendte elementer fra C-sproget med nogle lån fra Python-sproget. Sproget er ret kortfattet, men koden er let at læse og forstå. Go-koden er kompileret til selvstændige binære eksekverbare filer, der kører indbygget uden brug af en virtuel maskine (profilering, fejlfindingsmoduler og andre undersystemer til registrering af runtime-problem er integreret som runtime-komponenter), hvilket giver mulighed for ydeevne, der kan sammenlignes med C-programmer.

Projektet er oprindeligt udviklet med henblik på multi-threaded programmering og effektiv drift på multi-core systemer, herunder at give operatør-niveau midler til at organisere parallel computing og interaktion mellem parallel-eksekverede metoder. Sproget giver også indbygget beskyttelse mod overallokerede hukommelsesblokke og giver mulighed for at bruge en skraldeopsamler.

Nye nøglefunktioner introduceret i Go 1.16:

  • Tilføjet embed-pakken, som giver værktøjer til at indlejre vilkårlige filer og mapper i programmet. Et nyt "//go:embed"-direktiv er tilvejebragt for at specificere filer, der skal indlejres på kompileringstidspunktet. For eksempel vil angivelse af "//go:embed test.txt" i kodekommentaren og derefter erklære variablen "var f embed.FS" føre til indlejring af test.txt-filen og mulighed for at få adgang til den via " f”-beskrivelse. På lignende måde kan du indlejre filer med ressourcer eller individuelle værdier af en bestemt type, der er nødvendige for arbejdet, for eksempel for at få strengvariablen "s" fra version.txt-filen, kan du angive: import _ "embed ” //go:embed version.txt var s string print (s)
  • Som standard er det nye modulsystem med integreret versionsunderstøttelse nu påkrævet, der erstatter GOPATH-baseret afhængighedsstyring. GO111MODULE miljøvariablen er nu indstillet til "on" som standard, og modultilstand bruges uanset tilstedeværelsen af ​​en go.mod-fil i arbejds- eller overordnet bibliotek. I den nye tilstand ændrer build-kommandoer som "go build" og "go test" ikke indholdet af go.mod og go.sum, og "go install"-kommandoen behandler versionsargumenter ("go install example.com/[e-mail beskyttet]"). For at vende tilbage til den gamle adfærd skal du ændre GO111MODULE til "auto". Det bemærkes, at 96% af udviklerne allerede har skiftet til det nye modulsystem.
  • Linkeren er blevet optimeret. For store projekter er layout nu 20-25 % hurtigere og kræver 5-15 % mindre hukommelse.
  • Compileren har tilføjet understøttelse af inline-udvidelse af funktioner med forkortede definitioner af "for"-løkker, metodeværdier og 'type switch'-konstruktioner.
  • Tilføjet understøttelse af Apple-systemer udstyret med den nye Apple M1 ARM-chip. Tilføjet netbsd/arm64- og openbsd/mips64-porte med understøttelse af NetBSD på 64-bit ARM og OpenBSD på MIPS64-systemer. Tilføjet understøttelse af cgo og "-buildmode=pie"-tilstanden til linux/riscv64-porten.
  • Understøttelse af x87-kompileringstilstand er afbrudt (GO386=387). Support til SSE2-instruktionsløse processorer er nu tilgængelig via "GO386=softfloat"-softwaretilstanden.

Derudover kan vi bemærke starten på at teste beta-udgivelsen af ​​Dart 2.12-sproget, hvor "Null" sikker tilstand er blevet stabiliseret, hvilket vil hjælpe med at undgå nedbrud forårsaget af forsøg på at bruge variabler, hvis værdi er udefineret og sat til "Null ”. Tilstanden indebærer, at variabler ikke kan have null-værdier, medmindre de eksplicit er tildelt værdien null. Tilstanden respekterer strengt variabeltyper, hvilket giver compileren mulighed for at anvende yderligere optimeringer. Typeoverensstemmelse kontrolleres på kompileringstidspunktet, hvis du for eksempel forsøger at tildele værdien "Null" til en variabel med en type, der ikke indebærer udefineret tilstand, såsom "int", vil der blive vist en fejl.

Kilde: opennet.ru

Tilføj en kommentar