Société

» Actualités » Présentation » Faisons affaire » FAQ Flux RSS

Documents

» Livres

Logiciels

» GT (Français) » GT (English) » Archives

Auteur

» CV (Français) » CV (English)


Actualités

29 décembre 2011 Meilleurs voeux

days[-4] = "Joyeux Noël"

days[+2] = "Bonne année 2012"

Rumeur: en 2012, T@G proposerait une nouvelle offre de services...

24 juillet 2011 GT 3.4 Templates++

Le corps des méthodes de templates peut dorénavant être conditionné par le type d'un paramètre de template.

#if ${T=int} ... #endif pour n'exécuter le code que si le paramètre T prend la valeur int.

#if ${T=*} ... #endif dans le cas où T est un pointeur (vers n'importe quel type)

19 juillet 2011 GT 3.3 New World Order

L'ordre naturel de déclaration des types et d'importation de fichiers externes est maintenant respecté. Ceci permet à nouveau de composer certains types plutôt que de les aggréger. malloc--, free--

18 juillet 2011 GT 3.2 Fix

GT refusait les invocations de méthodes dont la liste d'arguments débutait par un retour charriot. Ce n'est plus le cas.

14 juillet 2011 GT 3.1 Fatal Error

Les messages d'erreur comprennent maintenant le numéro de colonne.

Ceci permet à certains éditeurs de se rendre directement à l'emplacement (et non la ligne) d'origine du problème.

12 juillet 2011 GT 3.0 Enums, templates

Les types énumérés sont supportés

La substitution de noms s'est améliorée: si un type T est affecté à la valeur int*, ${T} donnera effectivement int* mais ${$T} donnera int_. Cela permet d'élaborer des templates plus complexes.

8 juillet 2011 GT 2.9 Varargs

GT supporte maintenant les méthodes à nombre paramètres variable.

7 juillet 2011 GT 2.8 Classes statiques

Une classe statique regroupe attributs et méthodes statiques. Elle n'induit aucune structure dans le code généré (un -pedantic warning de moins, un code généré plus léger)

GT produit des pragmas #line à la demande

Refactoring: la fusion entre classes et instances de templates a été optimisée

5 juillet 2011 GT 2.7 Composition

Un attribut peut maintenant être du type

Les versions précédentes de GT obligeaient les attributs à être de type pointeur, excluant ainsi toute possibilité de composition.

4 juillet 2011 GT 2.6 Constness

Attributs, paramètres et [objets cibles des] méthodes peuvent être définis const.

3 juillet 2011 GT 2.5 Templates refactoring

L'expérience montre que la séquence de fin de templates "}>" est incompatible avec la propagation des paramètres desdits templates.

La séquence de fin devient donc "}<>".

Exemple 
template List<T>{
	using Node_${T} = Node<${T}>
}<>
	

29 juin 2011 GT 2.4 Light Template meta-programming

GT permet d'instancier une template non seulement en dehors de toute classe, mais aussi au sein d'une classe.

Effet de bord: comme une Template devient une classe à l'instanciation, GT peut donc instancier une Template depuis une autre Template.

Inconvénient: GT a pris du poids et pèse maintenant 87 Ko.

26 juin 2011GT en Anglais

La page de présentation du langage GT et de son compilateur est maintenant disponible en Français comme en Anglais.

21 juin 2011Maintenance: GT 2.3

Suppression d'une lourdeur inutile héritée du temps où la surcharge était supportée.

19 juin 2011Intégration continue: GT 2.2

Automatisation de la production d'exécutable et de lancement des tests.

17 juin 2011Optimisation: GT 2.1

Suppression d'une lourdeur inutile héritée du temps où la surcharge était supportée.

GT 2.1 est disponible ici

15 juin 2011Maintenance: GT 2.0

Templates et commentaires ne faisaient pas bon ménage. Corrigé.

GT 2.0 est disponible ici

14 juin 2011Evolution: GT 1.9

Les templates peuvent dorénavant hériter d'une classe

Dédoublonnage: l'inclusion multiple "accidentelle" d'un fichier se réduit à une inclusion simple

GT 1.9 est disponible ici

11 juin 2011Evolution: GT 1.8

Toutes les classes sont maintenant partielles au sens C# du terme

Optimisation (dans la recherche des types référencés)

