Go version 1.14 du langage de programmation

Introduit version du langage de programmation Aller 1.14, 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.14 :

  • Le nouveau système de modules dans la commande "go" est déclaré prêt à être utilisé, activé par défaut et recommandé pour la gestion des dépendances à la place de GOPATH. 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.
  • Ajouté par prise en charge de l'intégration d'interfaces avec un ensemble de méthodes qui se chevauchent. Les méthodes d'une interface intégrée peuvent désormais avoir les mêmes noms et signatures que les méthodes des interfaces existantes. Les méthodes explicitement déclarées restent uniques comme auparavant.
  • Les performances de l'expression « defer » ont été améliorées, la rendant presque aussi rapide que l'appel direct d'une fonction différée, permettant l'exécution de fonctions différées dans du code sensible aux performances.
  • Une préemption asynchrone des coroutines (goroutines) est fournie - les boucles qui ne contiennent pas d'appels de fonction peuvent désormais potentiellement conduire à un blocage du planificateur ou retarder le début du garbage collection.
  • L'efficacité du système d'allocation de pages mémoire a été améliorée et il y a désormais beaucoup moins de conflits de verrouillage dans les configurations avec des valeurs GOMAXPROCS élevées. Le résultat est une latence réduite et un débit accru tout en distribuant simultanément de manière intensive de gros blocs de mémoire.
  • Le verrouillage a été optimisé et le nombre de changements de contexte a été réduit lors de l'exécution des minuteries internes utilisées dans les fonctions time.After, time.Tick, net.Conn.SetDeadline.
  • Dans la commande go, l'indicateur « -mod=vendor » est activé par défaut s'il existe un répertoire fournisseur à la racine, destiné à fournir des dépendances externes liées à un fournisseur spécifique. Ajout d'un indicateur "-mod=mod" distinct pour charger les modules depuis le cache de modules plutôt que depuis le répertoire "vendor". Si le fichier go.mod est en lecture seule, l'indicateur « -mod=readonly » est défini par défaut s'il n'y a pas de répertoire principal « fournisseur ». Ajout de l'indicateur "-modfile=file" pour spécifier un fichier go.mod alternatif à celui du répertoire racine du module.
  • Ajout de la variable d'environnement GOINSECURE. Lorsqu'elle est définie, la commande go ne nécessite pas l'utilisation de HTTPS et ignore la vérification des certificats lors du chargement direct des modules.
  • Le compilateur a ajouté l'indicateur « -d=checkptr », activé par défaut, pour vérifier la conformité du code avec les règles d'utilisation sûre de unsafe.Pointer.
  • Un nouveau colis est inclus dans la livraison hachage/maphash avec des fonctions de hachage non cryptographiques pour créer des tables de hachage pour des séquences ou des chaînes d'octets arbitraires.
  • Ajout d'un support expérimental pour la plate-forme RISC-V 64 bits sous Linux.
  • Ajout de la prise en charge de FreeBSD sur les systèmes ARM 64 bits.

Source: opennet.ru

Ajouter un commentaire