Technologie Sortie de Tcl/Tk 8.5.0

Posté par . Modéré par Benoît Sibaud.
Tags :
0
26
déc.
2007
Technologie
Le Tcl Core Team est heureuse d'annoncer la sortie de la version 8.5.0 du langage de script Tcl et de la bibliothèque d'interface graphique Tk. C'est la première version stable de la branche Tcl/Tk 8.5, résultat de plus de quatre années de développement et représentant une avancée significative par rapport aux précédentes versions.

Parmi les nouveautés pour Tcl, il y a une structure de données dictionnaire, le support des grands entiers, les fonctions anonymes, la gestion des packages par module. Pour Tk, il y a l'adjonction d'un moteur de thèmes (permettant de se passer du look très épuré de Motif), les fontes anticrénelage sous X11, de nouveaux widgets intégrés directement dans le noyau (onglets, combobox, listes arborescentes et barres de progression) et les fenêtres transparentes.

NdM : merci à dark_moule pour sa contribution (cf. suite de la dépêche). Les principales nouveautés et améliorations de Tcl 8.5
  • La vitesse : Tcl s'exécute 10% plus rapidement qu'avec la version précédente grâce à l'amélioration du bytecode, au moteur de code-objet plus performant et à la réduction de l'empreinte mémoire.
  • Bignums : Tcl supporte dorénavant les entiers en précision arbitraire dans le noyau, ce qui améliore les opérations mathématiques sur les grands entiers.
  • La commande clock : une réécriture plus robuste de la commande de gestion de l'heure et de la date.
  • La commande dict : une nouvelle structure de données dans le noyau qui autorise l'accès par valeur plutôt que par variable, ce qui est sensiblement plus rapide.
  • La commande apply : permet de créer des fonctions anonymes (lambda).
  • La commande chan : rationalise et remplace plusieurs commandes d'entrée/sortie pour les opérations sur les fichiers et les canaux.
  • Améliorations supplémentaires : recherche dans les listes plus rapide, améliorations des procédures mathématiques, parsing sécurisé des arguments d'une procédure et la gestion des packages par module.