Aide au codage (indication en cas d'oubli de 'this.' pour référencer un attribut)

GT 1.8 est disponible ici

10 juin 2011Refactoring: GT 1.7

Refactoring interne: macros/fonctions, règles de nommage

Documentation du code source

GT 1.7 est disponible ici

9 juin 2011Tout est objet: GT 1.6

Invocation de méthodes sur types primitifs et assimilés (int, char, char*, int), même litéraux

Correction d'un bug (du parser) lors de l'invocation de fonctions externes sans paramètres.

GT 1.6 est disponible ici

8 juin 2011Optimisation: GT 1.5

Optimisation de recherche d'éléments syntaxiques

Remplacement d'une méthode de recherche finie (de types primitifs) par une nouvelle machine à états.

GT 1.5 est disponible ici

7 juin 2011Evolution: GT 1.4

La notion de surcharge de méthodes implique lourdeur et choix arbitraires dans l'implémentation d'un compilateur. GT se voulant une surcharge légère du C, décider de l'intégrer tout de même a été une erreur. GT 1.4 est donc "débarrassé" de cette notion.

Un certain nombre d'optimisations deviennent possibles et seront réalisés ces prochaines semaines.

GT 1.4 est disponible ici

25 décembre 2010Edition de Noël: GT 1.3

Cette version est le résultat d'un refactoring interne. Le compilateur GT est maintenant doté de quelques tests unitaires.

GT 1.3 est disponible ici

10 décembre 2010Nouvelle release: GT 1.2

Cette version corrige certaines imperfections sur la gestion des instructions dans un block.

GT 1.2 est disponible ici

8 décembre 2010Nouvelle release: GT 1.1

Cette version supporte toutes les structures de contrôle classiques (for/while/switch/if). Elle permet également la déclaration de multiples variables en une instruction et l'initialisation directe de tableaux ou de structures (int tab[][]= {{1, 2}, {4, 5}}).

GT 1.1 est disponible ici

7 décembre 2010Nouvelle release: GT 1.0

Cette version permet un nombre de blocs imbriqués arbitraire. Elle apporte également une nouvelle optimisation du temps de compilation.

GT 1.0 est disponible ici

6 décembre 2010Nouvelle release: GT 0.9

Cette version corrige un bug sur l'accès aux attributs statiques et sur les expressions parenthésées imbriquées. Elle apporte également une optimisation (du temps de compilation) sur l'invocation de méthodes statiques.

GT 0.9 est disponible ici

4 décembre 2010 Sortie officielle: GT 0.8

Le compilateur du langage GT est disponible (sous Windows 32 bits pour le moment). Cette première version officielle étend le langage C avec les notions de classes, méthodes, attributs, héritage, surcharge de méthodes et templates.

Les détails sont à lire ici

26 octobre 2010 Refactoring: G devient GT

Avant que mon petit langage ne soit publié, je procède à un changement de nom. En effet, G était déjà le nom du langage de programmation de l'environnement LabView, ainsi que celui d'une initiative personnelle de 2008 à laquelle on n'a semble-t-il pas donné suite.

Dans la brève précédente, il faut donc lire "Nouveau langage de programmation: le GT".

23 octobre 2010 Nouveau langage de programmation : le G

De récents projets m'ont redonné le goût des langages de programmation système. Le C est un régal depuis l'existence du Tiny C Compiler initié par Fabrice Bellard, mais sa syntaxe est peu adaptée au codage objet. Le C++ est parfait sur ce plan mais aucun compilateur (trop lents) ou interpréteur (incomplets) n'offre la même interactivité que TCC en C++.

J'ai donc décidé de concevoir G, un langage de programmation objet d'une syntaxe proche de Java/C#/C++. Après plusieurs prototypes fonctionnels peu satisfaisants (précompilateur C, utilisation intensive de macros génériques C), j'ai dû me résoudre à implémenter un compilateur G et qui produira dans un premier temps du code source C.

Les maîtres mots de G: rapidité de compilation, qualité du code produit, moindre surprise et simplicité de codage.

Plusieurs langages ayant grosso-modo ces intentions ont été élaborés ces dernières années: D, Genie, Vala, Go!. L'ambition de G est plus modeste mais son compilateur tâchera d'être plus léger et plus rapide que ces derniers.

Je n'ai pas encore pris de décision sur la licence à appliquer à ce nouveau projet (libre, open source, commerciale, dual), mais je devrais le publier courant 2011.