Sortie de Tcl/Tk 8.6

Posté par  . Édité par tuiu pol, Nÿco et Lucas Bonnet. Modéré par claudex. Licence CC By‑SA.
37
27
déc.
2012
Technologie

Le Tcl Core Team est heureux d'annoncer la sortie de la version 8.6 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.6 dont le développement a commencé en mars 2008.

Parmi les nouveautés pour Tcl, le support officiel de la programmation orientée objets dans le noyau, l'évaluation stackless, les coroutines, une interface commune d'accès aux bases de données SQL dans le noyau, la gestion des exceptions, les canaux virtuels, le support de la compression zlib dans le noyau.

Parmi les nouveautés pour Tk, le support du format PNG, un nouveau sélecteur de fonte, le déplacement absolu des objets dans le widget canvas et les textes obliques.

À noter un changement d’infrastructure : le développement de Tcl/Tk n'est plus hébergé sur Sourceforge avec CVS mais sur un site spécifique avec le gestionnaire Fossil développé par D. Richard Hipp (le créateur de SQLite). Il en est de même pour les deux bibliothèques standards (Tcllib et Tklib).

Les principales nouveautés et améliorations de Tcl 8.6

  • La Programmation Orientée Objets : après environ une décennie de tergiversation et une dizaine d'extensions différentes, Tcl est enfin doté d'un système objet dans le noyau. Il est basé sur les classes et comprend des fonctionnalités telles que les méta-classes, les filtres, les slots et les mixins.
  • L'évaluation stackless : l'évaluation de plusieurs niveaux d'appel de procédures imbriquées n'est plus implémentée au niveau de la pile du langage C. Cette révision importante de l'implémentation interne de Tcl appelée NRE (Non-Recursive-Evaluation-Engine) augmente la profondeur de récursion et permet la récursion terminale (tailcall). Incidemment, apparaissent les nouvelles commandes coroutine, yield et yieldto s'orientant vers la continuation et la programmation concurrente.
  • La gestion des exceptions : la gestion des exceptions via les commandes try/trap/finally ainsi que throw. Ajouté à cela une grande quantité de code de retour d'erreur (-errorcode) permettant une gestion plus fine des erreurs et des exceptions.
  • TDBC (Tcl DataBase Connectivity) : il s'agit d'une interface commune avec les SGBD SQL. Sont inclus les pilotes pour MySQL, PostgreSQL, SQLite et ODBC. Le package sqlite3/tdbc::sqlite3 inclus avec Tcl fournit un moteur de base de données prêt à l'emploi.
  • La compression zlib dans le noyau avec la commande zlib pour gérer la compression de données et de flux.
  • Les nouvelles commandes lmap et dict map permettent un traitement plus compact des collections de données.
  • Le support IPv6 en tant que client et serveur avec la commande socket.
  • Les nouvelles commandes chan push et chan pop pour les canaux virtuels.
  • Améliorations supplémentaires : certaines commandes acceptent zéro argument sans renvoyer une erreur, la version par défaut de Tcl devient la version avec thread, la gestion des fichiers temporaires avec file tempfile, améliorations du tri des listes (lsort -stride), filtrage de dictionnaire (dict filter), encodage et décodage de séquences binaires (binary encode/decode) et un contrôle plus fin du chargement des bibliothèques avec la commande load -global et -lazy.

Les principales nouveautés et améliorations de Tk 8.6

  • Le support du format PNG (lecture/écriture) avec contrôle du canal alpha (transparence)
  • La commande tk busy qui permet de suspendre l'interactivité d'une fenêtre si besoin.
  • Un nouveau sélecteur de fonte tk fontchooser qui fournit une interface portable au sélecteur de fonte de la plate-forme, qu'il soit modal ou non.
  • Une nouvelle option -angle $degrees avec $canvas create text pour afficher du texte selon un angle donné dans le widget canvas.
  • Le déplacement absolu d'objets dans le widget canvas avec la commande $canvas moveto.
  • Le déplacement de noeuds avec $canvas imove et $canvas rchars.
  • Le nom des couleurs Tk ont été redéfinis pour suivre les standards du Web.
  • Changement de la gestion de l'événement <MouseWheel> qui est actif dès que la souris est sur une fenêtre.
  • Améliorations supplémentaires : plus d'interaction avec le window manager, le widget spinbox devient thémable (ttk::spinbox) et support de la compression LZW avec le format GIF.

