Випуск мови програмування 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 переміщений у простір імен.

Джерело: opennet.ru

Додати коментар або відгук