Go version 1.16 du langage de programmation

La version du langage de programmation Go 1.16 est présentée, développée par Google avec la participation de la communauté en tant que solution hybride combinant les hautes performances des langages compilés avec des avantages des langages de script tels que la facilité d'écriture de code. , rapidité de développement et protection contre les erreurs. Le code du projet est distribué 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é dans des fichiers exécutables binaires autonomes qui s'exécutent de manière native sans utiliser de machine virtuelle (les modules de profilage, de débogage et d'autres sous-systèmes de détection des problèmes d'exécution sont intégrés en tant que composants d'exécution), ce qui permet des performances comparables à celles des 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.

Principales nouvelles fonctionnalités introduites dans Go 1.16 :

  • Ajout du package embed, qui fournit des outils pour intégrer des fichiers et répertoires arbitraires dans le programme. Une nouvelle directive "//go:embed" est fournie pour spécifier les fichiers à intégrer au moment de la compilation. Par exemple, spécifier « //go:embed test.txt » dans le commentaire du code puis déclarer la variable « var f embed.FS » entraînera l'intégration du fichier test.txt et la possibilité d'y accéder via le « f” descripteur. De la même manière, vous pouvez intégrer des fichiers avec des ressources ou des valeurs individuelles d'un certain type nécessaires au travail, par exemple, pour obtenir la variable chaîne « s » à partir du fichier version.txt, vous pouvez spécifier : import _ « embed " //go:embed version.txt var s string print(s)
  • Par défaut, le nouveau système de modules avec prise en charge intégrée du versioning est désormais requis, remplaçant la gestion des dépendances basée sur GOPATH. La variable d'environnement GO111MODULE est désormais définie sur "on" par défaut et le mode modules est utilisé quelle que soit la présence d'un fichier go.mod dans le répertoire de travail ou parent. Dans le nouveau mode, les commandes de build telles que "go build" et "go test" ne modifient pas le contenu de go.mod et go.sum, et la commande "go install" traite les arguments de version ("go install example.com/[email protected]"). Pour rétablir l'ancien comportement, remplacez GO111MODULE par « auto ». On constate que 96% des développeurs sont déjà passés au nouveau système de modules.
  • L'éditeur de liens a été optimisé. Pour les grands projets, la mise en page est désormais 20 à 25 % plus rapide et nécessite 5 à 15 % de mémoire en moins.
  • Le compilateur a ajouté la prise en charge de l'expansion en ligne des fonctions avec des définitions abrégées des boucles « for », des valeurs de méthode et des constructions « type switch ».
  • Ajout de la prise en charge des systèmes Apple équipés de la nouvelle puce Apple M1 ARM. Ajout des ports netbsd/arm64 et openbsd/mips64 avec prise en charge de NetBSD sur ARM 64 bits et d'OpenBSD sur les systèmes MIPS64. Ajout de la prise en charge de cgo et du mode « -buildmode=pie » sur le port linux/riscv64.
  • La prise en charge du mode de compilation x87 a été interrompue (GO386=387). La prise en charge des processeurs sans instruction SSE2 est désormais disponible via le mode logiciel « GO386=softfloat ».

Par ailleurs, on peut noter le début des tests de la version bêta du langage Dart 2.12, dans laquelle le mode sans échec d'utilisation de la valeur « Null » (sécurité nulle) a été stabilisé, ce qui permettra d'éviter les crashs provoqués par les tentatives d'utilisation de variables dont la valeur n’est pas définie et est définie sur « Null ». Le mode implique que les variables ne peuvent pas avoir de valeurs nulles à moins qu'elles ne reçoivent explicitement la valeur nulle. Le mode respecte strictement les types de variables, ce qui permet au compilateur d'appliquer des optimisations supplémentaires. La conformité du type est vérifiée au moment de la compilation, par exemple, si vous essayez d'attribuer la valeur « Null » à une variable dont le type n'implique pas un état indéfini, tel que « int », une erreur s'affichera.

Source: opennet.ru

Ajouter un commentaire