Go version 1.13 du langage de programmation

Introduit version du langage de programmation Aller 1.13, développé par Google avec la participation de la communauté en tant que solution hybride combinant les hautes performances des langages compilés avec les avantages des langages de script tels que la facilité d'écriture du code, la rapidité de développement et la protection contre les erreurs. Code de projet distribué par sous licence BSD.

La syntaxe de Go est basée sur des éléments familiers du langage C avec quelques emprunts au langage Python. Le langage est assez concis, mais le code est facile à lire et à comprendre. Le code Go est compilé en exécutables binaires autonomes qui s'exécutent de manière native sans utiliser de machine virtuelle (le profilage, le débogage et d'autres sous-systèmes de détection de problèmes d'exécution sont intégrés en tant que composants d'exécution), qui permet d'obtenir des performances comparables aux programmes C.

Le projet est initialement développé dans l'optique d'une programmation multithread et d'un fonctionnement efficace sur des systèmes multicœurs, notamment en fournissant des moyens au niveau opérateur pour organiser le calcul parallèle et l'interaction entre les méthodes exécutées en parallèle. Le langage offre également une protection intégrée contre les blocs de mémoire suralloués et offre la possibilité d'utiliser un garbage collector.

principal les innovationsintroduit dans la version Go 1.13 :

  • Le package crypto/tls a la prise en charge du protocole activée par défaut TLS 1.3. Ajout d'un nouveau package « crypto/ed25519 » avec prise en charge des signatures numériques Ed25519 ;
  • Ajout de la prise en charge de nouveaux préfixes numériques littéraux pour définir les nombres binaires (par exemple 0b101), octaux (0o377), imaginaires (2.71828i) et hexadécimaux à virgule flottante (0x1p-1021), et possibilité d'utiliser le caractère "_" pour séparer visuellement les chiffres. en grand nombre (1_000_000) ;
  • La restriction concernant l'utilisation uniquement de compteurs non signés dans les opérations de décalage a été supprimée, ce qui évite les conversions inutiles vers le type uint avant d'utiliser les opérateurs « ‹‹ » et « ›› » ;
  • Ajout de la prise en charge de la plateforme Illumos (GOOS=illumos). La compatibilité avec la plateforme Android 10 a été assurée. Les exigences pour les versions minimales de FreeBSD (11.2) et de macOS (10.11 « El Capitan ») ont été augmentées.
  • Poursuite du développement du nouveau système de modules, qui peut être utilisé comme alternative à GOPATH. Contrairement aux plans précédemment annoncés dans Go 1.13, ce système n'est pas activé par défaut et nécessite une activation via la variable GO111MODULE=on ou l'utilisation d'un contexte dans lequel les modules sont appliqués automatiquement. Le nouveau système de modules offre une prise en charge intégrée de la gestion des versions, des capacités de livraison de packages et une gestion améliorée des dépendances. Avec les modules, les développeurs ne sont plus obligés de travailler dans une arborescence GOPATH, peuvent définir explicitement des dépendances versionnées et créer des versions reproductibles.

    Contrairement aux versions précédentes, l'application automatique du nouveau système fonctionne désormais lorsqu'un fichier go.mod est présent dans le répertoire de travail actuel ou le répertoire parent lors de l'exécution de la commande go, y compris lorsqu'il se trouve dans le répertoire GOPATH/src. De nouvelles variables d'environnement ont été ajoutées : GOPRIVATE, qui définit les chemins des modules accessibles publiquement, et GOSUMDB, qui spécifie les paramètres d'accès à la base de données de somme de contrôle pour les modules non répertoriés dans le fichier go.sum ;

  • La commande "go" charge par défaut les modules et vérifie leur intégrité à l'aide du miroir de modules et de la base de données de somme de contrôle maintenue par Google (proxy.golang.org, sum.golang.org et index.golang.org) ;
  • La prise en charge uniquement des packages binaires a été interrompue ; la construction d'un package en mode « //go:binary-only-package » entraîne désormais une erreur ;
  • Ajout de la prise en charge du suffixe « @patch » à la commande « go get », indiquant que le module doit être mis à jour vers la dernière version de maintenance, mais sans changer la version majeure ou mineure actuelle ;
  • Lors de la récupération de modules à partir des systèmes de contrôle de code source, la commande « go » effectue désormais une vérification supplémentaire sur la chaîne de version, en essayant de faire correspondre les numéros de pseudo-version avec les métadonnées du référentiel ;
  • Prise en charge supplémentaire inspection des erreurs (Error Wrapping) grâce à la création de wrappers qui permettent l'utilisation de gestionnaires d'erreurs standard. Par exemple, erreur "e" peut être enroulé autour de l'erreur "w" en fournissant une méthode Déballer, renvoyant "w". Les deux erreurs « e » et « w » sont disponibles dans le programme et les décisions sont prises sur la base de l'erreur « w », mais « e » fournit un contexte supplémentaire à « w » ou l'interprète différemment ;
  • Les performances des composants d'exécution ont été optimisées (une augmentation de la vitesse allant jusqu'à 30 % a été constatée) et un retour de mémoire plus agressif au système d'exploitation a été mis en œuvre (auparavant, la mémoire était restituée après cinq minutes ou plus, mais maintenant immédiatement après avoir réduit la taille du tas).

Source: opennet.ru

Ajouter un commentaire