Несколько дней назад был представлен релиз 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)
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 конечно не Торвальдс разрабатывает, Но на этом примере видно, что ваш заголовок - желтуха
alan008
05.10.2024 10:31+3Если
звёзды зажигаютTcl до сих пор обновляют, значит это кому-нибудь нужно :-)gudvinr
05.10.2024 10:31+6http://www.tcl.tk/about/audience.html
На самом деле им действительно в интересных местах пользуются: Cisco, Synopsys - не самые отстойные ребята
Biga
05.10.2024 10:31+3Можно также упомянуть, что tkinter - библиотека по умолчанию для GUI в питоне. До сих пор.
rojer
05.10.2024 10:31не, ну запретить людям развлекаться нельзя, но я бы уже прекратил этот разврат и закопал.
Yami-no-Ryuu
05.10.2024 10:31+1Эмм, почему? Идеологический предок VisualBasic вполне себе полезная штука. Набросать утилитку под задачу вполне себе.
AndreyHenneberg
05.10.2024 10:31Его бы в школе изучать в качестве инструмента для создания личных пользовательских костылей. А то на каждый чих ищут очередной мегакомбайн, который нужен для выполнения только одного действия.
Vedomir
05.10.2024 10:31По-моему наоборот, хорошо когда проекты долго живут. Бесконечное переписывание одного и того же под все новые технологии конечно обеспечивает программистов работой, но временами порождает чувство бессмысленности.
xentoo
05.10.2024 10:31+6С теплотой в душе́ вспоминаю времена, когда писал на tcl скрипты для чат бота eggdrop. Привет всем, кто кто сидел в ircnet!
PrinceKorwin
05.10.2024 10:31+5Хороший язык. До сих пор вспоминаю его с теплотой. Меня на одном MUD сервере забанили за то, что я сделал себе консоль с блэкджеком и автокомплишном на TCL и посмел пошарить сие творение :)
А другой wysiwyg редактор для Docbook который написал (и забросил) будучи студентом до сих пор кто-то качает каждый месяц. Даже не знаю в каких целях.
checkpoint
05.10.2024 10:31+3На рубеже 2000 довелось мне писать на Tcl скрипты IVR и прочую автоматизацию для сетевых устройство про-ва Cisco Systems. Язык очень спессфисский, писать на нём легко. А вот отлаживать - катастрофически сложно, не смотря на то, что предназначался язык для "быстрого прототипирования". Еще сложнее - понимать, что было написано тобой же месяцом ранее. В общем, для психически неустойчивых - не рекомендую. :-)
А вот гуёвая библиотечка Tk очень даже годная, лаконичная и хорошо структурированная. Пользую её из Perl5 с удовольствием.
dmitrodem
05.10.2024 10:31+1мне больше всего мозг поломала встроенная возможность лазить по стеку с помощью upvar/uplevel. Не припомню больше языков, которые позволяют что-то похожее делать.
McBernar
05.10.2024 10:31+51 999 - не надо так писать. Отделяют пробелом, когда за 10 000 уходят числа.
gorod0k
05.10.2024 10:31Немного пописал скрипты для отладчиков сигнальных процессоров на этом вашем Тикле. Не мое, вспоминаю с неприязнью
zoto_ff
05.10.2024 10:31+42019 году компания была приобретена CloudBees
вот тут у вас пробел не стоит
Vedomir
05.10.2024 10:31> 1 997
А в чем смысл такого форматирование дат? Первый раз вижу.
perfect_genius
05.10.2024 10:31Видимо, софт так отделяет, хотя надо бы только когда превышает на один порядок - "10 000", "100 000", да и то не к датам.
Тоже вижу в тексте в первый раз, но оказывается такое везде, даже тут на Хабре. Например вон численность этой группы написана тут как "1 001–5 000 человек".
Теперь замечаю и в рекламе. Что же ты наделал, автор?! Как мне теперь жить с этим...
titulusdesiderio
Поддержка Unicode и x64 в 2024 это мощно!