From Newsgroup: comp.lang.tcl
ANNOUNCE: Websh 3.7.8 released
==============================
Websh is a rapid development environment for building web applications
with Tcl, running as CGI or as an Apache 2.4 module (mod_websh).
Originally developed by Netcetera AG and contributed to the Apache
Software Foundation, the 3.7 series is a modernized continuation of
Apache Websh 3.6.
Highlight of this release: JWT support has moved out of websh into the standalone pure-Tcl package "jwt" rCo websh itself is leaner and no longer depends on the nacl and rl_json packages.
Preview: full Tcl 9 support is complete on the development branch
towardsTcl9 and will become the next release (see below).
Download / Repository:
https://fossil.sowaswie.de/websh
Reference:
https://fossil.sowaswie.de/websh/uv/index.html
English
-------
Changes since 3.7.7:
* JWT extracted: websh no longer ships a JWT implementation. The former embedded jwt package lives on as the standalone pure-Tcl package "jwt"
1.1 (BSD 3-Clause, own repository) with the identical API: ::jwt::sign, ::jwt::verify (-json, -claims, -leeway) and the
::jwt::base64url_encode/decode utilities. Callers simply "package
require jwt"; one installed copy serves Tcl 8.6 and Tcl 9. With only
websh loaded the ::jwt namespace stays empty rCo no silent shadowing
between the two implementations.
* Slimmer dependencies: the jwt code was the only user of the nacl
(crypto) and rl_json (JSON) packages, so websh now has no runtime
dependency on either.
* Build hygiene: the generated files configure, Makefile and
pkgIndex.tcl are no longer tracked in the repository rCo they are produced locally by autoconf and ./configure. This removes a real-world failure
where fossil update merged generated content and the resulting conflict markers broke ./configure (dash: "Syntax error: redirection
unexpected"). Building from a fresh checkout now requires autoconf.
* Zero compiler warnings again (a long-standing set-but-unused variable
in the HTML decoder was silenced).
* The 24 jwt test cases moved to the jwt package (still green there on
Tcl 8.6.17 and 9.0.3); the websh suite is now 502 tests (497 passed, 5 skipped, 0 failed).
* Documentation updated throughout (README, DocBook reference); the
published HTML reference points to the standalone jwt package.
Development branch towardsTcl9 rCo the next release:
* Full Tcl 9 support from a single source: websh builds and tests
identically against Tcl 8.6 and Tcl 9 (suite green on 8.6.17 and 9.0.3). Compat shims cover Tcl_Size (TIP 660), the removed CONST/_ANSI_ARGS_
macros, Tcl_InitStubs "8.6-", and both channel types lifted to TCL_CHANNEL_VERSION_5.
* Real-world fixes found by the port: octal file permissions are parsed explicitly (Tcl 9 no longer treats a leading zero as octal), multipart
upload bodies are read byte-faithfully rCo which also fixes a latent 8.6
bug where valid UTF-8 sequences inside binary uploads were corrupted rCo
and web::getContent normalizes IANA charset names (iso-8859-1 vs iso8859-1).
* Dual delivery: TEA names the Tcl 9 library libtcl9websh...;
pkgIndex.tcl selects the right flavour at load time, so both can coexist
in one directory. tclconfig is synced with upstream TEA 3.14.
* Known limitation (documented): ciphertexts produced by web::encryptd containing characters beyond the BMP are not portable between Tcl 8.6
and 9 builds.
Deutsch
-------
|anderungen seit 3.7.7:
* JWT ausgelagert: websh liefert keine JWT-Implementierung mehr mit. Das bisher eingebettete jwt-Paket lebt als eigenst|nndiges Pure-Tcl-Paket
"jwt" 1.1 weiter (BSD 3-Clause, eigenes Repository) rCo mit identischer
API: ::jwt::sign, ::jwt::verify (-json, -claims, -leeway) und den
Utilities ::jwt::base64url_encode/decode. Aufrufer laden es einfach per "package require jwt"; eine installierte Kopie bedient Tcl 8.6 und Tcl
9. Mit nur geladenem websh bleibt der ::jwt-Namespace leer rCo kein
stilles |Lberschatten zwischen den beiden Implementierungen.
* Schlankere Abh|nngigkeiten: der jwt-Code war der einzige Nutzer der
Pakete nacl (Krypto) und rl_json (JSON) rCo websh hat damit keine Laufzeit-Abh|nngigkeit mehr auf beide.
* Build-Hygiene: die generierten Dateien configure, Makefile und
pkgIndex.tcl werden nicht mehr im Repository versioniert rCo sie entstehen lokal per autoconf und ./configure. Das beseitigt einen realen
Fehlerfall, bei dem fossil update generierte Inhalte gemergt hat und die Konfliktmarker ./configure brachen (dash: "Syntax error: redirection unexpected"). Ein frischer Checkout braucht zum Bauen jetzt autoconf.
* Wieder null Compiler-Warnings (eine langj|nhrige
set-but-unused-Variable im HTML-Decoder wurde beseitigt).
* Die 24 jwt-Testf|nlle sind ins jwt-Paket umgezogen (dort weiterhin gr|+n
auf Tcl 8.6.17 und 9.0.3); die websh-Suite umfasst jetzt 502 Tests (497 passed, 5 skipped, 0 failed).
* Dokumentation durchg|nngig aktualisiert (README, DocBook-Referenz); die ver||ffentlichte HTML-Referenz verweist auf das eigenst|nndige jwt-Paket.
Entwicklungszweig towardsTcl9 rCo das n|nchste Release:
* Voller Tcl-9-Support aus einem Quellstand: websh baut und testet
identisch gegen Tcl 8.6 und Tcl 9 (Suite gr|+n auf 8.6.17 und 9.0.3). Kompatibilit|nts-Shims decken Tcl_Size (TIP 660), die entfernten CONST/_ANSI_ARGS_-Makros, Tcl_InitStubs "8.6-" und beide auf TCL_CHANNEL_VERSION_5 gehobenen Channel-Typen ab.
* Durch die Portierung gefundene echte Fixes: oktale Dateirechte werden explizit geparst (Tcl 9 wertet f|+hrende Nullen nicht mehr als Oktal), Multipart-Upload-Bodies werden byte-treu gelesen rCo das behebt zugleich
einen latenten 8.6-Bug, bei dem g|+ltige UTF-8-Sequenzen in Bin|nr-Uploads korrumpiert wurden rCo und web::getContent normalisiert IANA-Charset-Namen (iso-8859-1 vs. iso8859-1).
* Duale Auslieferung: TEA benennt die Tcl-9-Bibliothek libtcl9websh...; pkgIndex.tcl w|nhlt beim Laden die passende Variante, beide k||nnen im
selben Verzeichnis liegen. tclconfig ist mit dem Upstream-TEA 3.14 synchronisiert.
* Bekannte, dokumentierte Einschr|nnkung: von web::encryptd erzeugte Ciphertexte mit Zeichen au|ferhalb der BMP sind zwischen Tcl-8.6- und Tcl-9-Builds nicht portabel.
--- Synchronet 3.22a-Linux NewsLink 1.2