Index: devdoc/parts/b_critcl.inc ================================================================== --- devdoc/parts/b_critcl.inc +++ devdoc/parts/b_critcl.inc @@ -3,24 +3,25 @@ a number of packages also have [term accelerators] associated with them. These are [syscmd critcl]-based C packages whose use will boost the performance of the packages using them. -These accelerators are optional, and they are not installed by -default. +These accelerators are optional, and they are not built by default. +If they are built according to the instructions below then they will +also be installed as well. [para] To build the accelerators the normally optional dependency on [syscmd critcl] becomes required. [para] To build and install Tcllib with the accelerators in a Unix-like environment invoke: [example { ./configure - make critcl # This builds the shared library holding - # the accelerators - make install + make critcl # Builds the shared library and package holding + # the accelerators, tcllibc + make install # Installs all packages, including the new tcllibc. }] [para] The underlying tool is [file sak.tcl] in the toplevel directory of Tcllib and the command [cmd {make critcl}] is just a wrapper around Index: embedded/md/tcllib/files/devdoc/tcllib_installer.md ================================================================== --- embedded/md/tcllib/files/devdoc/tcllib_installer.md +++ embedded/md/tcllib/files/devdoc/tcllib_installer.md @@ -198,23 +198,24 @@ ## Critcl & Accelerators While the majority of Tcllib consists of packages written in pure Tcl a number of packages also have *accelerators* associated with them\. These are __critcl__\-based C packages whose use will boost the performance of the -packages using them\. These accelerators are optional, and they are not installed -by default\. +packages using them\. These accelerators are optional, and they are not built by +default\. If they are built according to the instructions below then they will +also be installed as well\. To build the accelerators the normally optional dependency on __critcl__ becomes required\. To build and install Tcllib with the accelerators in a Unix\-like environment invoke: ./configure - make critcl # This builds the shared library holding - # the accelerators - make install + make critcl # Builds the shared library and package holding + # the accelerators, tcllibc + make install # Installs all packages, including the new tcllibc. The underlying tool is "sak\.tcl" in the toplevel directory of Tcllib and the command __make critcl__ is just a wrapper around ./sak.tcl critcl Index: idoc/man/files/devdoc/tcllib_installer.n ================================================================== --- idoc/man/files/devdoc/tcllib_installer.n +++ idoc/man/files/devdoc/tcllib_installer.n @@ -442,12 +442,13 @@ .SS "CRITCL & ACCELERATORS" While the majority of Tcllib consists of packages written in pure Tcl a number of packages also have \fIaccelerators\fR associated with them\&. These are \fBcritcl\fR-based C packages whose use will boost the performance of the packages using them\&. -These accelerators are optional, and they are not installed by -default\&. +These accelerators are optional, and they are not built by default\&. +If they are built according to the instructions below then they will +also be installed as well\&. .PP To build the accelerators the normally optional dependency on \fBcritcl\fR becomes required\&. .PP To build and install Tcllib with the accelerators in a @@ -454,13 +455,13 @@ Unix-like environment invoke: .CS \&./configure - make critcl # This builds the shared library holding - # the accelerators - make install + make critcl # Builds the shared library and package holding + # the accelerators, tcllibc + make install # Installs all packages, including the new tcllibc\&. .CE .PP The underlying tool is "\fIsak\&.tcl\fR" in the toplevel directory of Tcllib and the command \fBmake critcl\fR is just a wrapper around Index: idoc/www/tcllib/files/devdoc/tcllib_installer.html ================================================================== --- idoc/www/tcllib/files/devdoc/tcllib_installer.html +++ idoc/www/tcllib/files/devdoc/tcllib_installer.html @@ -270,21 +270,22 @@

Critcl & Accelerators

While the majority of Tcllib consists of packages written in pure Tcl a number of packages also have accelerators associated with them. These are critcl-based C packages whose use will boost the performance of the packages using them. -These accelerators are optional, and they are not installed by -default.

+These accelerators are optional, and they are not built by default. +If they are built according to the instructions below then they will +also be installed as well.

To build the accelerators the normally optional dependency on critcl becomes required.

To build and install Tcllib with the accelerators in a Unix-like environment invoke:

   ./configure
-  make critcl # This builds the shared library holding
-              # the accelerators
-  make install
+  make critcl  # Builds the shared library and package holding
+               # the accelerators, tcllibc
+  make install # Installs all packages, including the new tcllibc.
 

The underlying tool is "sak.tcl" in the toplevel directory of Tcllib and the command make critcl is just a wrapper around

   ./sak.tcl critcl

Index: modules/0compatibility/pkgIndex.tcl
==================================================================
--- modules/0compatibility/pkgIndex.tcl
+++ modules/0compatibility/pkgIndex.tcl
@@ -1,10 +1,10 @@
 # Compatibility wrapper for deprecated packages.
 ##
 # Stages
 # [D1] Next Release   - Noted deprecated, with redirection wrappers
-# [D2] Release After  - Wrappers become Boockers, throwing error noting redirection
+# [D2] Release After  - Wrappers become Blockers, throwing error noting redirection
 # [D3] Release Beyond - All removed.
 ##
 # Currently in deprecation
 # - D1 doctools::path	(doctools2base)
 # - D1 doctools::config	(doctools2base)

Index: modules/blowfish/blowfish.tcl
==================================================================
--- modules/blowfish/blowfish.tcl
+++ modules/blowfish/blowfish.tcl
@@ -522,11 +522,12 @@
 
         # If data is not a multiple of 8, state(remainder) will hold
         # excess bytes for the next round.
         set pagedlen         [expr {([string length $data] / 8) * 8}]
         set state(remainder) [string range $data $pagedlen end]
-        set data             [string range $data 0 $pagedlen-1]
+        incr pagedlen        -1
+        set data             [string range $data 0 $pagedlen]
     }
 
     if {![string length $data]} return
 
     if {[set code [catch {

Index: modules/blowfish/blowfish.test
==================================================================
--- modules/blowfish/blowfish.test
+++ modules/blowfish/blowfish.test
@@ -62,11 +62,12 @@
 
 proc do-chan {data script} {
     upvar 1 in in msg msg
 
     set p  [makeBinaryFile $data IN]
-    set in [open $p rb]
+    set in [open $p r]
+    fconfigure $in -translation binary -encoding binary
             
     set r [list [catch {
         uplevel 1 $script
     } msg] $msg]
 

Index: modules/html/pkgIndex.tcl
==================================================================
--- modules/html/pkgIndex.tcl
+++ modules/html/pkgIndex.tcl
@@ -1,2 +1,2 @@
 if {![package vsatisfies [package provide Tcl] 8.2]} {return}
-package ifneeded html 1.4.5 [list source [file join $dir html.tcl]]
+package ifneeded html 1.5 [list source [file join $dir html.tcl]]

Index: modules/log/ChangeLog
==================================================================
--- modules/log/ChangeLog
+++ modules/log/ChangeLog
@@ -1,16 +1,16 @@
 2018-02-20 Harald Oehlmann 
 
-	* log.tcl: [RFE 19607f927b]: Add command log::logeval
+	* log.tcl: [RFE 19607f927b]: Add command log::logsubst
 	* log.man: to optimize expensive log message construction.
 	* log.test: Bumped package version to 1.4
 
 2013-02-01  Andreas Kupries  
 
 	*
 	* Released and tagged Tcllib 1.15 ========================
-	* 
+	*
 
 2012-07-09  Andreas Kupries  
 
 	* logger.tcl: [Bug 3541628]: Fixed creative writing issue in
 	* logger.man: logger::init. Bumped package to version 0.9.3

Index: modules/log/log.man
==================================================================
--- modules/log/log.man
+++ modules/log/log.man
@@ -1,17 +1,18 @@
+[vset VERSION 1.4]
 [comment {-*- tcl -*- doctools manpage}]
-[manpage_begin log n 1.4]
+[manpage_begin log n [vset VERSION]]
 [keywords log]
 [keywords {log level}]
 [keywords message]
 [keywords {message level}]
 [copyright {2001-2009 Andreas Kupries }]
 [moddesc   {Logging facility}]
 [titledesc {Procedures to log messages of libraries and applications.}]
 [category  {Programming tools}]
 [require Tcl 8]
-[require log [opt 1.4]]
+[require log [opt [vset VERSION]]]
 [description]
 
 [para]
 
 The [package log] package provides commands that allow libraries and

Index: modules/math/pkgIndex.tcl
==================================================================
--- modules/math/pkgIndex.tcl
+++ modules/math/pkgIndex.tcl
@@ -16,11 +16,11 @@
 package ifneeded math::bignum            3.1.1 [list source [file join $dir bignum.tcl]]
 package ifneeded math::bigfloat          1.2.2 [list source [file join $dir bigfloat.tcl]]
 package ifneeded math::machineparameters 0.1   [list source [file join $dir machineparameters.tcl]]
 
 if {![package vsatisfies [package provide Tcl] 8.5]} {return}
-package ifneeded math::calculus          0.8.1 [list source [file join $dir calculus.tcl]]
+package ifneeded math::calculus          0.8.2 [list source [file join $dir calculus.tcl]]
 # statistics depends on linearalgebra (for multi-variate linear regression).
 # statistics depends on optimize (for logistic regression).
 package ifneeded math::statistics        1.5.0 [list source [file join $dir statistics.tcl]]
 package ifneeded math::linearalgebra     1.1.6 [list source [file join $dir linalg.tcl]]
 package ifneeded math::calculus::symdiff 1.0.1 [list source [file join $dir symdiff.tcl]]

Index: support/devel/sak/localdoc/localdoc.tcl
==================================================================
--- support/devel/sak/localdoc/localdoc.tcl
+++ support/devel/sak/localdoc/localdoc.tcl
@@ -26,11 +26,12 @@
     getpackage doctools::idx    doctools/docidx.tcl
     getpackage dtplite          dtplite/dtplite.tcl
 
     # Read installation information. Need the list of excluded
     # modules to suppress them here in the doc generation as well.
-    global excluded modules apps guide
+    global excluded modules apps guide distribution
+    set distribution [pwd]
     source support/installation/modules.tcl
 
     lappend baseconfig -module tcllib
     foreach e $excluded {
 	puts "Excluding $e ..."

Index: support/installation/actions.tcl
==================================================================
--- support/installation/actions.tcl
+++ support/installation/actions.tcl
@@ -5,10 +5,19 @@
 # by 'sak' to get the per-module lists of relevant files. The
 # different purposes are handled through the redefinition of the
 # commands [xcopy] and [xcopyf] used by the commands here.
 
 proc _null {args} {}
+
+proc _all {module libdir} {
+    global distribution
+    xcopy \
+	    [file join $distribution modules $module] \
+	    [file join $libdir $module] \
+	    1
+    return
+}
 
 proc _tcl {module libdir} {
     global distribution
     xcopy \
 	    [file join $distribution modules $module] \

Index: support/installation/modules.tcl
==================================================================
--- support/installation/modules.tcl
+++ support/installation/modules.tcl
@@ -30,10 +30,15 @@
 # --------------------------------------------------------------
 # @@ Registration START
 
 Exclude calendar
 Exclude exif
+
+if {[file exists [file join $distribution modules tcllibc]]} {
+    #       name         pkg   doc   example
+    Module  tcllibc      _all  _null  _null
+}
 
 #       name           pkg   doc   example
 Module  0compatibility _tcl  _null  _null
 # Wrapper packages redirecting deprecated/moved packages to their old
 # implementations. See pkgIndex.tcl for more notes.

Index: support/installation/version.tcl
==================================================================
--- support/installation/version.tcl
+++ support/installation/version.tcl
@@ -1,6 +1,6 @@
-package_version 1.19
+package_version 1.20
 package_name    tcllib
 
 dist_exclude    config
 dist_exclude    modules/ftp/example
 dist_exclude    modules/ftpd/examples

ADDED   support/releases/history/README-1.20.md
Index: support/releases/history/README-1.20.md
==================================================================
--- /dev/null
+++ support/releases/history/README-1.20.md
@@ -0,0 +1,269 @@
+Overview
+========
+
+||||||
+|---|---|---|---|---|
+|8|new packages|in|7|modules|
+|47|changed packages|in|30|modules|
+|389|unchanged packages|in|115|modules|
+|446|packages, total|in|131|modules, total|
+
+Legend
+======
+
+|Change|Details|Comments|
+|---|---|---|
+|Major|API|__incompatible__ API changes|
+|Minor|EF|Extended functionality, API|
+||I|Major rewrite, but no API change|
+|Patch|B|Bug fixes|
+||EX|New examples|
+||P|Performance enhancement|
+|None|T|Testsuite changes|
+||D|Documentation updates|
+
+New in Tcllib 1.20
+==================
+
+|Module|Package|Version|Comments|
+|---|---|---|---|
+|clay|clay|0.8.6||
+|fileutil|fileutil::paths|1|Replaces: `doctools::paths`, (pt) `paths`.|
+|lazyset|lazyset|1||
+|||||
+|math|math::quasirandom|1.0||
+||math::trig|1.0||
+|||||
+|practcl|practcl|0.16.3||
+|struct|struct::map|1|Replaces: `doctools::config`, (pt) `configuration`.|
+|textutil|textutil::patch|0.1||
+||textutil::wcswidth|35.1||
+|||||
+
+Deprecations in Tcllib 1.20
+===========================
+
+Four packages are stage 1 deprecated in favor of two replacements.
+All internal users of the deprecated packages have been rewritten to
+use their replacements.
+
+|Module|Package|Replacement|Deprecation stage|
+|---|---|---|---|
+|doctools|doctools::paths|fileutil::paths|(D1) Redirected to replacements|
+|doctools|doctools::config|struct::map|(D1) Redirected to replacements|
+|pt|paths|fileutil::paths|(D1) Redirected to replacements|
+|pt|configuration|struct::map|(D1) Redirected to replacements|
+
+Stage 1 (__D1__) means that:
+
+  - The deprecated packages still exist.
+  - Their implementations have changed and become wrappers around their replacements.
+
+Future progress:
+
+  - In the release after 1.20 the stage 1 deprecated packages will be
+    moved to stage 2 (__D2__). In that stage the implementations of the
+    deprecated packages will stop redirecting to their replacements,
+    and throw errors instead. IOW starting with stage 2 use of the
+    deprecated packages will be more strictly blocked.
+
+  - In the release after that all stage 2 deprecated package will be
+    moved to stage 3 (__D3__). In that stage the packages will be
+    removed from Tcllib, causing `package require` to fail.
+
+
+Changes from Tcllib 1.19 to 1.20
+================================
+
+|Module|Package|From 1.19|To 1.20|Comments|
+|---|---|---|---|---|
+|blowfish|blowfish|1.0.4|1.0.5|B, D, T|
+|cache|cache::async|0.3|0.3.1|B, D, T|
+|dns|dns|1.4|1.4.1|B, D, T|
+||||||
+|doctools|doctools|1.4.21|1.5.6|B|
+||doctools::idx|1.0.7|1.1|EF, D, T|
+||doctools::toc|1.1.6|1.2|EF, B, D, T|
+||||||
+|doctools2idx|doctools::idx::export|0.2|0.2.1|I, D, T|
+||doctools::idx::import|0.2|0.2.1|I, D, T|
+||||||
+|doctools2toc|doctools::toc::export|0.2|0.2.1|I, D, T|
+||doctools::toc::import|0.2|0.2.1|I, D, T|
+||||||
+|dtplite|dtplite|1.3|1.3.1|B, D|
+|html|html|1.4.4|1.4.5|EF, B, D, T|
+|http|autoproxy __(1)__|1.6|1.7|EF, B, D, T|
+|httpd|httpd|4.1.0|4.3.4|I, B, D, T|
+||||||
+|log|log|1.3|1.4|EF, D, T|
+||logger::utils|1.3|1.3.1|B, D, T|
+||||||
+|markdown|Markdown|1.1|1.1.1|B, T|
+||||||
+|math|math::calculus|0.8.2|0.8.2|D|
+||math::interpolate|1.1.1|1.1.2|B|
+||math::special __(1)__|0.3|0.4|EF, D, T|
+||math::geometry|1.2.3|1.3.1|EF, D, T|
+||math::numtheory|1.1|1.1.1|EF, D, T|
+||math::statistics __(1)__|1.1.1|1.5|EF, D, T|
+||||||
+|mime|mime|1.6|1.6.2|B, D, T|
+||smtp|1.4.5|1.5|EF, D, T|
+||||||
+|namespacex|namespacex|0.1|0.2|EF, I, B, D, T|
+|ncgi|ncgi|1.4.3|1.4.4|B, D, T|
+|oauth|oauth|1.0.1|1.0.3|B, D|
+|png|png|0.2|0.3|EF, D, T|
+|practcl|practcl __(2)__|0.11|0.16.3|EF, I, D|
+|profiler|profiler|0.3|0.5|B, D, T|
+||||||
+|pt|pt::peg::export|1|1.0.1|I, D, T|
+||pt::peg::import|1|1.0.1|I, D, T|
+||pt::peg::op|1.0.1|1.1.0|B, I, D|
+||||||
+|sha1|sha1|2.0.3|2.0.4|B, D|
+||sha256|1.0.3|1.0.4|B, D|
+||||||
+|simulation|simulation::random|0.3.1|0.4.0|EF, D, T|
+||||||
+|struct|struct::disjointset __(2)__|1.0|1.1|EF, I, D, T|
+||struct::graph|2.4.1|2.4.3|B, D, T|
+||struct::list|1.8.3|1.8.4|B, D, T|
+||struct::matrix|2.0.3|2.0.4|B, D, T
+||struct::record|1.2.1|1.2.2|B, D ,T|
+||||||
+|textutil|textutil|0.8|0.9|EF, D, T|
+|uuid|uuid|1.0.5|1.0.7|B, D, T|
+||||||
+|virtchannel_base|tcl::chan::cat|1.0.2|1.0.3|B, D|
+||tcl::chan::halfpipe|1|1.0.1|B, T|
+||||||
+|zip|zipfile::mkzip|1.2|1.2.1|B, D|
+||||||
+
+Notes
+
+  1. Now requires Tcl 8.5+
+  2. Now requires Tcl 8.6+
+
+Unchanged
+=========
+
+    aes, ascii85, asn, base32, base32::core, base32::hex, base64,
+    bee, bench, bench::in, bench::out::csv, bench::out::text,
+    bibtex, calendar, char, cksum, clock::iso8601,
+    clock::rfc2822, cmdline, comm, control,
+    coroutine, coroutine::auto, counter, crc16, crc32, cron, csv,
+    debug, debug::caller, debug::heartbeat, debug::timestamp, defer,
+    des, dicttool, docstrip, docstrip::util, doctools::toc (v2),
+    doctools::changelog, doctools::cvs, doctools::idx (v2),
+    doctools::html, doctools::html::cssdefaults,
+    doctools::idx::export::docidx, doctools::idx::export::html,
+    doctools::idx::export::json, doctools::idx::export::nroff,
+    doctools::idx::export::text, doctools::idx::export::wiki,
+    doctools::idx::import::docidx, doctools::idx::import::json,
+    doctools::idx::parse, doctools::idx::structure,
+    doctools::msgcat, doctools::msgcat::idx::c,
+    doctools::msgcat::idx::de, doctools::msgcat::idx::en,
+    doctools::msgcat::idx::fr, doctools::msgcat::toc::c,
+    doctools::msgcat::toc::de, doctools::msgcat::toc::en,
+    doctools::msgcat::toc::fr, doctools::nroff::man_macros,
+    doctools::tcl::parse, doctools::text,
+    doctools::toc::export::doctoc, doctools::toc::export::html,
+    doctools::toc::export::json, doctools::toc::export::nroff,
+    doctools::toc::export::text, doctools::toc::export::wiki,
+    doctools::toc::import::doctoc, doctools::toc::import::json,
+    doctools::toc::parse, doctools::toc::structure, exif, fileutil,
+    fileutil::decode, fileutil::magic::cfront,
+    fileutil::magic::cgen, fileutil::magic::filetype,
+    fileutil::magic::rt, fileutil::multi, fileutil::multi::op,
+    fileutil::traverse, ftp, ftp::geturl, ftpd, generator, gpx,
+    grammar::aycock, grammar::aycock::debug,
+    grammar::aycock::runtime, grammar::fa, grammar::fa::dacceptor,
+    grammar::fa::dexec, grammar::fa::op, grammar::me::cpu,
+    grammar::me::cpu::core, grammar::me::cpu::gasm,
+    grammar::me::tcl, grammar::me::util, grammar::peg,
+    grammar::peg::interp, hook, htmlparse, http::wget, huddle,
+    huddle::json, ident, imap4, inifile, interp,
+    interp::delegate::method, interp::delegate::proc, ip, irc,
+    javascript, jpeg, json, json::write, lambda, ldap, ldapx,
+    logger, logger::appender, map::geocode::nominatim, map::slippy,
+    map::slippy::cache, map::slippy::fetcher, mapproj,
+    math, math::bigfloat, math::bignum, math::calculus::symdiff,
+    math::complexnumbers, math::constants, math::decimal,
+    math::exact, math::fourier, math::fuzzy,
+    math::linearalgebra, math::machineparameters, math::optimize,
+    math::PCA, math::polynomials, math::rationalfunctions,
+    math::roman, md4, md5, md5crypt, multiplexer,
+    nameserv, nameserv::auto, nameserv::common, nameserv::server,
+    nettool, nmea, nntp, odie::processman, oo::dialect, oo::meta,
+    oo::option, oo::util, otp, page::analysis::peg::emodes,
+    page::analysis::peg::minimize, page::analysis::peg::reachable,
+    page::analysis::peg::realizable, page::compiler::peg::mecpu,
+    page::config::peg, page::gen::peg::canon, page::gen::peg::cpkg,
+    page::gen::peg::hb, page::gen::peg::me, page::gen::peg::mecpu,
+    page::gen::peg::ser, page::gen::tree::text, page::parse::lemon,
+    page::parse::peg, page::parse::peghb, page::parse::pegser,
+    page::pluginmgr, page::reader::hb, page::reader::lemon,
+    page::reader::peg, page::reader::ser, page::reader::treeser,
+    page::transform::mecpu, page::transform::reachable,
+    page::transform::realizable, page::util::flow,
+    page::util::norm::lemon, page::util::norm::peg, page::util::peg,
+    page::util::quote, page::writer::hb, page::writer::identity,
+    page::writer::me, page::writer::mecpu, page::writer::null,
+    page::writer::peg, page::writer::ser, page::writer::tpc,
+    page::writer::tree, picoirc, pki, pluginmgr, pop3, pop3d,
+    pop3d::dbox, pop3d::udb, processman, pt::ast,
+    pt::cparam::configuration::critcl,
+    pt::cparam::configuration::tea, pt::parse::peg, pt::pe,
+    pt::pe::op, pt::peg, pt::peg::container,
+    pt::peg::container::peg, pt::peg::export::container,
+    pt::peg::export::json, pt::peg::export::peg,
+    pt::peg::from::json, pt::peg::from::peg, pt::peg::import::json,
+    pt::peg::import::peg, pt::peg::interp, pt::peg::to::container,
+    pt::peg::to::cparam, pt::peg::to::json, pt::peg::to::param,
+    pt::peg::to::peg, pt::peg::to::tclparam, pt::pgen, pt::rde,
+    pt::rde::nx, pt::rde::oo, pt::tclparam::configuration::nx,
+    pt::tclparam::configuration::snit,
+    pt::tclparam::configuration::tcloo, pt::util, rc4, rcs, report,
+    resolv, rest, ripemd128, ripemd160, S3, SASL, SASL::NTLM,
+    SASL::SCRAM, SASL::XGoogleToken, simulation::annealing,
+    simulation::montecarlo, smtpd, snit, soundex, spf, stooop,
+    string::token, string::token::shell, stringprep, sha1 (v1),
+    stringprep::data, struct, struct::graph::op,
+    struct::pool, struct::prioqueue, struct::queue, struct::set,
+    struct::skiplist, struct::stack, struct::tree, sum, switched,
+    tar, tcl::chan::core, tcl::chan::events, tcl::chan::facade,
+    tcl::chan::fifo, tcl::chan::fifo2,
+    tcl::chan::memchan, tcl::chan::null, tcl::chan::nullzero,
+    tcl::chan::random, tcl::chan::std, tcl::chan::string,
+    tcl::chan::textwindow, tcl::chan::variable, tcl::chan::zero,
+    tcl::randomseed, tcl::transform::adler32,
+    tcl::transform::base64, tcl::transform::core,
+    tcl::transform::counter, tcl::transform::crc32,
+    tcl::transform::hex, tcl::transform::identity,
+    tcl::transform::limitsize, tcl::transform::observe,
+    tcl::transform::otp, tcl::transform::rot,
+    tcl::transform::spacer, tcl::transform::zlib, tclDES, tclDESjr,
+    tepam, tepam::doc_gen, term, term::ansi::code,
+    term::ansi::code::attr, term::ansi::code::ctrl,
+    term::ansi::code::macros, term::ansi::ctrl::unix,
+    term::ansi::send, term::interact::menu, term::interact::pager,
+    term::receive, term::receive::bind, term::send, text::write,
+    textutil::adjust, textutil::expander, textutil::repeat,
+    textutil::split, textutil::string, textutil::tabify,
+    textutil::trim, throw, tie, tie::std::array, tie::std::dsource,
+    tie::std::file, tie::std::growfile, tie::std::log,
+    tie::std::rarray, tiff, time, tool, transfer::connect,
+    transfer::copy, transfer::copy::queue,
+    transfer::data::destination, transfer::data::source,
+    transfer::receiver, transfer::transmitter, treeql, try,
+    udpcluster, uevent, uevent::onidle, unicode, unicode::data,
+    units, uri, uri::urn, uuencode, valtype::common,
+    valtype::creditcard::amex, valtype::creditcard::discover,
+    valtype::creditcard::mastercard, valtype::creditcard::visa,
+    valtype::gs1::ean13, valtype::iban, valtype::imei,
+    valtype::isbn, valtype::luhn, valtype::luhn5, valtype::usnpi,
+    valtype::verhoeff, websocket, wip, xsxp, yaml, yencode,
+    zipfile::decode, zipfile::encode

ADDED   support/releases/history/README-1.20.txt
Index: support/releases/history/README-1.20.txt
==================================================================
--- /dev/null
+++ support/releases/history/README-1.20.txt
@@ -0,0 +1,268 @@
+Overview
+========
+
+    8   new packages       in 7   modules
+    47  changed packages   in 30  modules
+    389 unchanged packages in 115 modules
+    446 packages, total    in 131 modules, total
+
+Legend
+======
+
+    Change   Details   Comments
+    -------- --------- ----------------------------------
+    Major    API       __incompatible__ API changes
+    Minor    EF        Extended functionality, API
+             I         Major rewrite, but no API change
+    Patch    B         Bug fixes
+             EX        New examples
+             P         Performance enhancement
+    None     T         Testsuite changes
+             D         Documentation updates
+    -------- --------- ----------------------------------
+
+New in Tcllib 1.20
+==================
+
+    Module     Package              Version       Comments
+    ---------- -------------------- ------------- ----------
+    clay       clay                 0.8.6
+    fileutil   fileutil::paths      1             Replaces: doctools::paths, (pt) paths.
+    lazyset    lazyset              1
+    ---------- -------------------- ------------- ----------
+    math       math::quasirandom    1.0
+               math::trig           1.0
+    ---------- -------------------- ------------- ----------
+    practcl    practcl              0.16.3
+    struct     struct::map          1             Replaces: doctools::config, (pt) configuration.
+    ---------- -------------------- ------------- ----------
+    textutil   textutil::patch      0.1
+               textutil::wcswidth   35.1
+    ---------- -------------------- ------------- ----------
+
+Deprecations in Tcllib 1.20
+===========================
+
+Four packages are stage 1 deprecated in favor of two replacements.
+All internal users of the deprecated packages have been rewritten to
+use their replacements.
+
+    Module             Package           Replacement      Deprecation stage
+    ------------------ ----------------- ---------------- --------------------------------
+    doctools           doctools::paths   fileutil::paths  (D1) Redirected to replacements
+    doctools           doctools::config  struct::map      (D1) Redirected to replacements
+    pt                 paths             fileutil::paths  (D1) Redirected to replacements
+    pt                 configuration     struct::map      (D1) Redirected to replacements
+    ------------------ ----------------- ---------------- --------------------------------
+
+Stage 1 (D1) means that:
+
+  - The deprecated packages still exist.
+  - Their implementations have changed and become wrappers around their replacements.
+
+Future progress:
+
+  - In the release after 1.20 the stage 1 deprecated packages will be
+    moved to stage 2 (D2). In that stage the implementations of the
+    deprecated packages will stop redirecting to their replacements,
+    and throw errors instead. IOW starting with stage 2 use of the
+    deprecated packages will be more strictly blocked.
+
+  - In the release after that all stage 2 deprecated package will be
+    moved to stage 3 (D3). In that stage the packages will be removed
+    from Tcllib, causing `package require` to fail.
+
+Changes from Tcllib 1.19 to 1.20
+================================
+
+    Module             Package                 From 1.19   To 1.20   Comments
+    ------------------ ----------------------- ----------- --------- ----------
+    blowfish	       blowfish		       1.0.4	   1.0.5     B, D, T
+    cache              cache::async            0.3         0.3.1     B, D, T
+    dns		       dns		       1.4	   1.4.1     B, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    doctools           doctools                1.4.21      1.5.6     B
+                       doctools::idx           1.0.7       1.1       EF, D, T
+                       doctools::toc           1.1.6       1.2       EF, B, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    doctools2idx       doctools::idx::export   0.2         0.2.1     I, D, T
+                       doctools::idx::import   0.2         0.2.1     I, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    doctools2toc       doctools::toc::export   0.2         0.2.1     I, D, T
+                       doctools::toc::import   0.2         0.2.1     I, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    dtplite            dtplite                 1.3         1.3.1     B, D
+    html               html                    1.4.4       1.4.5     EF, B, D, T
+    http               autoproxy (1)           1.6         1.7       EF, B, D, T
+    httpd              httpd                   4.1.0       4.3.4     I, B, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    log                log                     1.3         1.4       EF, D, T
+                       logger::utils           1.3         1.3.1     B, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    markdown	       Markdown		       1.1	   1.1.1     B, T
+    ------------------ ----------------------- ----------- --------- ----------
+    math               math::calculus          0.8.2       0.8.2     D
+                       math::interpolate       1.1.1       1.1.2     B
+                       math::special (1)       0.3         0.4       EF, D, T
+                       math::geometry          1.2.3       1.3.1     EF, D, T, B
+                       math::numtheory         1.1         1.1.1     EF, D, T
+                       math::statistics (1)    1.1.1       1.5       EF, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    mime               mime                    1.6         1.6.2     B, D, T
+                       smtp                    1.4.5       1.5       EF, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    namespacex         namespacex              0.1         0.2       EF, I, B, D, T
+    ncgi               ncgi                    1.4.3       1.4.4     B, D, T
+    oauth              oauth                   1.0.1       1.0.3     B, D
+    png                png                     0.2         0.3       EF, D, T
+    practcl            practcl (2)             0.11        0.16.3    EF, I, D
+    profiler           profiler                0.3         0.5       B, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    pt                 pt::peg::export         1           1.0.1     I, D, T
+                       pt::peg::import         1           1.0.1     I, D, T
+                       pt::peg::op             1.0.1       1.1.0     B, I, D
+    ------------------ ----------------------- ----------- --------- ----------
+    sha1               sha1                    2.0.3       2.0.4     B, D
+                       sha256                  1.0.3       1.0.4     B, D
+    ------------------ ----------------------- ----------- --------- ----------
+    simulation         simulation::random      0.3.1       0.4.0     EF, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    struct             struct::disjointset (2) 1.0         1.1       EF, I, D, T
+                       struct::graph           2.4.1       2.4.3     B, D, T
+                       struct::list            1.8.3       1.8.4     B, D, T
+		       struct::matrix	       2.0.3	   2.0.4     B, D, T
+                       struct::record          1.2.1       1.2.2     B, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    textutil           textutil                0.8         0.9       EF, D, T
+    uuid               uuid                    1.0.5       1.0.7     B, D, T
+    ------------------ ----------------------- ----------- --------- ----------
+    virtchannel_base   tcl::chan::cat          1.0.2       1.0.3     B, D
+    		       tcl::chan::halfpipe     1	   1.0.1     B, T
+    ------------------ ----------------------- ----------- --------- ----------
+    zip                zipfile::mkzip          1.2         1.2.1     B, D
+    ------------------ ----------------------- ----------- --------- ----------
+
+Notes
+(1) Now requires Tcl 8.5+
+(2) Now requires Tcl 8.6+
+
+Unchanged
+=========
+
+    aes, ascii85, asn, base32, base32::core, base32::hex, base64,
+    bee, bench, bench::in, bench::out::csv, bench::out::text,
+    bibtex, calendar, char, cksum, clock::iso8601,
+    clock::rfc2822, cmdline, comm, control,
+    coroutine, coroutine::auto, counter, crc16, crc32, cron, csv,
+    debug, debug::caller, debug::heartbeat, debug::timestamp, defer,
+    des, dicttool, docstrip, docstrip::util, doctools::toc (v2),
+    doctools::changelog, doctools::cvs, doctools::idx (v2),
+    doctools::html, doctools::html::cssdefaults,
+    doctools::idx::export::docidx, doctools::idx::export::html,
+    doctools::idx::export::json, doctools::idx::export::nroff,
+    doctools::idx::export::text, doctools::idx::export::wiki,
+    doctools::idx::import::docidx, doctools::idx::import::json,
+    doctools::idx::parse, doctools::idx::structure,
+    doctools::msgcat, doctools::msgcat::idx::c,
+    doctools::msgcat::idx::de, doctools::msgcat::idx::en,
+    doctools::msgcat::idx::fr, doctools::msgcat::toc::c,
+    doctools::msgcat::toc::de, doctools::msgcat::toc::en,
+    doctools::msgcat::toc::fr, doctools::nroff::man_macros,
+    doctools::tcl::parse, doctools::text,
+    doctools::toc::export::doctoc, doctools::toc::export::html,
+    doctools::toc::export::json, doctools::toc::export::nroff,
+    doctools::toc::export::text, doctools::toc::export::wiki,
+    doctools::toc::import::doctoc, doctools::toc::import::json,
+    doctools::toc::parse, doctools::toc::structure, exif, fileutil,
+    fileutil::decode, fileutil::magic::cfront,
+    fileutil::magic::cgen, fileutil::magic::filetype,
+    fileutil::magic::rt, fileutil::multi, fileutil::multi::op,
+    fileutil::traverse, ftp, ftp::geturl, ftpd, generator, gpx,
+    grammar::aycock, grammar::aycock::debug,
+    grammar::aycock::runtime, grammar::fa, grammar::fa::dacceptor,
+    grammar::fa::dexec, grammar::fa::op, grammar::me::cpu,
+    grammar::me::cpu::core, grammar::me::cpu::gasm,
+    grammar::me::tcl, grammar::me::util, grammar::peg,
+    grammar::peg::interp, hook, htmlparse, http::wget, huddle,
+    huddle::json, ident, imap4, inifile, interp,
+    interp::delegate::method, interp::delegate::proc, ip, irc,
+    javascript, jpeg, json, json::write, lambda, ldap, ldapx,
+    logger, logger::appender, map::geocode::nominatim, map::slippy,
+    map::slippy::cache, map::slippy::fetcher, mapproj,
+    math, math::bigfloat, math::bignum, math::calculus::symdiff,
+    math::complexnumbers, math::constants, math::decimal,
+    math::exact, math::fourier, math::fuzzy,
+    math::linearalgebra, math::machineparameters, math::optimize,
+    math::PCA, math::polynomials, math::rationalfunctions,
+    math::roman, md4, md5, md5crypt, multiplexer,
+    nameserv, nameserv::auto, nameserv::common, nameserv::server,
+    nettool, nmea, nntp, odie::processman, oo::dialect, oo::meta,
+    oo::option, oo::util, otp, page::analysis::peg::emodes,
+    page::analysis::peg::minimize, page::analysis::peg::reachable,
+    page::analysis::peg::realizable, page::compiler::peg::mecpu,
+    page::config::peg, page::gen::peg::canon, page::gen::peg::cpkg,
+    page::gen::peg::hb, page::gen::peg::me, page::gen::peg::mecpu,
+    page::gen::peg::ser, page::gen::tree::text, page::parse::lemon,
+    page::parse::peg, page::parse::peghb, page::parse::pegser,
+    page::pluginmgr, page::reader::hb, page::reader::lemon,
+    page::reader::peg, page::reader::ser, page::reader::treeser,
+    page::transform::mecpu, page::transform::reachable,
+    page::transform::realizable, page::util::flow,
+    page::util::norm::lemon, page::util::norm::peg, page::util::peg,
+    page::util::quote, page::writer::hb, page::writer::identity,
+    page::writer::me, page::writer::mecpu, page::writer::null,
+    page::writer::peg, page::writer::ser, page::writer::tpc,
+    page::writer::tree, picoirc, pki, pluginmgr, pop3, pop3d,
+    pop3d::dbox, pop3d::udb, processman, pt::ast,
+    pt::cparam::configuration::critcl,
+    pt::cparam::configuration::tea, pt::parse::peg, pt::pe,
+    pt::pe::op, pt::peg, pt::peg::container,
+    pt::peg::container::peg, pt::peg::export::container,
+    pt::peg::export::json, pt::peg::export::peg,
+    pt::peg::from::json, pt::peg::from::peg, pt::peg::import::json,
+    pt::peg::import::peg, pt::peg::interp, pt::peg::to::container,
+    pt::peg::to::cparam, pt::peg::to::json, pt::peg::to::param,
+    pt::peg::to::peg, pt::peg::to::tclparam, pt::pgen, pt::rde,
+    pt::rde::nx, pt::rde::oo, pt::tclparam::configuration::nx,
+    pt::tclparam::configuration::snit,
+    pt::tclparam::configuration::tcloo, pt::util, rc4, rcs, report,
+    resolv, rest, ripemd128, ripemd160, S3, SASL, SASL::NTLM,
+    SASL::SCRAM, SASL::XGoogleToken, simulation::annealing,
+    simulation::montecarlo, smtpd, snit, soundex, spf, stooop,
+    string::token, string::token::shell, stringprep, sha1 (v1),
+    stringprep::data, struct, struct::graph::op,
+    struct::pool, struct::prioqueue, struct::queue, struct::set,
+    struct::skiplist, struct::stack, struct::tree, sum, switched,
+    tar, tcl::chan::core, tcl::chan::events, tcl::chan::facade,
+    tcl::chan::fifo, tcl::chan::fifo2,
+    tcl::chan::memchan, tcl::chan::null, tcl::chan::nullzero,
+    tcl::chan::random, tcl::chan::std, tcl::chan::string,
+    tcl::chan::textwindow, tcl::chan::variable, tcl::chan::zero,
+    tcl::randomseed, tcl::transform::adler32,
+    tcl::transform::base64, tcl::transform::core,
+    tcl::transform::counter, tcl::transform::crc32,
+    tcl::transform::hex, tcl::transform::identity,
+    tcl::transform::limitsize, tcl::transform::observe,
+    tcl::transform::otp, tcl::transform::rot,
+    tcl::transform::spacer, tcl::transform::zlib, tclDES, tclDESjr,
+    tepam, tepam::doc_gen, term, term::ansi::code,
+    term::ansi::code::attr, term::ansi::code::ctrl,
+    term::ansi::code::macros, term::ansi::ctrl::unix,
+    term::ansi::send, term::interact::menu, term::interact::pager,
+    term::receive, term::receive::bind, term::send, text::write,
+    textutil::adjust, textutil::expander, textutil::repeat,
+    textutil::split, textutil::string, textutil::tabify,
+    textutil::trim, throw, tie, tie::std::array, tie::std::dsource,
+    tie::std::file, tie::std::growfile, tie::std::log,
+    tie::std::rarray, tiff, time, tool, transfer::connect,
+    transfer::copy, transfer::copy::queue,
+    transfer::data::destination, transfer::data::source,
+    transfer::receiver, transfer::transmitter, treeql, try,
+    udpcluster, uevent, uevent::onidle, unicode, unicode::data,
+    units, uri, uri::urn, uuencode, valtype::common,
+    valtype::creditcard::amex, valtype::creditcard::discover,
+    valtype::creditcard::mastercard, valtype::creditcard::visa,
+    valtype::gs1::ean13, valtype::iban, valtype::imei,
+    valtype::isbn, valtype::luhn, valtype::luhn5, valtype::usnpi,
+    valtype::verhoeff, websocket, wip, xsxp, yaml, yencode,
+    zipfile::decode, zipfile::encode