[Nitération 7] Nouvelles d'avril, mai et juin

8 views
Skip to first unread message

Jean Privat

unread,
Jul 7, 2014, 1:43:28 PM7/7/14
to nit...@googlegroups.com

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.

TL;DR : les trucs qui impressionnent

Syntaxe et langage

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:

  • pour les invoquer, il ne faut pas de receveur. On écrit print(5) et non pas foo.print(5).
  • self n'est pas utilisable dans leurs corps.
  • On ne peut pas les redéfinir dans des classes, mais on peut les raffiner dans des sous-modules.

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

Plateformes, FFI et applications

Un gros travail a été fait sur la compilation multi-plateforme.

App.nit

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.

Java

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

Android

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):

Le 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

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

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

Mac OS X

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.

Bibliothèques

Contrib

pep8analysis

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/pep8ec5de16def3303127a46

Online IDE

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/

Divers

Le programme github_merge utilise l'API github pour fabriquer des commits de fusion (merge) à partir des informations contenues dans les pull-requestsebdf4adec292282315edd

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

Compilateurs

Plusieurs optimisations pour le compilateur séparé ont été ajoutés, comme --direct-call-monomorph ou --inline-some-methods09a5a53a9b7bd2aa30b

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

Auto-Documentation

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 READMEaef9176e6efaf4ef 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.

Autres outils

Modèle, AST et autres trucs internes

Reply all
Reply to author
Forward
0 new messages