Go versió del llenguatge de programació 1.13

Presentat llançament del llenguatge de programació Vés 1.13, que està desenvolupant Google amb la participació de la comunitat com una solució híbrida que combina l'alt rendiment dels llenguatges compilats amb els avantatges dels llenguatges de scripting com la facilitat d'escriptura de codi, la velocitat de desenvolupament i la protecció d'errors. Codi del projecte Distribuït per sota la llicència BSD.

La sintaxi de Go es basa en elements familiars del llenguatge C amb alguns préstecs del llenguatge Python. El llenguatge és bastant concís, però el codi és fàcil de llegir i entendre. El codi Go es compila en executables binaris autònoms que s'executen de manera nativa sense utilitzar una màquina virtual (els subsistemes de perfils, depuració i altres detecció de problemes en temps d'execució estan integrats com a components en temps d'execució), que us permet aconseguir un rendiment comparable als programes C.

El projecte es desenvolupa inicialment tenint en compte la programació multiprocés i l'operació eficient en sistemes multinúcle, incloent-hi l'aportació de mitjans implementats a nivell d'operador per organitzar la computació paral·lela i la interacció entre mètodes executats en paral·lel. El llenguatge també proporciona una protecció integrada contra els sobrepassos dels blocs de memòria assignats i ofereix la possibilitat d'utilitzar el col·lector d'escombraries.

El principal innovacionsintroduït a la versió de Go 1.13:

  • El paquet crypto/tls té el suport de protocol habilitat per defecte TLS 1.3. S'ha afegit un nou paquet "crypto/ed25519" amb suport per a signatures digitals Ed25519;
  • S'ha afegit suport per a nous prefixos literals numèrics per definir nombres binaris (per exemple, 0b101), octal (0o377), imaginari (2.71828i) i coma flotant hexadecimal (0x1p-1021), i la possibilitat d'utilitzar el caràcter "_" per separar els dígits visualment. en gran nombre (1_000_000);
  • S'ha eliminat la restricció d'utilitzar només comptadors sense signar a les operacions de torn, la qual cosa evita conversions innecessàries al tipus uint abans d'utilitzar els operadors “‹‹” i “››”;
  • S'ha afegit suport per a la plataforma Illumos (GOOS=illumos). S'ha assegurat la compatibilitat amb la plataforma Android 10. S'han augmentat els requisits per a les versions mínimes de FreeBSD (11.2) i macOS (10.11 “El Capitan”).
  • Continuació del desenvolupament del nou sistema de mòduls, que es pot utilitzar com a alternativa a GOPATH. Contràriament als plans anunciats anteriorment a Go 1.13, aquest sistema no està habilitat per defecte i requereix l'activació mitjançant la variable GO111MODULE=on o l'ús d'un context en què els mòduls s'apliquen automàticament. El nou sistema de mòduls inclou suport de versions integrat, capacitats de lliurament de paquets i una gestió de dependències millorada. Amb els mòduls, els desenvolupadors ja no estan lligats a treballar dins d'un arbre GOPATH, poden definir explícitament dependències versionades i crear compilacions repetibles.

    A diferència de les versions anteriors, l'aplicació automàtica del nou sistema ara funciona quan hi ha un fitxer go.mod al directori de treball actual o al directori principal quan s'executa l'ordre go, inclòs quan es troba al directori GOPATH/src. S'han afegit noves variables d'entorn: GOPRIVATE, que defineix les rutes dels mòduls accessibles públicament, i GOSUMDB, que especifica els paràmetres d'accés a la base de dades de checksum per als mòduls que no figuren al fitxer go.sum;

  • L'ordre "go" per defecte carrega els mòduls i comprova la seva integritat mitjançant la base de dades de rèplica de mòduls i suma de comprovació mantinguda per Google (proxy.golang.org, sum.golang.org i index.golang.org);
  • El suport només per a paquets binaris s'ha interromput; la creació d'un paquet en el mode “//go:binary-only-package” ara genera un error;
  • S'ha afegit suport per al sufix "@patch" a l'ordre "go get", indicant que el mòdul s'hauria d'actualitzar a la darrera versió de manteniment, però sense canviar la versió principal o menor actual;
  • Quan es recuperen mòduls dels sistemes de control de fonts, l'ordre "go" ara fa una comprovació addicional de la cadena de versió, intentant fer coincidir els números de pseudoversió amb les metadades del repositori;
  • Suport afegit inspecció d'errors (embolcall d'errors) mitjançant la creació d'embolcalls que permeten l'ús de gestors d'errors estàndard. Per exemple, error "e" es pot embolicar al voltant de l'error "w" proporcionant un mètode Desembolicar, retornant "w". Tant els errors "e" com "w" estan disponibles al programa i les decisions es prenen en funció de l'error "w", però "e" proporciona context addicional a "w" o l'interpreta de manera diferent;
  • S'ha optimitzat el rendiment dels components en temps d'execució (s'ha observat un augment de la velocitat de fins a un 30%) i s'ha implementat un retorn de memòria més agressiu al sistema operatiu (anteriorment, la memòria es tornava al cap de cinc minuts o més, però ara immediatament). després de reduir la mida del munt).

Font: opennet.ru

Afegeix comentari