Несколько дней назад был представлен релиз Tcl/Tk 9.0, динамического языка программирования. Он распространяется вместе с кроссплатформенной библиотекой базовых элементов графического интерфейса Tk. Релиз стал первым крупным обновлением с 1 997 года (я был там, Гэндальф) и включает множество улучшений, которые добавляют современные возможности для разработчиков. Давайте посмотрим, что там у нас нового!

Немного истории и значение Tcl/Tk


История Tcl/Tk началась в 1 988 году, когда Джон Оустерхаут, профессор Калифорнийского университета в Беркли, создал Tcl (Tool Command Language) как скриптовый язык для простого создания приложений. В 1 992 году он дополнил его библиотекой Tk, которая позволяет создавать графические пользовательские интерфейсы. Важно отметить, что Tcl/Tk появился задолго до появления современных операционных систем, таких как Linux, FreeBSD и Windows 3.0. Этот инструментарий на протяжении многих лет оставался популярным среди разработчиков благодаря своей простоте и эффективности.

Ключевой особенностью Tcl является его интерпретируемость. В отличие от многих других скриптовых языков того времени, Tcl был разработан с фокусом на интеграцию с другими системами и программами. Это делает его идеальным инструментом для создания комплексных систем, где требуется гибкость и простота в программировании. Tk, в свою очередь, предоставляет возможность создавать кроссплатформенные графические интерфейсы, что было особенно важно в эпоху, когда разработка ПО велась для разных операционных систем.

Среди других скриптовых языков того времени стоит отметить Lua, который появился в 1 993 году. Хотя Lua также предоставлял инструменты для создания программ, он стал более популярным в геймдеве, в то время как Tcl/Tk нашел своё место в создании инструментов для программирования и управления процессами на серверах и в системах с графическими интерфейсами. Современные библиотеки для создания GUI, такие как GTK и Qt, хотя и появились позже (в 1 998 и 1 995 годах соответственно), также ориентированы на кроссплатформенность, однако имеют более сложную структуру по сравнению с Tcl/Tk.

В 2 002 году Оустерхаут стал одним из основателей компании Electric Cloud, которая занималась разработкой инструментов для автоматизации процессов программирования. В 2019 году компания была приобретена CloudBees, однако вклад Оустерхаута в развитие ПО на основе Tcl/Tk остается неоценимым.

С 2 000 года разработкой Tcl/Tk занимается команда Tcl Core Team (TCT). Этот подход, при котором разработка осуществляется силами сообщества, делает проект открытым и доступным для всех желающих внести свой вклад. Tcl/Tk распространяется на условиях лицензии, напоминающей BSD, что даёт возможность использовать его как в открытых, так и в коммерческих проектах.


Что нового в версии 9.0


Главной особенностью обновления Tcl/Tk 9.0 является внедрение 64-битной архитектуры, что значительно расширяет возможности работы с данными. Теперь тулкит поддерживает работу с массивами строк и списков, не ограничивая их длину. Это особенно полезно для приложений, обрабатывающих большие объемы данных, например научные программы или серверные приложения. Важно, что многие программы, написанные для версии 8.0, будут работать без изменений на новой версии, что облегчает переход на обновленный тулкит.

Кроме того, добавлена поддержка Unicode, что позволяет Tcl/Tk корректно работать с текстом на всех языках мира. Unicode стал основным стандартом кодирования символов, что делает это обновление крайне актуальным для разработчиков, работающих с международными приложениями. В версии 9.0 Tcl поддерживает полноценную работу с Unicode, что означает, что программы могут обрабатывать текст в любой кодировке. Это особенно важно для проектов, ориентированных на глобальный рынок.

Прямой доступ к zip-архивам — еще одно важное нововведение. Теперь программы на Tcl/Tk могут работать с архивированными файлами так, как если бы они были обычными директориями. Это значительно упрощает обработку архивов, таких как .zip, .jar и .tar. Особенно в приложениях, где требуется работа с большими объемами данных, хранящимися в сжатом формате. Такое решение также ускоряет выполнение программ, так как больше не требуется разархивировать файлы для их обработки. Подробнее об этом можно узнать на официальной странице Tcl/Tk 9.0 по ссылке.

Технические улучшения и оптимизация работы


Помимо вышеупомянутых новшеств, Tcl/Tk 9.0 включает поддержку технологий Epoll (в Linux) и Kqueue (в FreeBSD и macOS). Эти интерфейсы используются для мониторинга состояния большого количества файловых дескрипторов. В системах с высокой нагрузкой, например в серверах или сетевых приложениях, применение Epoll и Kqueue позволяет значительно улучшить производительность за счет более эффективной обработки событий ввода-вывода. Это особенно важно для современных приложений, которым требуется работа с большим количеством подключений или данных, передаваемых в реальном времени. Подробнее об использовании Epoll можно найти в документации.

Tk также получил ряд важных улучшений. Одно из ключевых — это поддержка HiDPI-дисплеев, что позволяет элементам интерфейса корректно масштабироваться на устройствах с высоким разрешением экрана, таких как современные ноутбуки и мониторы. Новшество делает Tcl/Tk более подходящим для разработки современных приложений, которые должны выглядеть четко и корректно на различных устройствах. Также добавлена поддержка мультитач-жестов, что расширяет функционал приложений на устройствах с сенсорными экранами.

Дополнительно Tcl/Tk 9.0 поддерживает частичную работу с векторной графикой, включая формат SVG, который становится все более популярным благодаря своей гибкости и возможности масштабирования без потери качества. Это дает разработчикам больше возможностей для создания высококачественных графических интерфейсов. Более подробную информацию можно найти в документации.

Что еще?


Tcl/Tk остается важным инструментом для разработки программного обеспечения с графическим интерфейсом даже спустя 35 лет после его создания. Обновление до версии 9.0 не только сохраняет основные принципы простоты и эффективности, но и добавляет современные возможности, которые делают его актуальным в современном мире. Поддержка 64-битных данных, юникода и улучшенная работа с дисплеями высокого разрешения делают Tcl/Tk конкурентоспособным инструментом, особенно в сфере кроссплатформенной разработки. Проект продолжает активно развиваться благодаря усилиям сообщества, что обеспечивает его долгосрочную поддержку и актуальность.

