Go programmeringssprog udgivelse 1.14

Introduceret udgivelse af programmeringssprog Gå 1.14, som udvikles af Google med deltagelse af fællesskabet som en hybridløsning, der kombinerer den høje ydeevne af kompilerede sprog med fordelene ved scriptsprog, såsom nem at skrive kode, hastighed på udvikling og fejlbeskyttelse. Projektkode distribueret af 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-kode er kompileret til selvstændige binære eksekverbare filer, der kører native uden brug af en virtuel maskine (profilering, fejlfinding og andre undersystemer til registrering af runtime-problem er integreret som runtime komponenter), som giver dig mulighed for at opnå 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.

The main innovationerintroduceret i Go 1.14-udgivelsen:

  • Det nye modulsystem i "go"-kommandoen er erklæret klar til generel brug, aktiveret som standard og anbefales til afhængighedsstyring i stedet for GOPATH. Det nye modulsystem byder på integreret versionssupport, pakkeleveringsfunktioner og forbedret afhængighedsstyring. Med moduler er udviklere ikke længere bundet til at arbejde inden for et GOPATH-træ, kan eksplicit definere versionsafhængige afhængigheder og oprette gentagelige builds.
  • Tilføjet understøttelse af indlejring af grænseflader med et overlappende sæt metoder. Metoder fra en indbygget grænseflade kan nu have samme navne og signaturer som metoder i eksisterende grænseflader. Eksplicit erklærede metoder forbliver unikke som før.
  • Ydeevnen af ​​"defer"-udtrykket er blevet forbedret, hvilket gør det næsten lige så hurtigt som at kalde en udskudt funktion direkte, hvilket tillader udskudt funktionsudførelse i præstationsfølsom kode.
  • Asynkron preemption af coroutines (goroutines) er tilvejebragt - sløjfer, der ikke indeholder funktionskald, kan nu potentielt føre til planlæggerens deadlock eller forsinke starten af ​​affaldsindsamling.
  • Effektiviteten af ​​hukommelsessideallokeringssystemet er blevet forbedret, og der er nu betydeligt færre låsekonflikter i konfigurationer med store GOMAXPROCS-værdier. Resultatet er reduceret latens og øget gennemløb, samtidig med at store hukommelsesblokke distribueres intensivt.
  • Låsning er blevet optimeret, og antallet af kontekstskifter er blevet reduceret, når der køres interne timere, der blev brugt i time.After, time.Tick, net.Conn.SetDeadline-funktioner.
  • I go-kommandoen er flaget "-mod=vendor" aktiveret som standard, hvis der er en leverandørmappe i roden, beregnet til at levere eksterne afhængigheder knyttet til en specifik leverandør. Tilføjet et separat "-mod=mod" flag for at indlæse moduler fra modulcachen i stedet for fra "leverandør"-mappen. Hvis go.mod-filen er skrivebeskyttet, er "-mod=readonly"-flaget indstillet som standard, hvis der ikke er nogen øverste "leverandør"-mappe. Tilføjet "-modfile=fil" flag for at angive en alternativ go.mod fil i stedet for den i modulets rodmappe.
  • Tilføjet miljøvariablen GOINSECURE, når den er indstillet, kræver go-kommandoen ikke brug af HTTPS og springer certifikatkontrol over, når moduler indlæses direkte.
  • Compileren har tilføjet "-d=checkptr" flaget, aktiveret som standard, for at kontrollere koden for overholdelse af reglerne for sikker brug af unsafe.Pointer.
  • En ny pakke er inkluderet i leveringen hash/maphash med ikke-kryptografiske hash-funktioner til at skabe hash-tabeller til vilkårlige byte-sekvenser eller strenge.
  • Tilføjet eksperimentel understøttelse af 64-bit RISC-V platformen på Linux.
  • Tilføjet understøttelse af FreeBSD på 64-bit ARM-systemer.

Kilde: opennet.ru

Tilføj en kommentar