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

    Homme Profil pro
    Rédacteur technique
    Inscrit en
    mars 2017
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2017
    Messages : 1 017
    Points : 27 958
    Points
    27 958
    Par défaut L'équipe en charge du développement du langage Go annonce la disponibilité de Go version 1.13
    L'équipe en charge du développement du langage Go annonce la disponibilité de Go version 1.13
    Avec de son lot de changements par rapport à la version 1.12

    La dernière version du langage Go, la version 1.13, développé par Google vient d’être officialisée, six mois après Go 1.12. La plupart des changements annoncés concernent l’implémentation de la chaîne d’outils, du runtime et des bibliothèques Go v1.13 utilise désormais un proxy Golang pour récupérer les modules. Cela signifie qu’un proxy régi par les règles de confidentialité du géant Google recueille désormais par défaut l’utilisation de tous les modules, sauf si vous modifiez les paramètres. Go 1.13 est également la dernière qui fonctionnera sur Native Client (NaCl). Elle prend en charge TLS 1.3 par défaut dans le paquet crypto/tls, ce qui peut être désactivé en ajoutant la valeur tls13=0 à la variable d’environnement GODEBUG. Par ailleurs, le nouveau paquet crypto/ed25519 implémente le schéma de signature Ed25519.

    Nom : arton436.jpg
Affichages : 14957
Taille : 21,5 Ko

    Portages

    Les programmes Go sont maintenant compatibles avec Android 10. Go 1.13 nécessite maintenant macOS 10.11 El Capitan ou une version ultérieure, FreeBSD 11.2 ou version ultérieure et la version Windows spécifiée par les fichiers binaires Windows liés en interne est désormais Windows 7 plutôt que Windows NT 4.0.

    Go supporte maintenant Illumos avec GOOS=illumos. AIX sur PPC64 (aix/ppc64) prend désormais en charge cgo, la liaison externe et les modes de build c-archive et pie. Pour GOARCH=wasm, la nouvelle variable d’environnement GOWASM prend une liste de fonctions expérimentales séparées par des virgules avec lesquelles le binaire est compilé.

    Changements apportés au langage

    En plus des changements minimes affectant la bibliothèque, Go 1.13 élimine la nécessité de recourir à de nombreuses conversions « uint » artificielles et prend en charge un ensemble de préfixes littéraux numériques plus uniforme et plus moderne :
    • les littéraux entiers binaires : le préfixe 0b ou 0B indique un littéral entier binaire tel que 0b1011 ;
    • les littéraux entiers octaux : le préfixe 0o ou 0O indique un littéral entier octal tel que 0o660. La notation octale existante indiquée par un 0, suivie de chiffres octaux, reste valide ;
    • les littéraux hexadécimaux à virgule flottante : le préfixe 0x ou 0X peut maintenant être utilisé pour exprimer la mantisse d’un nombre à virgule flottante au format hexadécimal tel que 0x1.0p-1021. Un nombre hexadécimal à virgule flottante doit toujours avoir un exposant, écrit sous la forme de la lettre p ou P suivi d’un exposant en décimal. L’exposant met à l’échelle la mantisse de 2 à la puissance de l’exposant ;
    • les littéraux imaginaires : le suffixe imaginaire i peut désormais être utilisé avec n’importe quel entier (binaire, décimal, hexadécimal) ou littéral à virgule flottante ;
    • les séparateurs de chiffres : les chiffres de n’importe quel littéral numérique peuvent maintenant être séparés (groupés) à l’aide de traits de soulignement, tels que 1_000_000, 0b_1010_0110 ou 3.1415_9265. Un trait de soulignement peut apparaître entre deux chiffres ou entre le préfixe littéral et le premier chiffre.

    Ces modifications ont été implémentées par le biais de changements apportés au compilateur et aux packages de bibliothèque go/scanner et text/scanner (nombres littéraux) et go/types.

    Concernant les modules

    La variable d’environnement GO111MODULE continue reste par défaut sur « auto », mais le paramètre auto active maintenant le mode module-aware de la commande go chaque fois que le répertoire de travail actuel contient, ou est sous un répertoire contenant, un fichier go.mod, même si le répertoire actuel est dans GOPATH/src. Ce changement devrait simplifier la migration du code existant au sein de GOPATH/src et la maintenance continue des modules-aware packages aux côtés des importateurs non-module-aware.

    La nouvelle variable d’environnement GOPRIVATE indique les chemins des modules qui ne sont pas accessibles au public. Elle sert de valeur par défaut pour les variables de bas niveau GONOPROXY et GONOSUMDB qui fournissent un contrôle plus fin sur les modules qui sont récupérés par proxy et vérifiés à l’aide de la base de données de checksum.

    La variable d’environnement GOPROXY peut maintenant être définie sur une liste d’URL de proxys séparés par des virgules et sa valeur par défaut est maintenant « https://proxy.golang.org,direct ». Lors de la résolution du chemin d’accès d’un paquet à son module contenant, la commande go essaiera tous les chemins de modules candidats sur chaque proxy de la liste à la suite. Un proxy injoignable ou un code d’état HTTP autre que 404 ou 410 met fin à la recherche sans consulter les autres proxys.

    La nouvelle variable d’environnement GOSUMDB identifie le nom et éventuellement la clé publique et l’URL du serveur de la base de données à consulter pour les sommes de contrôle des modules qui ne figurent pas encore dans le fichier go.sum du module principal. Si GOSUMDB n’inclut pas d’URL explicite, l’URL est choisie en sondant les URL GOPROXY. Si GOSUMDB est désactivé, la base de données des sommes de contrôle n’est pas consultée et seules les sommes de contrôle existantes dans le fichier go.sum sont vérifiées. Les utilisateurs qui ne peuvent pas accéder à la base de données proxy et à la base de données des sommes de contrôle par défaut (par exemple, en raison d’un pare-feu ou d’une configuration bac à sable) peuvent désactiver ce mécanisme en réglant GOPROXY sur « direct », et/ou GOSUMDB sur « off ».

    Nom : go_google.png
