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 !

Nim 1.2 est disponible, le langage de programmation introduit plusieurs nouvelles macros
Pour gérer certaines tâches courantes

Le , par Bill Fassinou

133PARTAGES

4  0 
L'équipe de développement de Nim annonce la sortie de la version 1.2 du langage de programmation après six mois de développement continu. Cette version contient environ 600 nouveaux commits qui n'ont pas déjà été rétroportés vers les versions 1.0.x. Il existe plusieurs nouvelles fonctionnalités et ajouts de bibliothèque standard par rapport à la version 1.0. L'équipe dit avoir essayé de limiter les modifications au minimum, mais certaines corrections de bugs n'étaient pas possibles sans apporter certaines modifications nécessaires.

Rappelons que c'est un langage de programmation qui combine des concepts réussis de langages comme Python, Ada et Modula. C'est un langage de programmation impératif, multi-paradigme et compilé imaginé et développé par Andreas Rumpf. Il est prévu pour être efficace, expressif et élégant. Il supporte la métaprogrammation, le fonctionnel, le procédural et l'orienté-objet. Selon son site web, Nim génère des exécutables natifs sans dépendance, qui ne dépendent pas d'une machine virtuelle, qui sont légers et permettent une redistribution facile. Le compilateur Nim et les exécutables générés prennent en charge toutes les principales plates-formes telles que Windows, Linux, BSD et macOS.

Utilisation de plusieurs versions de Nim

L'équipe recommande à tous les utilisateurs du langage de mettre à niveau et d'utiliser la version 1.2. Il faut noter qu'il est néanmoins possible d'utiliser plusieurs versions de Nim. Si vous souhaitez effectuer une mise à niveau vers la version v1.2, mais que vous comptez sur le comportement de la v1.0, il existe un commutateur de ligne de commande --useVersion, que vous pouvez utiliser avec la dernière version de Nim pour simuler les versions précédentes.

Par exemple, Nim v1.2 est plus strict sur les conversions de types concernant les types de proc. Si cela casse votre code, passez --useVersion:1.0, qui émulera l'ancien comportement. Et ce n'est pas tout. Si vous comptiez sur une fonctionnalité donnée ou un bogue qui est maintenant corrigé, vous pouvez essayer --useVersion:1.0.

when declared

Si vous êtes l'auteur d'une bibliothèque et que vous souhaitez que votre bibliothèque soit disponible à la fois pour les utilisateurs v1.0 et v1.2, mais que vous comptez sur certaines nouvelles fonctionnalités introduites dans la v1.2 qui ne sont pas disponibles dans la version v1.0, vous pouvez alors utiliser when declared. Le module sequtils a maintenant le unzipproc. Il est désormais possible d'écrire votre code comme ceci :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sequtils 
 
when not declared(unzip): 
  proc unzip*[S, T](s: openArray[(S, T)]): (seq[S], seq[T]) = 
    result[0] = newSeq[S](s.len) 
    result[1] = newSeq[T](s.len) 
    for i in 0..<s.len: 
      result[0][i] = s[i][0] 
      result[1][i] = s[i][1] 
 
let a = @[('a', 1), ('b', 2), ('c', 3)] 
let b = unzip(a) # version 1.0 will use the proc declared above 
                 # version 1.2 will use sequtils' proc 
 
assert b == (@['a', 'b', 'c'], @[1, 2, 3])
Voici quelques nouvelles fonctionnalités de la version 1.2 de Nim :

GC:ARC

L'équipe de développement du langage fait remarquer que --gc:arc est la principale nouveauté pour cette version. Il présente de nombreux avantages par rapport aux autres algorithmes GC plus classiques fournis avec Nim 1.0 :

  • indépendamment de la taille du tas, il fonctionne bien avec des tas minuscules et plus grands ;
  • indépendamment de la taille de la pile, les grands tableaux sur la pile ne provoquent pas de ralentissements ;
  • il offre un tas partagé, activé via [c]--threads:on[/U] ;
  • il n'y a plus d'exigences setupForeignGC ;
  • il fonctionne mieux avec le rechargement de code à chaud et les DLL.
  • il fonctionne mieux avec des fibres, des coroutines et autres ;
  • il fonctionne avec webassembly et Emscripten.

https://youtu.be/yA32Wxl59wo

Les macros

La version 1.2.0 introduit plusieurs nouvelles macros qui devraient aider à écrire certaines tâches courantes. Par exemple, dup est une macro qui transforme une fonction in-place en une fonction qui renvoie un résultat sans modifier son entrée. L'idée est que les versions futures de Nim offriront uniquement les versions in-place des fonctions (donc plus de sort et sorted, rotateLeft et rotatedLeft, etc.), ce qui pourrait être transformé en fonctions renvoyant une copie par l'intermédiaire de dup.

Source : Nim

Et vous ?

Qu'en pensez-vous ?

Voir aussi

La première version finale de Nim, le langage doté d'un transcompilateur vers C, C++, JavaScript est disponible avec des ajouts

Nim 0.12 : un langage multiparadigme rapide qui s'approche de sa première version finale avec l'inclusion d'une machine virtuelle

Quel avenir pour le langage C ? Un développeur expérimenté fait ses adieux au langage et livre ses inquiétudes quant à son avenir

C2 : un langage qui se présente comme une évolution de C, plus rapide, sans fichiers d'en-tête, avec système de build intégré et d'autres changements

Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D

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