Комментарии (22)


  1. titulusdesiderio
    05.10.2024 10:31
    +6

    Поддержка Unicode и x64 в 2024 это мощно!


  1. gudvinr
    05.10.2024 10:31
    +13

    Вы так говорите, как будто он все эти 27 лет не обновлялся, а тут да

    Это всего лишь смена первого числа версии, обновления происходят значительно чаще: https://wiki.tcl-lang.org/page/Changes+in+Tcl%2FTk

    Само по себе изменение версии не говорит ни о чем, Linux долгое время оставался на 2.6. Значит ли это, что он с версии 2.0 до версии 3.0 стагнировал?

    Более того, Торвальдс сам упоминал, что он меняет первое число когда кажется, что пора.

    Да, Tcl конечно не Торвальдс разрабатывает, Но на этом примере видно, что ваш заголовок - желтуха


  1. alan008
    05.10.2024 10:31
    +3

    Если звёзды зажигают Tcl до сих пор обновляют, значит это кому-нибудь нужно :-)


    1. gudvinr
      05.10.2024 10:31
      +6

      http://www.tcl.tk/about/audience.html

      На самом деле им действительно в интересных местах пользуются: Cisco, Synopsys - не самые отстойные ребята


  1. Biga
    05.10.2024 10:31
    +3

    Можно также упомянуть, что tkinter - библиотека по умолчанию для GUI в питоне. До сих пор.


  1. rojer
    05.10.2024 10:31

    не, ну запретить людям развлекаться нельзя, но я бы уже прекратил этот разврат и закопал.


    1. Yami-no-Ryuu
      05.10.2024 10:31
      +1

      Эмм, почему? Идеологический предок VisualBasic вполне себе полезная штука. Набросать утилитку под задачу вполне себе.


      1. AndreyHenneberg
        05.10.2024 10:31

        Его бы в школе изучать в качестве инструмента для создания личных пользовательских костылей. А то на каждый чих ищут очередной мегакомбайн, который нужен для выполнения только одного действия.


    1. Vedomir
      05.10.2024 10:31

      По-моему наоборот, хорошо когда проекты долго живут. Бесконечное переписывание одного и того же под все новые технологии конечно обеспечивает программистов работой, но временами порождает чувство бессмысленности.


  1. xentoo
    05.10.2024 10:31
    +6

    С теплотой в душе́ вспоминаю времена, когда писал на tcl скрипты для чат бота eggdrop. Привет всем, кто кто сидел в ircnet!


  1. PrinceKorwin
    05.10.2024 10:31
    +5

    Хороший язык. До сих пор вспоминаю его с теплотой. Меня на одном MUD сервере забанили за то, что я сделал себе консоль с блэкджеком и автокомплишном на TCL и посмел пошарить сие творение :)

    А другой wysiwyg редактор для Docbook который написал (и забросил) будучи студентом до сих пор кто-то качает каждый месяц. Даже не знаю в каких целях.


    1. nsk-realty
      05.10.2024 10:31

      Боты его качают, ходят по ссылке и проверяют ее доступность.


      1. PrinceKorwin
        05.10.2024 10:31

        Не подумал об этом. Вполне возможно.
        Качают с китайских IP в основном.


  1. checkpoint
    05.10.2024 10:31
    +3

    На рубеже 2000 довелось мне писать на Tcl скрипты IVR и прочую автоматизацию для сетевых устройство про-ва Cisco Systems. Язык очень спессфисский, писать на нём легко. А вот отлаживать - катастрофически сложно, не смотря на то, что предназначался язык для "быстрого прототипирования". Еще сложнее - понимать, что было написано тобой же месяцом ранее. В общем, для психически неустойчивых - не рекомендую. :-)

    А вот гуёвая библиотечка Tk очень даже годная, лаконичная и хорошо структурированная. Пользую её из Perl5 с удовольствием.


    1. perfect_genius
      05.10.2024 10:31
      +10

      2000

      Здесь так не принято, здесь надо "2 000" :)


    1. dmitrodem
      05.10.2024 10:31
      +1

      мне больше всего мозг поломала встроенная возможность лазить по стеку с помощью upvar/uplevel. Не припомню больше языков, которые позволяют что-то похожее делать.


  1. McBernar
    05.10.2024 10:31
    +5

    1 999 - не надо так писать. Отделяют пробелом, когда за 10 000 уходят числа.


  1. gorod0k
    05.10.2024 10:31

    Немного пописал скрипты для отладчиков сигнальных процессоров на этом вашем Тикле. Не мое, вспоминаю с неприязнью


  1. thousbe
    05.10.2024 10:31
    +2

    За даты отвечал Эксель с форматирование как числа с разделителем?


  1. zoto_ff
    05.10.2024 10:31
    +4

    2019 году компания была приобретена CloudBees

    вот тут у вас пробел не стоит


  1. Vedomir
    05.10.2024 10:31

    > 1 997

    А в чем смысл такого форматирование дат? Первый раз вижу.


    1. perfect_genius
      05.10.2024 10:31

      Видимо, софт так отделяет, хотя надо бы только когда превышает на один порядок - "10 000", "100 000", да и то не к датам.

      Тоже вижу в тексте в первый раз, но оказывается такое везде, даже тут на Хабре. Например вон численность этой группы написана тут как "1 001–5 000 человек".

      Теперь замечаю и в рекламе. Что же ты наделал, автор?! Как мне теперь жить с этим...