Go versió del llenguatge de programació 1.16

Es presenta el llançament del llenguatge de programació Go 1.16, que està sent desenvolupat per Google amb la participació de la comunitat com una solució híbrida que combina l'alt rendiment dels llenguatges compilats amb avantatges dels llenguatges de script com la facilitat de codi d'escriptura, desenvolupament ràpid i protecció contra errors. El codi del projecte es distribueix sota la llicència BSD.

La sintaxi de Go es basa en els 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 fitxers executables binaris separats que s'executen de manera nativa sense l'ús d'una màquina virtual (perfilatge, depuració i altres subsistemes de detecció de problemes en temps d'execució s'integren com a components en temps d'execució), cosa que permet assolir 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.

Noves funcions clau introduïdes a Go 1.16:

  • S'ha afegit el paquet incrustat, que proporciona eines per incrustar fitxers i directoris arbitraris al programa. Es proporciona una nova directiva "//go:embed" per especificar els fitxers que s'han d'incrustar en temps de compilació. Per exemple, especificar "//go:embed test.txt" al comentari del codi i declarar la variable "var f embed.FS" donarà lloc a la incrustació del fitxer test.txt i a la possibilitat d'accedir-hi a través del " descriptor f”. De manera similar, podeu incrustar fitxers amb recursos o valors individuals d'un determinat tipus necessaris per al treball, per exemple, per obtenir la variable de cadena "s" del fitxer version.txt, podeu especificar: import_"embed ” //go:embed version.txt var s string print(s)
  • Per defecte, ara es requereix el nou sistema de mòduls amb suport de versions integrat, que substitueix la gestió de dependències basada en GOPATH. La variable d'entorn GO111MODULE ara s'estableix a "activat" per defecte i el mode mòduls s'utilitza independentment de la presència d'un fitxer go.mod al directori de treball o principal. En el nou mode, les ordres de compilació com ara "go build" i "go test" no canvien el contingut de go.mod i go.sum, i l'ordre "go install" processa els arguments de versió ("go install example.com/[protegit per correu electrònic]"). Per tornar el comportament anterior, canvieu GO111MODULE a "automàtic". S'observa que el 96% dels desenvolupadors ja s'han canviat al nou sistema de mòduls.
  • S'ha optimitzat l'enllaç. Per a projectes grans, el disseny és ara un 20-25% més ràpid i requereix un 5-15% menys de memòria.
  • El compilador ha afegit suport per a l'expansió en línia de funcions amb definicions abreujades de bucles "for", valors de mètodes i construccions de "canvi de tipus".
  • S'ha afegit suport per a sistemes Apple equipats amb el nou xip Apple M1 ARM. S'han afegit ports netbsd/arm64 i openbsd/mips64 amb suport per a NetBSD en ARM de 64 bits i OpenBSD en sistemes MIPS64. S'ha afegit suport per a cgo i el mode "-buildmode=pie" al port linux/riscv64.
  • S'ha deixat de suportar el mode de compilació x87 (GO386=387). El suport per als processadors SSE2 sense instruccions ja està disponible mitjançant el mode de programari "GO386=softfloat".

A més, podem observar l'inici de les proves de la versió beta del llenguatge Dart 2.12, en què s'ha estabilitzat el mode segur "Nul", cosa que ajudarà a evitar bloquejos causats per intents d'utilitzar variables el valor de les quals no està definit i establert a "Nul". ”. El mode implica que les variables no poden tenir valors nuls tret que se'ls assigni explícitament el valor nul. El mode respecta estrictament els tipus de variables, cosa que permet al compilador aplicar optimitzacions addicionals. El compliment del tipus es verifica en temps de compilació, per exemple, si intenteu assignar el valor "Nul" a una variable amb un tipus que no implica un estat indefinit, com ara "int", es mostrarà un error.

Font: opennet.ru

Afegeix comentari