Go versió del llenguatge de programació 1.14

Presentat llançament del llenguatge de programació Vés 1.14, 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.14:

  • El nou sistema de mòduls a l'ordre "go" es declara llest per a l'ús general, està habilitat per defecte i es recomana per a la gestió de dependències en lloc de GOPATH. 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 de l'arbre GOPATH, poden definir explícitament dependències versionades i crear compilacions repetibles.
  • Afegit suport per incrustar interfícies amb un conjunt de mètodes superposats. Els mètodes d'una interfície integrada ara poden tenir els mateixos noms i signatures que els mètodes de les interfícies existents. Els mètodes declarats explícitament segueixen sent únics com abans.
  • El rendiment de l'expressió "diferir" s'ha millorat, fent-lo gairebé tan ràpid com cridar directament una funció ajornada, permetent l'execució de funcions diferides en codi sensible al rendiment.
  • Es proporciona una preempció asíncrona de corrutines (goroutines): ara els bucles que no contenen trucades de funció poden provocar un bloqueig del programador o retardar l'inici de la recollida d'escombraries.
  • S'ha millorat l'eficiència del sistema d'assignació de pàgines de memòria i ara hi ha molt menys contencions de bloqueig en configuracions amb valors GOMAXPROCS grans. El resultat és una latència reduïda i un augment del rendiment alhora que es distribueixen de manera intensiva grans blocs de memòria.
  • El bloqueig s'ha optimitzat i el nombre de canvis de context s'ha reduït quan s'executen temporitzadors interns utilitzats en les funcions time.After, time.Tick, net.Conn.SetDeadline.
  • A l'ordre go, el senyalador "-mod=vendor" està activat per defecte si hi ha un directori de proveïdors a l'arrel, destinat a oferir dependències externes vinculades a un proveïdor específic. S'ha afegit una marca separada "-mod=mod" per carregar mòduls des de la memòria cau del mòdul en lloc del directori "vendor". Si el fitxer go.mod és de només lectura, el senyalador "-mod=només lectura" s'estableix per defecte si no hi ha cap directori "proveïdor" superior. S'ha afegit el senyalador "-modfile=file" per especificar un fitxer go.mod alternatiu en lloc del del directori arrel del mòdul.
  • S'ha afegit la variable d'entorn GOINSECURE, quan s'estableix, l'ordre go no requereix l'ús d'HTTPS i salta la comprovació de certificats quan es carreguen els mòduls directament.
  • El compilador ha afegit el senyalador "-d=checkptr", habilitat per defecte, per comprovar el compliment del codi amb les regles d'ús segur de unsafe.Pointer.
  • S'inclou un nou paquet a l'entrega hash/maphash amb funcions hash no criptogràfiques per crear taules hash per a seqüències o cadenes de bytes arbitràries.
  • S'ha afegit suport experimental per a la plataforma RISC-V de 64 bits a Linux.
  • S'ha afegit suport per a FreeBSD en sistemes ARM de 64 bits.

Font: opennet.ru

Afegeix comentari