IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités
    Avatar de Bruno
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    mai 2019
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : mai 2019
    Messages : 1 215
    Points : 24 364
    Points
    24 364
    Par défaut Go 1.20 est la dernière version qui fonctionnera sur toutes les versions de Windows 7, 8, Server 2008 et Serve
    Go 1.20 est la dernière version qui fonctionnera sur toutes les versions de Windows 7, 8, Server 2008 et Server 2012,
    la version 1.21 nécessitera au moins Windows 10 ou Server 2016

    La version 1.20 de Go n'est pas encore disponible. Il s'agit ci-dessous des notes de version en cours d'élaboration. Go 1.20 sera la dernière version qui fonctionnera sur toutes les versions de Windows 7, 8, Server 2008 et Server 2012. Go 1.21 nécessitera au moins Windows 10 ou Server 2016. La sortie de cette version 1.20 est prévue en février 2023.

    Go est un langage de programmation open source, développé par Google, qui facilite le développement de logiciels simples, fiables et efficaces. En raison de sa simplicité, il est utilisé aussi bien pour développer des applications, écrire des scripts pour de grands systèmes. Cette simplicité est nécessaire aussi pour assurer la maintenance et l'évolution des programmes sur plusieurs générations de développeurs.

    Nom : goB.png
Affichages : 2225
Taille : 54,3 Ko

    S'il vise aussi la rapidité d'exécution, indispensable à la programmation système, il considère le multithreading comme le moyen le plus robuste d'assurer sur les processeurs actuels, cette rapidité tout en rendant la maintenance facile par séparation de tâches simples exécutées indépendamment. Cette conception permet également le fonctionnement sans réécriture sur des architectures multicœurs en exploitant immédiatement l'augmentation de puissance correspondante. Passons en revue quelques nouveautés et améliorations annoncées. :

    Go 1.17 abordait les conversions d’une séquence vers un pointeur de tableau. Go 1.20 étend cela pour permettre les conversions d'une séquence vers un tableau : étant donné une séquence x, [4]byte(x) peut maintenant être écrit au lieu de *(*[4]byte)(x).

    Le paquetage unsafe définit trois nouvelles fonctions : SliceData, String, et StringData. Avec la fonction Slice de Go 1.17, ces fonctions offrent maintenant la possibilité complète de construire et de déconstruire des valeurs de type séquence et chaîne, sans dépendre de leur représentation exacte.

    La spécification définit maintenant que les valeurs struct sont comparées un champ à la fois, en considérant les champs dans l'ordre où ils apparaissent dans la définition du type struct, et en s'arrêtant à la première non-concordance. Auparavant, la spécification pouvait être lue comme si tous les champs devaient être comparés allant au-delà de la première discordance.

    De même, la spécification définit maintenant que les valeurs des tableaux sont comparées un élément à la fois, dans l'ordre croissant des index. Dans les deux cas, la différence affecte le fait que certaines comparaisons doivent exister. Les programmes existants restent inchangés : la nouvelle formulation de la spécification décrit ce que les implémentations ont toujours fait.

    Les types comparables (tels que les interfaces ordinaires) peuvent maintenant satisfaire les contraintes comparables, même si les arguments de type ne sont pas strictement comparables (la comparaison peut échouer à l'exécution). Cela permet d'instancier un paramètre de type contraint par comparable (par exemple, un paramètre de type pour une clé de carte générique définie par l'utilisateur) avec un argument de type non strictement comparable tel qu'un type d'interface, ou un type composite contenant un type d'interface.

    Opérateurs de comparaison en Go

    == equal
    != not equal
    < less
    <= less or equal
    > greater
    >= greater or equal


    Dans toute comparaison, le premier opérande doit pouvoir être affecté au type du second opérande, ou vice versa. Les opérateurs d'égalité == et != s'appliquent aux opérandes de types comparables. Les opérateurs d'ordre <, <=, >, et >= s'appliquent aux opérandes de types ordonnés.

    Ports

    Windows

    Go 1.20 est la dernière version qui fonctionnera sur toutes les versions de Windows 7, 8, Server 2008 et Server 2012. Go 1.21 nécessitera au moins Windows 10 ou Server 2016.

    Darwin et iOS

    Go 1.20 est la dernière version qui fonctionnera sur macOS 10.13 High Sierra ou 10.14 Mojave. La version 1.21 de Go nécessitera macOS 10.15 Catalina ou une version ultérieure.

    FreeBSD/RISC-V

    Go 1.20 ajoute un support expérimental pour FreeBSD sur RISC-V (GOOS=freebsd, GOARCH=riscv64).

    Outils

    Commande Go

    Le répertoire $GOROOT/pkg ne stocke plus les archives de paquetages pré-compilés pour la bibliothèque standard : go install ne les écrit plus, go build ne les vérifie plus et la distribution Go ne les fournit plus. Au lieu de cela, les paquets de la bibliothèque standard sont construits selon les besoins et mis en cache dans le cache de construction, tout comme les paquets hors GOROOT. Ce changement réduit la taille de la distribution de Go et évite également le déséquilibre de la chaîne d'outils C pour les paquets qui utilisent cgo.

    L'implémentation de go test -json a été améliorée pour la rendre plus robuste. Les programmes qui exécutent go test -json n'ont pas besoin de mises à jour. Les programmes qui invoquent directement l'outil go test2json doivent maintenant exécuter le binaire de test avec -v=test2json (par exemple, go test -v=test2json ou ./pkg.test -test.v=test2json) au lieu du simple -v.

    Un changement lié à go test -json est l'ajout d'un événement dont l'action est définie pour démarrer au début de l'exécution de chaque programme de test. Lors de l'exécution de plusieurs tests à l'aide de la commande go, ces événements de démarrage sont garantis d'être émis dans le même ordre que les paquets nommés sur la ligne de commande.

    La commande go définit désormais des balises de construction de caractéristiques d'architecture, telles que amd64.v2, pour permettre de sélectionner un fichier d'implémentation de paquet en fonction de la présence ou de l'absence d'une caractéristique d'architecture particulière. Les sous-commandes go acceptent désormais -C <dir> pour changer le répertoire en <dir> avant d'exécuter la commande, ce qui peut être utile pour les scripts qui doivent exécuter des commandes dans plusieurs modules différents.

    • Les commandes go build et go test n'acceptent plus le paramètre -i, qui est déprécié depuis Go 1.16 ;
    • La commande go generate accepte désormais -skip <pattern> pour ignorer les directives [C=Go]//go:generate[/Co] correspondant à <pattern> ;
    • La commande go test accepte désormais -skip <pattern> pour ignorer les tests, les sous-tests ou les exemples correspondant à <pattern>.

    Lorsque le module principal est situé dans GOPATH/src, go install n'installe plus les bibliothèques des paquets non principaux dans GOPATH/pkg, et go list ne signale plus de champ Target pour ces paquets.

    Les commandes go build, go install et d'autres commandes liées à la compilation prennent désormais en charge l'option -pgo qui permet l'optimisation guidée par le profil. L'indicateur -pgo spécifie le chemin du fichier du profil. En spécifiant -pgo=auto, la commande go recherche un fichier nommé default.pgo dans le répertoire du paquet principal et l'utilise s'il est présent. Ce mode nécessite actuellement qu'un seul paquet principal soit spécifié sur la ligne de commande, mais cette restriction pourrait être levée dans une prochaine version. La spécification de -pgo=off désactive l'optimisation guidée par le profil.

    Les commandes go build, go install et d'autres commandes liées à la construction prennent désormais en charge l'option -cover qui construit la cible spécifiée avec des instruments de couverture de code.

    go version

    La commande go version -m prend désormais en charge la lecture d'un plus grand nombre de types de binaires Go, notamment les DLL Windows construites avec go build -buildmode=c-shared et les binaires Linux sans autorisation d'exécution.

    Cgo

    La commande go désactive désormais cgo par défaut sur les systèmes ne disposant pas d'une chaîne d'outils C. Plus précisément, lorsque la variable d'environnement CGO_ENABLED n'est pas définie, que la variable d'environnement CC n'est pas définie et que le compilateur C par défaut (généralement clang ou gcc) n'est pas trouvé dans le chemin d'accès, CGO_ENABLED prend la valeur 0 par défaut.

    L'effet le plus important de ce changement par défaut est que lorsque Go est installé sur un système sans compilateur C, il utilisera désormais des constructions Go pures pour les paquets de la bibliothèque standard qui utilisent cgo, au lieu d'utiliser les archives de paquets pré-distribuées (qui ont été supprimées, comme indiqué ci-dessus) ou d'essayer d'utiliser cgo et d'échouer. Cela permet à Go de mieux fonctionner dans certains environnements de conteneurs minimaux ainsi que sur macOS, où les archives de paquets pré-distribuées ne sont plus utilisées pour les paquets basés sur cgo depuis Go 1.16.

    Les paquets de la bibliothèque standard qui utilisent cgo sont net, os/user et plugin. Sous macOS, les paquets net et os/user ont été réécrits pour ne pas utiliser cgo : le même code est maintenant utilisé pour les constructions cgo et non cgo ainsi que pour les compilations croisées. Sous Windows, les paquets net et os/user n'ont jamais utilisé cgo. Sur les autres systèmes, les compilations avec cgo désactivé utiliseront une version purement Go de ces paquets.

    Sous macOS, le détecteur de course a été réécrit pour ne pas utiliser cgo : les programmes avec détecteur de course peuvent être construits et exécutés sans Xcode. Sous Linux et d'autres systèmes Unix, ainsi que sous Windows, une chaîne d'outils C hôte est nécessaire pour utiliser le détecteur de course.

    Vet

    Amélioration de la détection de la capture de variables de boucle par des fonctions imbriquées

    L'outil vet signale maintenant les références aux variables de boucle suite à un appel à T.Parallel() dans les corps de fonctions de sous-tests. Ces références peuvent observer la valeur de la variable d'une itération différente (ce qui entraîne généralement le saut de cas de test) ou un état invalide dû à un accès concurrent non synchronisé.

    L'outil détecte également les erreurs de référence dans plus d'endroits. Auparavant, il ne prenait en compte que la dernière instruction du corps de la boucle, mais il inspecte désormais de manière récursive les dernières instructions dans les instructions if, switch et select.

    Moteur d'exécution

    Le moteur d'exécution dispose désormais d'une prise en charge expérimentale de l'allocation d'arène à sécurité mémoire qui permet de libérer rapidement la mémoire en masse. Utilisée de manière appropriée, elle peut améliorer les performances de la CPU jusqu'à 15 % dans les applications gourmandes en allocation mémoire. Certaines structures de données internes du ramasse-miettes ont été réorganisées pour être à la fois plus efficaces en termes d'espace et de CPU. Ce changement réduit les frais généraux de mémoire et améliore les performances globales de la CPU jusqu'à 2 %.

    Le ramasse-miette se comporte de manière moins erratique en ce qui concerne les aides goroutines dans certaines circonstances. Go 1.20 ajoute un nouveau paquet runtime/coverage contenant des API pour écrire des données de profil de couverture au moment de l'exécution à partir de programmes longs et/ou de programmes serveurs qui ne se terminent pas par os.Exit().

    Compilateur

    Go 1.20 ajoute le support de l'optimisation guidée par le profil (PGO). PGO permet à la chaîne d'outils d'effectuer des optimisations spécifiques à l'application et à la charge de travail sur la base des informations de profil d'exécution. Actuellement, le compilateur prend en charge les profils CPU pprof, qui peuvent être collectés par les moyens habituels, tels que les paquets runtime/pprof ou net/http/pprof. Pour activer PGO, passez le chemin d'un fichier de profil pprof via l'option -pgo à go build, comme mentionné ci-dessus.

    Go 1.20 utilise PGO pour mettre en ligne de manière plus active les fonctions aux endroits où les appels sont importants. Les benchmarks pour un ensemble représentatif de programmes Go montrent que l'activation de l'optimisation de l'inline guidée par le profil améliore les performances d'environ 3-4 %. Le compilateur Go 1.20 a mis à jour son frontal pour utiliser une nouvelle façon de gérer les données internes du compilateur, ce qui corrige plusieurs bogues liés aux types génériques et permet d'utiliser des types locaux dans les fonctions et méthodes génériques.

    Par rapport à Go 1.19, les performances du code généré sont généralement légèrement améliorées, les temps de mur de compilation sont légèrement augmentés, les temps d'utilisation de la compilation sont légèrement réduits.

    Source : Golang

    Et vous ?

    Quels sont les changements qui captent votre attention pour Go 1.20 ? Quelles sont vos attentes ?

    Voir aussi :

    Go 1.16 est disponible et apporte la prise en charge de l'architecture ARM 64 bits sur macOS,, ainsi que l'intégration des fichiers statiques et des arborescences de fichiers dans l'exécutable final

    Enquête Go 2021, la satisfaction à l'égard du langage est toujours très élevée, 92 %, les fonctionnalités manquantes et le manque de soutien sont les obstacles techniques les plus importants
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    1 744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 1 744
    Points : 889
    Points
    889
    Par défaut
    ça serait bien qu'il y ait une library fournie nativement pour faire des interfaces graphiques avancées... les libraries tierces que j'ai testées n'ont pas beaucoup de fonctionnalités, ça reste basique.

Discussions similaires

  1. Réponses: 18
    Dernier message: 27/05/2015, 18h47
  2. Envoyer un email qui passe sur tout les webmail
    Par Ceubex dans le forum Langage
    Réponses: 1
    Dernier message: 06/03/2013, 22h02
  3. Réponses: 10
    Dernier message: 04/08/2011, 22h21
  4. Réponses: 3
    Dernier message: 02/08/2010, 15h25
  5. créer un executable sur bcb6 qui marche sur tout les pc
    Par yesil08 dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/05/2007, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo