The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск языка программирования Tcl 8.6.14

29.02.2024 22:17

После 15 месяцев разработки опубликован выпуск Tcl/Tk 8.6.14, динамического языка программирования, распространяемого совместно с кроссплатформенной библиотекой базовых элементов графического интерфейса. Основное распространение Tcl получил как платформа для создания интерфейсов пользователя и как встраиваемый язык, при этом Tcl также подходит для быстрого прототипирования, web-разработки, создания сетевых приложений, администрирования систем и тестирования. Код проекта распространяется под лицензией BSD.

Среди изменений:

  • Приведена к кроссплатформенному виду нормализация файловых путей и обработка символа "~" в путях.
  • Имя пути, начинающееся с '//' не замещается через '/' в том числе в Cygwin и в QNX.
  • Разрешён пустой режим в [chan create] ("[chan create {} $cmd]") для разрешения refchan версии [socket -server].
  • Повышена производительность fork при использовании многопоточности с помощью vfork/spawn.
  • Обеспечен вызов getsockname(2) в Tcl_MakeFileChannel(3) только тогда, когда это необходимо.
  • Защита Tcl/tclsh усилена с помощью функции pledge(2) в OpenBSD или похожих механизмов.
  • tcltest адаптирован для поддержки Tcl 9 (>= tcltest 2.5.7).
  • Обеспечено применение замещающего символа при декодировании неполных последовательностей Unicode.


  • Добавлена проверка mknod, tcdrain и uname в сборочных скриптах для VxWorks или других платформ.
  • 32-разрядный Cygwin закончил своё существование, поэтому отпала потребность в аргументе "--enable-64bit" для Cygwin.
  • Tcl_VarEval больше не считается устаревшим.
  • В "[interp limit time -seconds]" решена проблема 2038 года.
  • Из win/makefile.vc убрана опция utf16.
  • zlib обновлён до версии 1.3.1.
  • libtommath обновлён до версии 1.2.1.
  • install-sh обновлён до версии 2020-11-14.01.
  • Добавлена поддержка Unicode 15.1.
  • База часовых поясов обновлена до выпуска tzdata2024a.
  • В метаданных лицензии на бинарные файлы для Windows упомянут университет Калифорнии.


  • Исправлена ошибка с неправильным форматированием аргументов в man-странице.
  • Исправлена ошибка с отсутствием сведений о Windows 11 в tcl_platforms.
  • Исправлена ошибка с некорректным сравниванием строк на системах с порядком байтов big endian.
  • Исправлена ошибка с падением при tcl_precision равным 15..18.
  • Исправлены редко проявляющиеся падения при очистке потока memchan.
  • Исправлена проблема с выводом ошибки в команде zip в случае, когда файловый комментарий/имя файла слишком длинные или не в кодировке iso-latin-1.
  • Исправлена проблема с возвращением usec из Tcl_GetTime в Windows.
  • Исправлено падение при применении трансформации канала в сокете TCP клиента.
  • Предотвращено неправильное чтение в Tcl_UtfToUniChar.
  • В macOS 13 SDK объявлена устаревшей функция sprintf().
  • Исправлено переполнение аргумента позиции в [scan %num$mode].
  • Исправлено падение при хвостовом вызове.
  • Исправлены ошибки при clock scan и clock add в ошибочных случаях или с сокращёнными опциями.
  • Исправлена ошибка с игнорированием неполных двойных байтовых кодировок, например в [encoding convertfrom gb12345 x].
  • Устранено аварийное завершение tclvfs tkt при выходе из интерпретатора с загруженным tclvfs.
  • Исправлена проблема, связанная со случаем, когда Tcl_GetUniChar осуществлял чтение символов за пределами длины строки для ASCII строк.
  • Исправлена ошибка в версии для MS Windows: файлы с емодзи находятся через glob, но не определяются через file exists или open.
  • Исправлена ошибка компиляции с помощью VC6 версии core-8-6-branch: "error C2065: 'int16_t' : undeclared identifier".
  • Исправлены ошибки в ClockGetdatefieldsObjCmd(): переполнение знаковых целых чисел и платформно-независимое поведение.
  • Исправлена ошибка с инициализацией fakeObject.refCount в tclOO.c.
  • Исправлена ошибка, когда use-after-return в AddressSanitizer ломал NRE-тесты и корутины.
  • Исправление ложных ошибок от [clock format].
  • Исправление реаллокации [exec %var%] в MS Windows. Это было запрещено в 8.6.13.
  • Bсправление документации для Tcl_PkgRequire: строка со спецификацией версии относится к "package require".
  • Исправлена ошибка в [tcl_startOfPreviousWord string end-1].
  • Устранено аварийное завершение, возникающее когда Tcl_ReadChars вызывается с Unicode-объектами.
  • Устранено зацикливание при переопределении proc ::history.
  • Устранено зацикливание в случае когда ::unknown перемещён в пространство имён.


  1. Главная ссылка к новости (https://www.tcl.tk/software/tc...)
  2. OpenNews: Выпуск Tcl/Tk 8.6.13
  3. OpenNews: Выпуск Tcl/Tk 8.6.12
  4. OpenNews: Выпуск Tcl/Tk 8.6.11
  5. OpenNews: Новый выпуск Androwish, окружения для запуска приложений Tcl/Tk на системах с Android
Автор новости: 111
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60692-tcl
Ключевые слова: tcl
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (39) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:48, 29/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    А, это тот язык, в котором всё есть строка, включая тело функции. Язык, в котором аналог eval() делается по любому поводу и без. Даже в ифах. Сабжевый if {$number <= 1} -- это ровно то же, что и в яваскрипте if (eval("number <= 1")).
     
     
  • 2.12, n00by (ok), 07:02, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В смысле, на каждый чих создаёт инстанс интерпретатора? Кому бы такое могло прийти в голову?
     
     
  • 3.33, kusb (?), 22:01, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Наверное там оптимизация внутри, но с точки зрения языка это eval
     
     
  • 4.39, n00by (ok), 13:35, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А в LISP с точки зрения языка что eval?
     
  • 2.38, ixrws (??), 11:18, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Это типичный пример логики оратора, который спустился уровнем ниже и уже не понимает как там оно было до него.

    Тикль и некоторые другие языки не нуждаются в eval так, как нуждаются языки, где компилятор вызывается явно. То есть тот же javascript простоб более примитивный язык, которому нужен eval, который современные одноклеточные разработчики так вообще не одобрят.

     
  • 2.43, анан (?), 07:59, 03/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Там не всё строка. Переменные имеют двойное представление — в виде строки и целевого типа, например целочисленный или с плавующей точкой, чтобы на каждый чих не конвертировать строку в целевой тип. Не помню какие там ещё типы, вроде список был.
     
     
  • 3.47, _oleg_ (ok), 14:07, 04/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да. Это так. Есть ещё списки и словари (которые map, они же hash в perl). По факту, благодаря двойному представлению и байткоду, скорость кода (если не злоупотреблять операциями, которые ломают внутренее представление и оставляют только строку, которая потом опять приводится к внутреннему представлению) примерно равна native-коду.
     
  • 2.46, _oleg_ (ok), 14:01, 04/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Даже в ифах. Сабжевый if {$number <= 1} -- это ровно то же, что и в яваскрипте if (eval("number <= 1")).

    Вообще-то, внутри if'а expr, а не eval ;-).

     

  • 1.2, Аноним (2), 01:18, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    Удивлён что оно не просто живо, а ещё и как-то развивается. Программировал на тикле где-то в 2003-2005 году под фряху. Самые приятные воспоминания!
     
     
  • 2.3, Аноним (-), 01:35, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Тикль даже под андроид позволяет создавать приложухи. На прошлом месте работы специализированный софт для планшетов писали на нем.
     
     
  • 3.9, Анонист (?), 02:57, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Тикль даже под андроид позволяет создавать приложухи.

    Да, есть такое. https://www.androwish.org/

     
  • 2.17, Аноним (17), 09:38, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Удивлён что оно не просто живо

    Почему удивлен? Зрелый язык с огромной экосистемой.

     
  • 2.29, nox. (?), 18:03, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мы рассматривали сабж как вариант реализации кроссплатформенного приложения. И получалось неплохо. Но в конце концов остановитлись на Qt.
     
     
  • 3.36, adolfus (ok), 00:53, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Qt стал слишком жирным и далеко залез в backend. Хотя должен был работать только в качестве Controller и View, не влияя на Model.
     
     
  • 4.50, Аноним (-), 01:54, 15/03/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.37, Zulu (?), 01:59, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Программировал на тикле где-то в 2003-2005

    Я в 2016-2018. Отличный язык для DSL'ов.

     

  • 1.5, Аноним (5), 02:18, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Мой путь в программировании: mIRC скрипты -> eggdrop скрипты -> Tcl как основной язык.
     
  • 1.6, Аноним (6), 02:21, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Если бы Столман умел лучше договариватся с людьми, сейчас бы писали на Tcl вместо Bash.
     
     
  • 2.13, n00by (ok), 07:10, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Задача Столлмана была собрать идеологов, а не программистов. Скажите спасибо, что не на Markdown пишут скрипты.
     
     
  • 3.34, kusb (?), 22:06, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я могу представить себе программирование на html, но на маркдаун нет.
     
     
  • 4.40, n00by (ok), 13:41, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Там нейролингвистические программирование. Например, blacklist объявляется и небезопасным и все дружно принимаются исполнять.
     
  • 2.20, Аноним (20), 11:09, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Попробовать Tcl стоит хотя бы затем, чтобы прочувствовать, насколько Баш в сравнении с ним убог, при, казалось бы, таких схожих концепциях.
     
     
  • 3.27, Аноним (-), 15:03, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    GNU bash избыточен для шелла. Многие дат бог используют 30% возможностей GNU bash. Зачем язык программирования в шелле.
     
     
  • 4.31, Аноним (31), 21:10, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но раз уж язык программирования туда вкрутили, лучше бы это был не такой каличный велосипед
     
  • 2.22, Аноним (22), 11:28, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Для этого есть rc и es. Tcl слишком жирный для шелла, и

    >сейчас бы писали на Tcl вместо Bash

    все такие писатели почему-то живут в редхате.

     
  • 2.26, Минона (ok), 15:00, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Бабашка лучше.
     
     
  • 3.49, 9392012938к8282 (?), 17:29, 04/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Бабашка бесконечно много весит
     

  • 1.15, Аноним (15), 08:43, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    класная штука, но внешний вид гуя у меня всегда получался жутким :)
     
     
  • 2.19, BeLord (ok), 10:54, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А что мешает оставить наработки и прикрутить новый гуй?
     
  • 2.30, nox. (?), 18:06, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Выше уже отметил, зачем его тестировали. Но именно жуткий GUI и стал причиной отказа от его.
     
  • 2.35, kusb (?), 22:10, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В ttk есть поддержка тем. Но в виде этих контролов есть очарование, хотя они и кажутся страшными. На них интересно смотреть и я ставил tkabber потому что он не похож на нормальные программы.
    Кому-то не нравятся новые интерфейсы, этот стиль похож на Windows 95 своей чёткостью.
     

  • 1.21, Аноним (21), 11:26, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    есть ли поддержка windows/arm?
     
     
  • 2.25, _kp (ok), 12:00, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Поддерживается и то и другое, и Mac в придачу.
     

  • 1.23, Аноним (23), 11:40, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Эх... они в socket так и не добавили опцию установки размера очереди входящих соединений. Это то, из-за чего в свое время пришлось свалить с TCL.
     
  • 1.24, Аноним (24), 11:55, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Хороший язык, хотел бы чтобы cmake свой язык на нем делал, а не свой придумывал
     
  • 1.32, Аноним (2), 21:45, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Жив курилка. Когда-то отчаянно пытался осилить, но не осилил, забыл и забросил. Лет 20 назад :)
     
     
  • 2.41, Аноним (41), 14:34, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да он же чрезвычайно прост. Но мышление нужно поменять, это да, но в этом-то и его ценность демонстрации другого подхода к программированию.
     
     
  • 3.42, Аноним (42), 21:15, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    После tcl как первого языка необычно видеть Си, но потом языки с Си-подобным синтаксисом (а это очень многие) кажутся в чём-то удобнее. Но мозг выносит.
     
  • 2.45, svk28 (ok), 08:38, 04/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, только со второго раза осилил.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру