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

После 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.
  • В метаданных лицензии на бинарные файлы для Window упомянут университет Калифорнии.




  • Исправлена ошибка с неправильным форматированием аргументов в 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 перемещён в пространство имён.



Источник: http://www.opennet.ru/opennews/art.shtml? num=60692

© OpenNet