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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La version 1.26 de Go, le langage de programmation développé par Google, est disponible avec des modifications du langage, un nouveau ramasse-miettes, des performances améliorées et bien plus encore

Le , par Anthony

54PARTAGES

5  0 
Go 1.26 est désormais disponible. La dernière version du langage de programmation développé par Google introduit deux modifications de la syntaxe du langage : une simplification de la fonction intégrée « new », qui permet désormais à son opérande d'être une expression, et la possibilité pour les types génériques de se référencer à eux-mêmes dans les listes de paramètres de type. Cette mise à jour active également par défaut le ramasse-miettes Green Tea (GC), plus performant, et apporte d'autres améliorations en termes de performances.

Go est un langage de programmation généraliste de haut niveau, statiquement typé et compilé. Il est connu pour la simplicité de sa syntaxe et l'efficacité du développement qu'il permet grâce à l'inclusion d'une grande bibliothèque standard répondant à de nombreux besoins pour les projets courants. Il a été conçu chez Google en 2007 par Robert Griesemer, Rob Pike et Ken Thompson, puis annoncé publiquement en novembre 2009. Sa syntaxe est similaire à celle du C, mais il dispose également d'un ramasse-miettes, d'un typage structurel et d'une concurrence de type CSP.

https://youtu.be/ItmJUrcFkM4

Go 1.26 introduit plusieurs améliorations majeures du langage et du runtime pour les développeurs. La nouvelle fonction intégrée est désormais plus flexible, car elle accepte des expressions pour les opérandes, ce qui simplifie la spécification des valeurs initiales des variables. Cela est particulièrement utile lors du remplissage de champs facultatifs dans les workflows de sérialisation, tels que ceux utilisant encoding/json ou les tampons de protocole qui utilisent souvent des pointeurs.

Par ailleurs, Go 1.26 permet désormais aux types génériques de se référencer eux-mêmes dans les listes de paramètres de type, ce qui ouvre la voie à des modèles d'abstraction de type plus avancés. Les développeurs bénéficient d'une assistance supplémentaire grâce à la commande go fix entièrement remaniée, qui regroupe désormais les modernizers de Go afin d'automatiser les mises à jour des bases de code, d'appliquer des idiomes modernes et de faciliter les migrations d'API à l'aide d'une suite de fixers et d'un inlineur au niveau de la source.

En termes de performances, le ramasse-miettes Green Tea est désormais activé par défaut, poursuivant ainsi les améliorations apportées en matière d'optimisation et de stabilité lors des expérimentations précédentes. L'efficacité d'exécution est améliorée grâce à une réduction d'environ 30 % de la surcharge des appels cgo. Pour une sécurité renforcée, les plateformes 64 bits bénéficient désormais d'une randomisation de l'adresse de base du tas au démarrage, ce qui rend plus difficile l'exploitation des bogues de mémoire dans cgo.

À la suite de ces changements, Go 1.26 lance également un profil expérimental de fuite de goroutines et apporte d'autres mises à jour au compilateur, au linker, aux routines bootstrap et à la bibliothèque standard.

Modifications du langage

Go 1.26 introduit deux améliorations significatives à la syntaxe du langage et au système de types.

Tout d'abord, la nouvelle fonction intégrée, qui crée une nouvelle variable, permet désormais à son opérande d'être une expression, spécifiant la valeur initiale de la variable.

Un exemple simple de ce changement signifie qu'un code tel que celui-ci :

Code Go : Sélectionner tout
1
2
x := int64(300) 
ptr := &x

Peut être simplifié comme suit :

Code Go : Sélectionner tout
ptr := new(int64(300))

Cette fonctionnalité est particulièrement utile lorsque vous travaillez avec des paquets de sérialisation tels que encoding/json ou les tampons de protocole qui utilisent un pointeur pour représenter une valeur facultative, car elle permet de remplir un champ facultatif dans une expression simple, par exemple :

Code Go : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import "encoding/json" 
  
type Person struct { 
    Name string   `json:"name"` 
    Age  *int     `json:"age"` // age if known; nil otherwise 
} 
  
func personJSON(name string, born time.Time) ([]byte, error) { 
    return json.Marshal(Person{ 
        Name: name, 
        Age:  new(yearsSince(born)), 
    }) 
} 
  
func yearsSince(t time.Time) int { 
    return int(time.Since(t).Hours() / (365.25 * 24)) // approximately 
}

Deuxièmement, la restriction selon laquelle un type générique ne peut pas faire référence à lui-même dans sa liste de paramètres de type a été supprimée. Il est désormais possible de spécifier des contraintes de type qui font référence au type générique contraint. Ce changement simplifie la mise en œuvre de structures de données et d'interfaces complexes.

Par exemple, un type générique Adder peut exiger d'être instancié avec un type qui lui est similaire :

Code Go : Sélectionner tout
1
2
3
4
5
6
7
type Adder[A Adder[A]] interface { 
    Add(A) A 
} 
  
func algo[A Adder[A]](x, y A) A { 
    return x.Add(y) 
}

Auparavant, l...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de dolanor
Membre habitué https://www.developpez.com
Le 13/02/2026 à 13:34
Bien content de cette version.

Des retours que j'ai vu, les gains sur CGO et le garbage collection sont assez sympatiques !

Faudrait que je teste sur la démo du moteur 3D g3n.

Et je suis trop content qu'ils réinvestissent sur go fix, un outil tellement sous côté
2  0