Les principales nouveautés et améliorations de Tk 8.5
  • Un nouveau moteur de thèmes : des widgets thèmables qui tiennent compte des spécificités des plates-formes Mac OS X et Windows pour une meilleure intégration. X11 présente un meilleur aspect visuel (pour les copies d'écran, voir http://wiki.tcl.tk/13636).
  • Restitution des fontes : on utilise dorénavant des fontes anticrénelage sous X11.
  • Le widget text : un défilement moins saccadé, un widget identique sous toutes les plates-formes et des procédures améliorées pour compter et remplacer du texte.
  • Améliorations supplémentaires : les onglets, les combobox, les listes arborescentes et les barres de progression dans le noyau, des fenêtres transparentes, une nouvelle version plein écran pour Windows, et des améliorations pour les widgets spécifiques et pour la disposition des fenêtres.


Présentation
Merci à dark_moule qui nous gratifie d'une présentation détaillée de ce duo

Pour ceux qui ne connaissent pas ce langage, Tcl (abréviation de Tool Command Language) est un langage de script initialement conçu en 1988 par John Ousterhout et son équipe à l’université de Berkeley. Il est facile à apprendre, surtout pour un habitué du langage C ou une personne qui utilise régulièrement un shell. Bien que la syntaxe semble dans un premier abord assez similaire au C, elle est en réalité beaucoup plus simple. Ce langage permet de développer très rapidement des logiciels de petite ou moyenne taille avec une facilité surprenante pour gérer l’aspect graphique.

Cette facilité est permise grâce à l’extension Tk, qui est d’ailleurs plus connue que le langage Tcl lui même. Ce couple permet donc de concevoir des applications fenêtrées indépendamment de la plate-forme (Unix / Mac OS / Windows) à la manière du langage Java. Et il est de plus très facile d’intégrer à d’autres logiciels une interface graphique en Tcl/Tk.

Pour couronner le tout, les applications développés en Tcl/Tk sont distribuables en Starkit, qui est l’acronyme de « StandAlone Runtime called Tclkit ». Ce mécanisme permet de regrouper dans un seul fichier tous les éléments qui composent l’application, c’est à dire les sources, les images, les bibliothèques, les extensions, etc. dans une sorte de système de fichiers virtuel. Ce fichier ainsi obtenu peut-être exécuté sur n’importe quelle plate-forme, sans y apporter la moindre modification, ce qui simplifie grandement le déploiement dans les entreprises.

En effet, Tcl/Tk est disponible sur la majorité des plates-formes couramment utilisées. Cela inclue donc les systèmes d’exploitations Windows tels que Windows CE, PocketPC, 9x, NT, 2000, XP et Vista, mais aussi Mac OS 7, 8, 9 et 10 ainsi que les systèmes dérivés d’UNIX tels que GNU/Linux, BSD, AIX, HP-UX, Solaris, QNX et d’autres.

Cette nouvelle va donc faire de nombreux heureux en cette période de fêtes :)
  • # Warning : Commentaire superficiel

    Posté par (page perso) . Évalué à  2 .

    Les applis en tcl/Tk vont enfin ressembler à quelque chose ! \o/
    • [^] # Re: Warning : Commentaire superficiel

      Posté par (page perso) . Évalué à  0 .

      Ben avant, ça ressemblait déjà à quelque chose: c'était moche. Maintenant, ça sera antialisé et moche.
    • [^] # Re: Warning : Commentaire superficiel

      Posté par (page perso) . Évalué à  2 .

      Par exemple, Coccinella, le client Jabber libre, basé sur Tcl/Tk 8.4, donc la version précédente :
      * Sous Linux : http://thecoccinella.org/v/linux/chatLinux.png.html
      * Sous Mac OS X : http://thecoccinella.org/v/macosx/avatarMenu-Mac.png.html
      * Sous l'autre OS, le pire des trois : http://thecoccinella.org/v/windows/groupchatTabbedRussianXP.(...)

      N'étant pas spécialiste des UI, ça m'a l'air propre...
      • [^] # Re: Warning : Commentaire superficiel

        Posté par (page perso) . Évalué à  2 .

        Tcl Tk a bien changé :)
        J'ai eu fait des scripts en Tcl TK + C qui marchaient toujours 10 ans plus tard.
        Le coté moche venait des choix par défaut.

        A coté de ça, philsophiquement, tcl/tk est dans ma faible expérience le langage de scriptage qui a apporté la manière de programmer les interfaces graphiques la plus propre :
        - gestion des GUI comme un gestionnaire d'évènement qui boucle ou chacun des éléments réagi grâce à des callbacks (c'est sûrement pas innovant, mais le html utilisé en GUI revient à faire de la gestion d'UI en séquentiel);
        - proposition de "gestionnaire de géométrie" variés, souples et puissant, dont le célèbre pack orienté mise en page relative (je n'ai jamais utilisé que pack).

        Par contre contrairement à ce que l'on imagine, le plus dur ce n'est pas la syntaxe, qui en un sens est proche de perl matinée de fortran (pour les tournures vieillotes comme set), mais la philosophie quand on fait du GUI qui est orientée évènement.

        Ce langage m'a appris beaucoup de chose, je l'utilise plus (sauf parfois avec perl::Tk) cependant, je continuerais à le défendre car même si le web remplace presque bien les GUI client lourd, dès que l'on veut faire de l'évènementiel (comme avec ajax), le niveau de complexité dépasse de loin le tcl/tk. À quand le retour de l'utilisation du plugin tck/tk en lieu et place d'ajax ?
        http://www.tcl.tk/software/plugin/

        Par curiosité, essayez donc de faire une petite interface graphique vous verrez à quel point ce langage est puissant pour ce domaine.
  • # Et pour Python/Tkinter ? :)

    Posté par . Évalué à  2 .

    Je croyais que le développement de Tcl/Tk était au point mort, mais cette nouvelle version est vraiment la bienvenue car elle comble des lacunes, surtout au niveau de l'apparence des widgets sous GNU/Linux.

    Je n'ai jamais programmé en Tcl/Tk, mais j'ai déjà fait quelques petits programmes en Python/Tkinter (bindings Python pour utiliser Tk), aussi je me demandais si Tkinter pourra bientôt profiter des améliorations de Tk.
    Ça mettrait aussi fin aux modules "add-ons" tels que Tix ou Pmw, qui ajoutent de nouveaux widgets mais d'une façon plus ou moins cohérente malheureusement :/

    @Jul
    Je suis d'accord avec toi quand tu dis que la programmation d'interface est facilitée, mais la gestion des d'évènements est vraiment basique...
    gestion des GUI comme un gestionnaire d'évènement qui boucle ou chacun des éléments réagi grâce à des callbacks

    Ben c'est le principe même de la programmation événementielle, que l'on retrouve dans tous les toolkits graphiques (du moins, à ma connaissance)...
    Malheureusement en Tk on ne peut pas "attacher" des données aux évènements, contrairement à GTK+ ou Qt qui intègrent le principe des signaux.
    Tk est plus simple, mais aussi beaucoup plus limité.
    À moins que tu voulais dire que Tk était un précurseur dans ce domaine, GTK+ et Qt étant plus récents ?
    • [^] # Re: Et pour Python/Tkinter ? :)

      Posté par (page perso) . Évalué à  2 .

      À moins que tu voulais dire que Tk était un précurseur dans ce domaine, GTK+ et Qt étant plus récents ?
      Tout à fait mon bon monsieur, tel était l'esprit de ma phrase.

      Malheureusement en Tk on ne peut pas "attacher" des données aux évènements, contrairement à GTK+ ou Qt qui intègrent le principe des signaux.

      On peut mettre à jour des widgets (de manière limité) en fonction de la valeur de variables (option variable des widgets).

      Il me semble aussi que comme le tie de perl on peut greffer des callbacks sur des valeurs.

      Si mes souvenirs sont exacts, on peut donc simuler les signaux avec un variable ^^ surveillée.
    • [^] # Re: Et pour Python/Tkinter ? :)

      Posté par . Évalué à  2 .

      Évidemment, Tk intègre la notion d'attachement de signaux. C'est la commande "bind". On attache un événement (appui sur une touche, entrée de la souris, destruction d'un widget, ...) pour un widget ou plusieurs, à l'exécution d'un morceau de code.

      C'est depuis l'origine je pense dans Tk. Par contre, il est très courant que l'on est pas besoin d'aller jusque là, car les widgets courants (boutons, entrée de texte) intègrent des binding par défaut.

      Les détails ici : http://fr.wikibooks.org/wiki/Vos_premiers_pas_en_Tk ou là http://www.linbox.com/ucome.rvt/any/fr/Ressources/Cours/tcl/(...) .

      Les vrais limites de tk ne sont pas là. Pour moi la vraie limite étaient la non thémabilité de tk (mais avec 8.5 c'est fini), la difficulté d'avoir un look unique même entre 2 linux (pb de fontes). Il manquait aussi quelques widgets courants que l'on trouvait en librairie et qui sont maintenant intégrés (combobox, widget arbre, ...).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.