Affichages : 2450
Taille : 66,8 Ko

    En mode module-aware, la sous-commande go get supporte maintenant le suffixe de version @patch qui indique que le module nommé ou le module contenant le paquet nommé doit être mis à jour vers la version de patch la plus élevée avec les mêmes versions majeures et mineures que la version trouvée dans la liste de compilation. Par défaut, « go get -u » en mode module met à jour uniquement les dépendances non-test, comme en mode GOPATH. Il accepte maintenant aussi l’option -t, qui (comme en mode GOPATH) permet d’inclure les paquets importés par les tests des paquets nommés sur la ligne de commande. « go get -u » (sans arguments supplémentaires) permet de mettre à jour uniquement les importations transitives du paquet dans le répertoire courant. Pour mettre à jour tous les paquets importés de manière transitoire par le module principal (y compris les dépendances de test), utilisez « go get -u all ». La sous-commande go get ne supporte plus l’indicateur -m, alors que l'indicateur -d reste supporté et continue à provoquer l’arrêt du téléchargement du code source nécessaire pour construire les dépendances des paquets nommés.

    La commande go env accepte maintenant un indicateur -w pour définir la valeur par défaut par utilisateur d’une variable d’environnement reconnue par la commande go, et un indicateur -u correspondant pour annuler une valeur par défaut précédemment définie. Les valeurs par défaut définies via go env -w sont stockées dans le fichier go/env dans os.UserConfigDir().

    La commande go version accepte maintenant les arguments nommant les exécutables et les répertoires. Lorsqu’elle est invoquée sur un exécutable, go version imprime la version de Go utilisée pour construire l’exécutable. Si l’indicateur -m est utilisé go version imprime les informations de version du module intégré de l’exécutable, si disponible. Lorsqu’elle est invoquée sur un répertoire, go version imprime des informations sur les exécutables contenus dans le répertoire et ses sous-répertoires.

    Le nouveau drapeau go build -trimpath supprime tous les chemins du système de fichiers de l’exécutable compilé, pour améliorer la reproductibilité de la compilation. Si l’option -o passed to go build fait référence à un répertoire existant, go build écrira maintenant des fichiers exécutables dans ce répertoire pour les paquets principaux correspondant à ses arguments de paquets. L’option go build flag -tags prend maintenant une liste de balises de construction séparées par des virgules, pour permettre la création de plusieurs balises dans GOFLAGS. La forme séparée par espaces est obsolète, mais toujours reconnue et sera maintenue. L'option go generate now définit la balise generate build afin que les fichiers puissent être recherchés pour les directives, mais ignorés pendant la compilation.

    Nom : go_google.png
