Nous avons le plaisir de vous présenter le septième numéro de « Nitération », la lettre d’information du projet Nit.
Les statistiques combinées pour les mois d'avril, de mai et de juin donnent:
$ git diff --shortstat v0.6.5..v0.6.6
1304 files changed, 63213 insertions(+), 18960 deletions(-)
Ont contribué (ou ont eu des patchs intégrés): Jean Privat, Alexis Laferrière, Alexandre Terrasa, Lucas Bajolet, Johan Kayser, Romain Chanoir, Julien Pagès et Frédéric Vachon.
Les importations de modules peuvent enfin être qualifiés (import foo::bar). 6c3070e22124add461
Plusieurs modules commencent à en profiter pour nettoyer et simplifier leur hiérarchies.
Les règles statiques ont été enfin ajoutées au méthodes définies au top-level (cad directement dans le module). 03e36705d408dfet 7d82bab6b757895228
Elles sont plus ou moins celles de Java pour les méthodes statiques, qui sont assez naturelles:
print(5) et non pas foo.print(5).self n'est pas utilisable dans leurs corps.Les méthodes internes (celle dont l'implémentation est fournie par le moteur d'exécution) peuvent être définies au top-level ou être des factories (fabriques) analogues aux constructeurs des classes externes. 63d49e47e0be07a
Les accesseurs sur les attributs vieux-style ne sont plus reconnu. C'est du vieux code, ça devrait gêner personne.18a18cf7a87856c19e
Enfin des hexadécimaux littéraux. 5413d273c3eaa72ff
Un gros travail a été fait sur la compilation multi-plateforme.
app.nit est une réécriture de mnit dont l'objectif est d'encapsuler les services de durée de vie, et d'entrée-sortie évènementielles pour des applications autonomes en Nit. Pensez à des applications graphiques, web, ou pour appareils mobiles.936ebb1e05a656
La migration de l'un vers l'autre se fait graduellement mais des fonctionnalités sont déjà disponibles.
La FFI vers Java a été introduite. f0ef366f8564ef197
Et améliorée. 5d94dff1a8143d888d3 ef93a851d88638 f497ec02a220e98b
On a également la possibilité d'inclure un fichier java en extra d'un module Nit, la toolchain s'occupe de sa compilation.ee0566d474e5ffa00a67
La FFI vers JAVA nous permet de profiter encore plus de la plateforme Android et de son API native en Java (sans devoir se coltiner du JNI à la main):
SharedPreferences 34eefe9b154081809f66Le compilateur offre la possibilité de produire un apk android qui ne soit pas de debug avec l'option --release.a35227858ed74883f02
Un dépôt f-droid (fonctionnel) d'applications écrites en Nit est maintenant disponible et est automatiquement mis à jour.http://nitlanguage.org/fdroid/ Les possesseurs d'appareils android peuvent profiter des applications:
PNaCl permet aux navigateurs de Google d'exécuter du code nativement. http://www.chromium.org/nativeclient
Une nouvelle plateforme cible pnacl permet de générer du code et de communiquer avec le reste du navigateur (javascript).b657e14a0b3adbfb33b187b6ce9b976d3c556819 et fe775263b9303ca293ade13b35d7f42d4fb2680f
Emscripten est un projet qui compile du C vers du JavaScript en utilisant LLVM. http://emscripten.org/
Une nouvelle plateforme cible emscripten l'utiliser pour générer directement du JavaScript à partir de programmes Nit.bd435f33db2427534
En exécutant le JavaScript ainsi généré avec node.js, plus de 90% des tests passent. c44a0753f42c5c
Nit compile maintenant sur Mac sans bricolage. 32cd2c6643ca73
La page http://nitlanguage.org/on_mac est guide un pas à pas pour les utilisateurs de ces systèmes.
Numeric spécialise Float et Int.geometry fournit des objets géométriques de base. 0670e9bc1504ea68bc3quadtree pour la recherche rapide d'intersections bc875cd4e76976513c051.Le projet pep8analysis, qui sert à vérifier les TP du cours d'assembleur INF2170, qui vivait dans son propre dépôt, à été intégré officiellement dans le projet. 84409a6d63a94e295a1 et 494ddc9e9f10292c46
Une mise à jour profite de emscripten pour fournir une version web de l'outil http://xymus.net/pep8. ec5de16def3303127a46
Un prototype d'éditeur en ligne est disponible. !?commit 20b17a7dcfcba7c45
Il utilise la plateforme pnacl, et est donc pour l'instant limité au navigateur chrome.
http://nitlanguage.org/online_ide/
Le programme github_merge utilise l'API github pour fabriquer des commits de fusion (merge) à partir des informations contenues dans les pull-requests. ebdf4adec292282315edd
Les outils de inkscape_tools offrent des services de découpage des images et de génération de code Nit de gestion de ces images. 7624bf2318e0649ac435b71
Plusieurs optimisations pour le compilateur séparé ont été ajoutés, comme --direct-call-monomorph ou --inline-some-methods. 09a5a53a9b7bd2aa30b
Plusieurs de ces optimisations profitent d'informations globales et génèrent un code C qui n'est plus indépendant des utilisations. L'option --semi-global les active toutes. 6ebd30114093363b4a
Cette option est une alternative pratique au --global qui produit parfois des trop gros exécutables. Elle est avantageuse pour la compilation vers android ou emscripten, par exemple.
--semi-global est le quatrième moteur surveillé par le service d'intégration continue http://gresil.org/jenkins/, qui exécute maintenant plus de 7000 tests (comptez un bon gros 2 heures). 50a5882077624a
Une variante édulcorée du compilateur, nommée nith et basée initialement sur un poisson d'avril, permet de tester si les fonctionnalités minimales du compilateur sont fonctionnelles en soi pour le bootstrap. 6560e6a077a02cb2f50
Le bootstrap, justement, a été un peu revu: i. l'étape manquante dans le bootstrap a été ajoutée (on ne faisait qu'un seul des 3 T); ii. le compilateur primitif (dans c_src) sera généré à partir de nith (et non nitg) ce qui accélérera le make initial. 9673d350c283856
Le nouveau nitdoc est arrivé, avec un rendu plus classe (bootstrap) et l'utilisation de la nouvelle API des projets/groupes.2de4410f5d4e13 et df7b98d75ec07b
Les groupes sont documentables grâce à leur README. aef9176e6efaf4ef et aef9176e6efaf4efc6cf
Le parser markdown a également été un peu amélioré. 1028bbc87133394
Le colorateur syntaxique a été réécrit et est capable de documenter les entités désignées avec des popup cliquables.3f704a8c534bfcf73
Un service spécifique http://nitlanguage.org/code/ permet de voir ce que cela donne en pratique.
~~~). 57a9c3db6c06c3edeb