Aller plus loin

  • # Waouh…

    Posté par  (site web personnel) . Évalué à 5.

    Tcl/Tk, c'est vraiment le genre de truc qui m'apparaît comme une technologie du siècle dernier. Et les informations relatives à cette nouvelle version ne font que renforcer cette impression :

    C'est la première version stable de la branche Tcl/Tk 8.6 dont le développement a commencé en mars 2008.

    Quatre ans donc pour sortir une version mineure. C'est vachement dynamique comme développement.

    Parmi les nouveautés pour Tk, le support du format PNG

    Avec à peine quoi, seize ans de retard ?

    • [^] # Re: Waouh…

      Posté par  (site web personnel) . Évalué à 8.

      Quatre ans donc pour sortir une version mineure. C'est vachement dynamique comme développement.

      La numérotation ça ne veut pas dire grand chose. Il y'a quand même un paquet de modifications importantes, même si évidemment ça ne révolutionne pas le monde des langages de programmation. Mais un modèle objet + une réécriture du modèle d'exécution + une gestion des exceptions, ce n'est pas "mineur", même si ça reste très 20e siècle :D On peut noter qu'il y 'a encore un paquet de langages "modernes" qui ne sont pas foutu de faire du TCO. L'approche concurrente parait consistante avec le reste du modèle TCL.

      Après, à savoir si les personnes qui développent 'activement' en tcl sont vraiment intéressé par un modèle objet, j'ai quelques doutes (dans ceux que je connais en tout cas).

      • [^] # Re: Waouh…

        Posté par  (site web personnel) . Évalué à 2.

        Oui, les nouveautés de Tcl mériteraient un numéro majeur dans le cadre d'une numérotation standard.

        • [^] # Re: Waouh…

          Posté par  . Évalué à 4.

          C'est quoi une numérotation standard ?

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: Waouh…

            Posté par  . Évalué à 1.

            Quelque chose comme ça peut être : Semantic Versionning ?

            • [^] # Re: Waouh…

              Posté par  . Évalué à 3.

              Ben justement, le point 9 de cette page indique que la version majeure n'est incrémentée que si des changements incompatibles ont été introduits. Et il ne me semble pas que ce soit le cas ici, donc n'incrémenter que la version mineure est logique.

      • [^] # Re: Waouh…

        Posté par  (site web personnel, Mastodon) . Évalué à 5.

        La question serait plutôt de savoir s'il va se trouver quelqu'un pour démarrer un nouveau projet en TCL/TK, ou s'il ne s'agit que de maintenir des projets existants ?

        • [^] # Pas sans intérêt

          Posté par  . Évalué à 9.

          Je ne sais pas si Tcl ou Tk peuvent être pertinents pour un projet important.

          D’un autre côté, si c’est pour se faire vite fait un petit utilitaire avec interface graphique sans consacrer trop de temps à le maintenir ensuite, Tk peut être intéressant par rapport à des bibliothèques graphiques dont les évolutions majeures fréquentes obligeraient à retravailler régulièrement la partie graphique du programme.

          Imagine un programme que tu aurais écrit en 2000. Tu aurais donc utilisé Qtk 1.2, Qt 2 ou Tk 8.3. Le boulot pour le maintenir fonctionnel ensuite en suivant les évolutions des bibliothèques n’aurait pas été le même suivant ton choix…

          « Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone

          • [^] # Re: Pas sans intérêt

            Posté par  (site web personnel) . Évalué à 4.

            En 2000, j'avais déjà basculé un programme de tcl/tk vers perl/tk et je ferais aujourd'hui la même chose. Tk est une super bibliothèque, c'est Tcl le problème, je dois être hermétique à la beauté de ce langage mais je passais un temps fou à comprendre le moindre truc dedans qui déconnais.

            • [^] # Tcl

              Posté par  . Évalué à 3. Dernière modification le 30 décembre 2012 à 02:08.

              Une fois, j’ai touché à du Tcl.

              Je ne m’en souviens plus en détails et je n’ai pas eu l’envie de remplacer mon langage de prédilection par lui, mais j’en garde l’impression d’une conception assez élégante, qui permet avec une base de langage plutôt minimaliste une expression quasiment aussi riche que d’autres langages de script bien plus lourds et une prise en main assez rapide.

              je passais un temps fou à comprendre le moindre truc dedans qui déconnais.

              C’est vrai que compte tenu de sa conception, le débogage n’est peut-être pas évident…

              « Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone

            • [^] # Re: Pas sans intérêt

              Posté par  . Évalué à 3.

              Tk est une super bibliothèque

              sous windows ça ne se voit pas trop, mais sous Linux ça ressemble quand même à un programme des années 70 :

              http://tk-happy.sourceforge.net/

              « I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond

              • [^] # Quelles années ?

                Posté par  . Évalué à 4. Dernière modification le 31 décembre 2012 à 12:12.

                sous windows ça ne se voit pas trop, mais sous Linux ça ressemble quand même à un programme des années 70 :

                N’exagérons rien, ou alors montre-nous le programme des années 70 qui ressemble à Tk.

                Non, parce que pour autant que je sache, dans les années 70, il n’y avait pas d’interfaces graphiques sauf chez Xerox et ça ressemblait à ça.

                Dans les années 80, les interfaces graphiques ressemblaient plutôt à ça.

                La mode du look pseudo 3D avec ombrage, autant que je me souvienne, ça date plutôt d’environ 1990 (peut-être quelques années avant pour Motif, mais je ne l’ai pas vu à l’époque et je n’ai même pas trouvé la date de sortie de sa première version sur Wikipédia ou sur son site).

                (Édition : j’ai essayé d’inclure les images directement… sans succès ; alors, j’ai remplacé par des liens.)

                « Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone

                • [^] # Re: Quelles années ?

                  Posté par  . Évalué à 4.

                  L'idée reste la même.
                  Quand on tombe sur un truc comme ça sous Linux, on se demande si l'appli n'a pas déjà 10 ans depuis la dernière maintenance.

                  • [^] # Re: Quelles années ?

                    Posté par  . Évalué à 1.

                    exactement, l'exagération faisait partie de l'ironie. J'aurais dû parler de préhistoire, ça aurait peut-être mieux été compris. Dommage parce que sous Windows on ne voit apparemment pas la différence avec un autre type d'appli (en Qt par exemple, sauf pour certains effets bien entendu)

                    « I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond

              • [^] # Re: Pas sans intérêt

                Posté par  (site web personnel) . Évalué à 3.

                Je me fiche un peu du look pour mes programmes… Je parle ici de la facilité et de la qualité de l'API. Si Tk était plus utilisé, pas de doute que l'aspect visuel serait amélioré !

        • [^] # Re: Waouh…

          Posté par  . Évalué à 4.

          Rappelons tout de même que Tk est pratiquement l'outil pour créer des interfaces graphiques par défaut dans pas mal de langages.

          Je pense par exemple à OCaml et à R: certes, il existe d'autres bindings (comme ça se dit en Français au passage, "binding"??), mais quand on ne va pas plus loin que le bout de son nez (on est pressé et/ou peu de temps à passer là-dessus), c'est le choix n°1 sans s'embêter, et c'est toujours bien maintenu.

          Du coup, oui, ce langage est toujours d'actualité, y compris pour des petits projets.

          Après, c'est moche sous Linux, oui, bon, yaka/faukon arrange ça.

    • [^] # Re: Waouh…

      Posté par  (site web personnel) . Évalué à -3.

      Oh, j'oubliais :

      Le support IPv6 en tant que client et serveur avec la commande socket.

      Pfiou, c'est moderne ça, on se croirait en Perl, dans le genre langage avec dix ans de retard par rapport à IPv6…

      • [^] # Re: Waouh…

        Posté par  . Évalué à 9.

        Bah il sont toujours en avance sur le déploiement à grande échelle de IPv6 !

Suivre le flux des commentaires

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