Выпуск языка программирования 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