2026-10-02

Tcl/Tk 9.1.0

 Tcl/Tk 在 2026 年 9 月 29 日釋出了一個新的版本系列,也就是 9.1.x 系列,目前的版本為 9.1.0。

下面是網頁列出的 highlights。

Highlights of Tcl 9.1

  • New command unicode: Unicode normalization
  • New C routines Tcl_UtfToNormalized*: Unicode normalization
  • New command timer: monotonic clock; microsecond resolution
  • New command lfilter: select items from list
  • New command interp set: variable access in child interpreter
  • New subst options: -backslashes, -commands, -variables.
  • New switch options: -integer.
  • Many C99 math routines now available as expr functions.
  • Applications now required to call an initialization routine, either Tcl_FindExecutable or TclZipfs_AppHook.
  • New C routine Tcl_IsEmpty.
  • New C routine Tcl_GetEncodingNameForUser.
  • New C routine Tcl_AttemptCreateHashEntry.
  • New C routines Tcl_ListObjRange, Tcl_ListObjRepeat, Tcl_ListObjReverse.
  • New C time API using long long in place of Tcl_Time
  • Case-insensitive filesystem paths on macOS.
  • auto_execok and exec search reform on Windows.
  • Revised searches for script library and encodings.
  • Improved list internals for memory efficiency of large lists.
  • Extended support for 64-bit sizes.

Highlights of Tk 9.1

  • Accessibility screen reader support.
  • Initial support for bidirectional text / RTL languages.
  • New widget ttk::toggleswitch.
  • New command tk attribtable.
  • send command revised and improved on Aqua.
  • Handling of negative screen distances.
  • Extended states in ttk::treeview and ttk::notebook
  • Improvements to Tk_CanvasTextInfo
  • Rotated text on labels
  • Limit message box and dialogs to physical screen width.
  • Improved listbox selection colors.
  • Removed obsolete support for Windows XP appearances.

2026-09-18

NaviServer 4.99.34, 5.0.6, and 5.1.1

NaviServer 最近釋出了一系列的新版,4.99.34, 5.0.6, 與 5.1.1。

5.1 系列是個重要的版本更新,自 5.1.0 開始實驗性的支援 HTTP/3 協定(透過 nghttp3,需要 OpenSSL 4.0 以上的版本),從 5.1.1 開始 HTTP/3 實作的狀態從 expermiental 變更為 ready-for-use。

Next Scripting Framework 2.5.0

Next Scripting Framework 釋出了一個新的版本,2.5.0,更新的內容可以參考 Changes to NSF in version 2.5.0, 最重要的是增加了對於 Tcl 9+ 的支援。

2026-06-29

Tcl/Tk 9.0.4

Tcl/Tk 釋出了一個 9.0 的維護版本,9.0.4。

Tcl/Tk 9.0.4 的主要改變可以參考 tcl-release-notes-9.0.4.md, tk-release-notes-9.0.4.md。

2026-05-13

Tcl/Tk 8.6.18

Tcl/Tk 釋出了 8.6 系列的新版本,8.6.18。

這個版本的主要更新內容可以參考 tcltk-release-notes-8.6.18.txt。

注意:This is the last release of the 8.6 series unless very severe issues are found. Only Tcl/Tk 9 will be actively developed from now on.

2026-01-24

TclTLS 2.0

TclTLS 釋出了一個十分重要的重大更新版本,v2.0。下面是這次更新的內容:

  • Replaced build system with a new TEA compliant build system for Unix and windows.
  • Restructured repo and fixed missing TCL Config files.
  • Added TCL 9.0 support.
  • OpenSSL 3 compatibility updates.
  • Added more certificate and connection status.
  • Add missing TLS 1.3 functionality, cipher suites, SNI, ALPN, etc.
  • Error handing improvements, more connect status via callbacks.
  • Fixed OpenSSL 3.0 unexpected EOF issue.
  • When -require 1 is used, will auto validate server certificate.
  • Fixed IO test cases.
  • Fixed many open tickets on sourceforge and core.tcl.tk sites.
  • Use of the Windows system certificate store as a source of trusted root certificates on OpenSSL 3.2 and later.
  • Replaced set DH build args and file with auto select.
  • Replaced process of including tls.tcl file in shared library with cross-platform compatible methods.
  • Disable TLS 1 and 1.1 by default.
  • Use -require 1 as default, when certificates are available.

下面則是我的簡單測試程式。

#!/usr/bin/env tclsh
package require http
package require tls

set protocol "http/1.1"
http::register https 443 [list ::tls::socket -autoservername 1 -require 1 -alpn [list [string tolower $protocol]]]

set tok {}
set url {https://duckduckgo.com/}

try {
    set tok [http::geturl $url -method GET -timeout 3000]
    puts "Status: [::http::ncode $tok]"
    puts "Status Text: [http::status $tok]"
    puts "Headers: [http::meta $tok]"
} on error {em} {
    puts "Error: $em"
} finally {
    # cleanup here
    if {[info exists tok]==1} {
        http::cleanup $tok
    }
}