Nous avons le plaisir de vous présenter le cinquième numéro de « Nitération », la lettre d’information irrégulière du projet Nit.
Les statistiques combinées, pour les mois de décembre, janvier et février donnent:
$ git diff --shortstat v0.6.3..v0.6.4
1634 files changed, 16938 insertions(+), 36857 deletions(-)
Ont contribué (ou ont eu des patchs intégrés): Jean Privat, Alexis Laferrière, Alexandre Terrasa, Romain Chanoir, Lucas Bajolet, Geoffrey Hecht, Christophe Gigax, Clément De Figueiredo, Johan Kayser, Jean-Philippe Caissy et Guillaume Auger.
Les contributeurs étant de plus en plus nombreux et motivés, un document indiquant l'organisation du travail a été rédigé.
Nous espérons que cela améliorera l'efficacité des développeurs pour que leur code soit intégré.
Le site http://nitlanguage.org à été amélioré, en particulier il est plus lisible sur les téléphones.
Une version PDF et EPUB du manuel du langage sont également disponibles (et automatiquement synchronisés lors des éditions).
Quelques bug-fixes ont été intégrés depuis janvier. 7c99077ab892 09b01633b294 88e5f6fcaaf0 d146038a8335 7aa4b14b462a
Ainsi que plusieurs améliorations:
De plus, un gros travail de nettoyage et de réorganisation du javascript embarqué a été fait pour le rendre plus maintenable et évolutif. c0ef94484e41.
Un gros effort de réorganisation à été fait sur les métriques (bfe4ece3ee57).
Avec la nouvelle architecture, les métriques sont plus indépendantes et mieux documentées. De plus, il est maintenant possible d'importer le calcul des métriques depuis d'autre outils.
La prochaine étape est maintenant d'utiliser ces métriques pour améliorer l'affichage de la documentation dans les outils nitmetrics et nitx.
Le vieux compilateur est supprimé dans le dépôt principal. b121ea7c218
La plupart des choses fonctionnent encore, voir mieux. Bien que cela puisse passer pour une régression, cela va permettre d'améliorer le développement de choses réellement utiles.
Les projets (nouveau nom des packages), sont entrés dans le dépôt. 892b3ad6d87d et 6f286420f
Le modèle à été augmenté de MProject (un projet) et de MGroup (un paquet de modules et groupes) et de l'API qui va bien.
L'ancienne API d'imbrication des modules est conservée par compatibilité en attendant que les outils (comme nitdoc) profitent des projets.
Le loader a également été mis-à-jour. Le code est plus simple et plus robuste. Le loader est également capable de charger et d'analyser correctement un fichier même profond dans une hiérarchie des répertoires. Cela permet par exemple au plugin syntactic de vim de fonctionner sur des fichier nit sans avoir à configurer un module principal.
Ce qu'il reste à déterminer c'est :
nit_projet, nit_info, nit_description, etc.L'interpréteur est capable d’analyser et d'injecter du code dans un programme en cours d'exécution. 5d34da20e77
L'exploit est original dans le sens où le code activant la fonctionnalité n'est pas monstrueux et à marché quasiment du premier coup. L'infrastructure existante (frontend) est utilisée "telle quelle" pour parser et analyser du code arbitraire.
nitg gagne l'affichage de la trace de pile en cas d'erreur au runtime (ou de signal reçu). On utilise pour ça la bibliothèque libunwind.43fe3be0deee
L'option de compilation --nit-stacktrace permet en outre d'afficher les noms des méthodes Nit au lieu des noms des fonctions C (pour un coût additionnel modique et une dépendance vers le logiciel gperf). ecaafae6d
RTA est désactivé pour le moteur d'exécution nitg-e (nitg --erasure). Cela permet d'utiliser des constructions génériques récursivement (qui génère un nombre de types infini et donc ne sont pas RTAisables). f1542db4e6fb830
Pour nitg-s, plus de travail est demandé pour des raisons d'implémentation de la résolution des types ouverts et pour les tests de types.
Des demandes de part et d'autre pour élargir l'utilisation des nullables fait que le test automatique à la fin des constructions est désactivé. e26533d6bc
Ainsi, un objet peut contenir des attributs non-initialisés (qui échoueront au premier accès). On va voir ce que ça va donner en pratique. b80e39e4c6c
Une preuve de concept de sérialisation (1f4bea4967d49) et dé-sérialisation (c874bc818a7be5) automatique est disponible. Des objets Nit(*) peuvent désormais se dumper dans un fichier JSON et être récupéré plus tard.
(*) certaines restrictions s'appliquent, voir détails en magasin.
La nouvelle interface native a enfin été intégrée! 5eed51f47 30525001, 407771f6dc.
Au programme: binding vers C, preview technologique vers C++ et début du travail vers java.
Avec la nouvelle FFI, de nouveaux bindings arrivent également comme OpenGL ES et l'amélioration du binding GTK.
Seule restriction, c'est seulement compatible avec nitg-g pour l'instant.
Après être restée plusieurs mois dans les tuyaux, la nouvelle API de manipulation des chaînes de caractères est entrain d'être intégrée progressivement dans le dépôt principal.
Pour le moment, seule une partie de l'API a été intégrée au dépôt principal (vues sur chaînes de caractères), et le reste (Abstractions supplémentaires et détachement du bloc des Collections) devrait suivre dans les prochaines semaines. 5bf9e0212e
Les nouveaux constructeurs, cf constructeurs2 sont en cours de développement. Toutefois, leur mise en oeuvre ont pour l'instant nécessité de nombreux commits de préparation et de bug-fixes comme 51591894049 et b3075d86c0.
On espère avoir prochainement quelque chose de montrable.
Plusieurs patchs améliorant la documentation de la bibliothèque standard ont été intégrés.