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 !

F# 4.0 est disponible en version stable
Avec des optimisations au niveau du compilateur, des corrections de bugs et de nouvelles API

Le , par Olivier Famien

43PARTAGES

3  0 
La version 4.0 du langage de programmation fonctionnel de Microsoft, F# vient de passer en version stable avec la sortie de Visual Studio 2015 RTM. Au menu des nouveautés pour ce langage, nous avons une amélioration des performances au niveau du code et des ajouts de haute importance. Un ensemble de correctifs ont été également apportés à plusieurs niveaux.

Désormais, les constructeurs peuvent être utilisés comme fonctions de première classe. Cela sous-entend que les noms des classes peuvent maintenant être utilisés comme les valeurs des fonctions de première classe.

Dans les précédentes versions, les variables créées avec la syntaxe "mutable" étaient inaccessibles en dehors de la portée de la fonction dans laquelle elles avaient été définies. Avec les changements apportés, les mots clés "mutable" et "ref" ont été combinés afin que la syntaxe "mutable" puisse être utilisée partout et que les valeurs capturées soient converties par le compilateur en valeurs "ref".

Par ailleurs, avec la nouvelle version de ce langage, les classes de F# peuvent maintenant hériter des classes qui implémentent plusieurs instances génériques d’interface.

Les unités des valeurs de mesure ont été simplifiées avec les fonctions "printf". F# 4.0 supporte dorénavant les tableaux .Net de rang 5 ou supérieurs. Les développeurs peuvent maintenant tirer parti de cette fonctionnalité dans leur code.

La grammaire du préprocesseur a également été étoffée. Vous pouvez utiliser les opérateurs booléens ||, && and ! avec l’opérateur de regroupement () dans les directives #if.

En ce qui concerne les corrections apportées aux bugs, nous en avons plusieurs qui ont été réalisées. Par exemple, il a été détecté que le compilateur émet un modificateur de visibilité incorrect pour les constructeurs internes de classe abstraite. Cela a été rectifié. De même, les champs des enregistrements s’initialisaient en désordre. Cela a été également corrigé.

En dehors de ces nouvelles fonctionnalités dont toute la liste est consultable directement sur le site de la firme, nous avons aussi les compilateurs et le runtime qui ont bénéficié de plusieurs optimisations.

Dans ce sens, on peut citer l’amélioration apportée aux performances des API tels que "distinct" ou "groupBy". Cela a été possible en optimisant celles des fonctions de hachage générique pour les types primitifs.

Les sous-listes sont maintenant possibles à réaliser en appliquant la fonction de découpage aux listes du langage.

L’ensemble des fonctions gérant les collections est maintenant en phase avec les modules de tableaux, des listes et des séquences. Toutes les API non conformes avec ces modules seront purement et simplement rejetées en cas de non-conformité.

En outre, on peut aussi relever le fait que les exceptions déclenchées dans le traitement du code asynchrone ont été rendues beaucoup plus faciles à détectées.

Plusieurs API ont été également ajoutées au module Option afin de convertir dans les deux sens les objets null et les valeurs de System.Nullable. Et les extensions WebClient AsyncDownloadFile et AsyncDownloadData sont disponibles afin de télécharger des fichiers ou des données.

Toutefois, il faut noter que cette version de F# connait encore quelques bugs mineurs qui ont suscité la mise en route pour l’implémentation de la mise à jour vers la version 4.1 depuis peu.

Source : Journal des changements sur GitHub

Dépôt GitHub

Et vous ?

Que pensez-vous des améliorations apportées à 4.0 F# ?

En êtes-vous satisfaits ?

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

Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 06/08/2015 à 22:55
Citation Envoyé par Olivier Famien Voir le message
Désormais, les constructeurs peuvent être utilisés comme fonctions de première classe. Cela sous-entend que les noms des classes peuvent maintenant être utilisés comme les valeurs des fonctions de première classe.
C'était déjà le cas pour les classes F# ; ce qui change, c'est que c'est maintenant possible avec les constructeurs de n'importe quelle classe ou structure .NET. Cela évite souvent d'avoir à écrire une lambda, par exemple on peut écrire juste DateTime au lieu de (fun t -> new DateTime(t))

Citation Envoyé par Olivier Famien Voir le message
F# 4.0 supporte dorénavant les tableaux .Net de rang 5 ou supérieurs. Les développeurs peuvent maintenant tirer parti de cette fonctionnalité dans leur code.
En même temps, je pense pas que beaucoup de gens utilisent des tableaux à 5 dimensions ou plus
(d'autant que les perfs des tableaux multi-dimensionnels en .NET sont plutôt médiocres)

Citation Envoyé par Olivier Famien Voir le message
Que pensez-vous des améliorations apportées à 4.0 F# ?

En êtes-vous satisfaits ?
J'utilise F# depuis assez peu de temps, donc à part l'histoire des constructeurs comme fonctions de première classe, je me rends pas encore bien compte de ce que représentent ces améliorations...

Mais en tout cas: F#, c'est bon, mangezcodez-en
1  0 
Avatar de Luckyluke34
Membre émérite https://www.developpez.com
Le 07/08/2015 à 9:25
La seule amélioration que j'utiliserai vraiment est l'harmonisation de Array, List et Seq, ces modules pourtant cousins étant auparavant très disparates en termes de fonctions disponibles.

F# est un langage jeune mais déjà étonnamment mature car il a tiré les leçons bonnes et mauvaises des autres langages à la fois fonctionnels et OO. F# 3 avec les type providers est déjà plus qu'abouti pour moi. Je ne pense pas qu'il subira dans les prochaines années de grosses transformations comparables à ce qu'ont connu Java ou même C# au cours de leur carrière, puisque tout est déjà plus ou moins là.
0  0