Affichages : 2450
Taille : 66,8 Ko

    Le compilateur n’émet plus de constantes flottantes ni de constantes complexes dans les fichiers go_asm.h. De plus, il bénéficie d’une nouvelle implémentation de l’analyse d’échappement qui se veut plus précise. Mais cette précision accrue peut empêcher l’exécution d’un code non valide qui fonctionnait auparavant : par exemple, un code enfreignant les règles de sécurité unsafe.Pointer. Si vous notez des régressions qui semblent liées à cette évolution, vous pouvez réactiver l’ancien mode d’analyse d’échappement avec go-build -gcflags=all=-newescape=false. Retenez toutefois que cet ancien mode d’analyse sera supprimé dans les versions ultérieures de Go. L’assembleur, de son côté, prend désormais en charge de nombreuses instructions atomiques introduites dans ARM v8.1.

    gofmt et go fmt canonisent maintenant les préfixes et exposants littéraux des nombres pour utiliser des lettres minuscules, mais laisse les chiffres hexadécimaux seuls. Ceci améliore la lisibilité lors de l’utilisation du nouveau préfixe octal (0O devient 0o) et la réécriture est appliquée de manière cohérente. Par ailleurs, gofmt supprime maintenant les zéros de tête inutiles d’un nombre entier décimal imaginaire littéral. Pour les besoins de rétrocompatibilité, un nombre entier imaginaire littéral commençant par 0 est considéré comme un nombre décimal et non comme un nombre octal. Par exemple, 0B1010, 0XabcDEF, 0O660, 1.2E3, et 01i deviennent 0b1010, 0xabcDEF, 0o660, 1.2e3, et 1i après avoir appliqué gofmt.

    Runtime

    En ce qui concerne le Runtime, cette version améliore d'environ 30 % les performances de la plupart des utilisations de « defer » ainsi que les notifications, lors de la survenue de paniques. Comme sur Go 1.12, le runtime est désormais plus agressif lorsqu'il s'agit de restituer de la mémoire au système d’exploitation afin de la rendre disponible pour les autres applications. La liste détaillée des modifications apportées à Go v1.13 est disponible sur le site de l’éditeur.

    Source : Golang

    Et vous ?

    Utilisez-vous le langage Go ?
    Quels sont ses avantages et ses inconvénients, d’après vous ?
    Que pensez-vous des nouveautés introduites dans cette nouvelle version ?

    Voir aussi

    L'équipe de Go publie des brouillons du design du langage Go 2, au menu : la généricité, la gestion des erreurs et la sémantique des valeurs d'erreur
    « Pourquoi on est repassé de Go à PHP ? », Danny van Kooten, l'éditeur de MailChimp nous livre les raisons de ce rebasculement
    Le langage Go continue sa progression avec de nombreux développeurs qui l'utilisent dans les projets professionnels et personnels, selon un sondage
    GoLand 2019.1 disponible, l'EDI de JetBrains pour le développement en Go, s'enrichit de nouveaux outils de profilage et améliore le débogage et plus
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    décembre 2011
    Messages
    1 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : décembre 2011
    Messages : 1 260
    Points : 3 454
    Points
    3 454
    Billets dans le blog
    12
    Par défaut
    Utilisez-vous le langage Go ?
    Quels sont ses avantages et ses inconvénients, d’après vous ?
    Que pensez-vous des nouveautés introduites dans cette nouvelle version ?
    J'utilise Go pour mes projets personnels, j'ai notamment développé mon propre framework web (minimaliste).
    Le seul inconvénient que je trouve au langage (pour le moment) est le manque des templates/generics. Le manque de la gestion des exceptions ne me dérange pas plus que cela, je suis plutôt satisfait de la gestion des erreurs avec les tuples. Ce sont des features qui sont prévues pour la prochaine version il me semble, reste à voir si la syntaxe proposée va plaire à la communauté.

    J'ai remarqué un engouement assez flagrant autour du langage Rust en ce moment, ses performances sont proches de C et C++, tandis qu'en terme de perf Go fait à peine mieux que Java et C# (sauf en ce qui concerne la consommation de mémoire qui est très réduite). Go possède tout de même des avantages non négligeables, c'est un langage plus simple à apprendre que Rust, possède plus d'API standard, compile très vite, de nombreux projets (Docker, Terraform etc) sont écrits en Go aussi, à voir si Google compte maintenir ce langage.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/02/2019, 15h30
  2. Réponses: 3
    Dernier message: 25/09/2018, 15h07
  3. Réponses: 1
    Dernier message: 28/08/2018, 18h15
  4. Développer un langage sur .net
    Par jeromechezgdf dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 31/05/2007, 17h27

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