• ANNOUNCE: Websh 3.7.8 released

    From =?UTF-8?Q?Alexander_Sch=C3=B6pe?=@ete-sep@mxbo.de to comp.lang.tcl on Fri Jul 31 21:34:32 2026
    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