Sortie du langage de programmation Go 1.19

La version du langage de programmation Go 1.19 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 séparés qui sont exécutés de manière native, sans utiliser de machine virtuelle (les modules de profilage, de débogage et 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.

Parmi les changements de la nouvelle version :

  • Des travaux ont été effectués pour affiner la prise en charge des fonctions et types génériques (génériques) ajoutés dans la dernière version, à l'aide desquels un développeur peut définir et utiliser des fonctions conçues pour fonctionner avec plusieurs types à la fois. Une optimisation a été réalisée - les performances de certains programmes utilisant des génériques ont augmenté de 20 %.
  • Les commentaires de documentation ont ajouté la prise en charge des liens, des listes et une syntaxe plus simple pour définir les titres. L'utilitaire gofmt fournit un formatage qui prend en compte les capacités étendues des commentaires avec la documentation API.
  • Le modèle de mémoire du langage Go a été révisé pour être cohérent avec les modèles des langages C, C++, Java, JavaScript, Rust et Swift qui ne prennent pas en charge les valeurs atomiques séquentielles cohérentes. Pour faciliter l'utilisation des valeurs atomiques, le package sync/atomic propose de nouveaux types tels que atomic.Int64 et atomic.Pointer[T]. Le changement de modèle de mémoire n'a pas affecté la compatibilité avec le code écrit précédemment.
  • Pour renforcer la sécurité, le module os/exec ne prend désormais plus en compte les chemins relatifs lors de l'extension de la variable d'environnement PATH (par exemple, lors de la détermination du chemin d'un fichier exécutable, le répertoire courant n'est plus vérifié).
  • Le garbage collector a désormais la capacité de définir des limites de mémoire souples, qui sont appliquées en limitant la taille du tas et en renvoyant la mémoire au système de manière plus agressive, c'est-à-dire Il n'est pas garanti que la consommation se situera dans les limites spécifiées dans toutes les conditions. Les limites souples peuvent être utiles pour optimiser les programmes exécutés dans des conteneurs avec une taille de mémoire fixe.
  • Ajout d'une nouvelle contrainte de construction "unix" qui peut être utilisée dans les lignes "go:build" pour filtrer les systèmes de type Unix (aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris ).
  • De nombreuses optimisations de performances ont été mises en œuvre. Ajout de la prise en charge de la définition dynamique de la taille de la pile de coroutines afin de réduire la taille des données copiées. Sur les systèmes Unix, l'utilisation automatique de descripteurs de fichiers supplémentaires a été implémentée (augmentant la limite RLIMIT_NOFILE). Pour accélérer les grandes expressions de commutateur sur les systèmes x86-64 et ARM64, des tables de sauts sont utilisées, permettant un traitement des grandes expressions de commutateur jusqu'à 20 % plus rapidement. Sur les systèmes riscv64, les arguments de fonction sont transmis via les registres du processeur, ce qui permet une augmentation des performances d'environ 10 %.
  • Ajout du support expérimental Linux-окружений на системах с процессорами Loongson на базе 64-разрядной архитектуры LoongArch (GOARCH=loong64).

Source: opennet.ru

Achetez un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Achetez un hébergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster