• Tcl / Tk 9.0b3 RELEASED

    From Don Porter@donald.porter@nist.gov to comp.lang.tcl on Wed Jul 31 15:05:03 2024
    From Newsgroup: comp.lang.tcl


    Tcl/Tk 9.0b3 Release Announcement
    July 31, 2024

    The Tcl Core Team is pleased to announce the 9.0b3 releases of the Tcl
    dynamic language and the Tk graphical interface package. These are the
    third beta releases of Tcl 9.0 and Tk 9.0. More details can be found below.

    We would like to express our gratitude to all those who submit bug
    reports and patches. This information is invaluable in enabling us
    to identify and eliminate problems in the core. Such reports can be
    submitted here.

    https://core.tcl-lang.org/tcl/ticket
    https://core.tcl-lang.org/tk/ticket

    We ask that you log in (anonymous if you wish) to create tickets.
    This deters abuse of the ticketing system:

    https://core.tcl-lang.org/tcl/login
    https://core.tcl-lang.org/tcl/login

    Where to get the new releases:
    ------------------------------

    Tcl/Tk 9.0b3 sources are freely available as open source from the Tcl SourceForge project's file distribution area:

    https://sourceforge.net/projects/tcl/files/

    This distribution is source code only. We keep links to some third
    parties offering pre-built binaries for various systems here:

    https://www.tcl-lang.org/software/tcltk/bindist.html

    General Summary
    ---------------

    These are new major versions of both Tcl and Tk. There are new features
    to be enjoyed. There are incompatibilities to be considered. The list
    of both is long and detailed and not fully included here. We believe many scripts written for Tcl 8 will run unchanged in Tcl 9. We believe many more can be modified in small and simple ways to produce a new script that runs
    in both Tcl 8 and Tcl 9. We expect that extensions and applications using
    the public C APIs of Tcl and Tk will involve more effort, but that it is
    still within reasonable reach to produce source code supporting both Tcl 8
    and Tcl 9 while both releases remain in widespread use.

    These are beta releases. The developers believe the new feature set is complete enough and the code quality is high enough that it is time for
    a larger audience of Tcl/Tk users to give them a try and report back
    to the developers what difficulties need resolution before stable
    releases of Tcl/Tk 9.0.0.

    The experiences of Tcl/Tk 8 users adapting their code to the beta releases
    of Tcl/Tk 9 will shape the final interfaces of Tcl/Tk 9.0.0, and will
    determine the need for possible Tcl/Tk 8.7 releases that might supply additional lifecycle and migration support.

    It is not recommended to deploy these beta releases directly to mission critical use without significant testing and review.

    Tcl Changes Summary
    -------------------

    The source code for Tcl is managed by fossil. Tcl developers coordinate all changes to the Tcl source code at

    [Tcl Source Code](https://core.tcl-lang.org/tcl/timeline)

    Release Tcl 9.0b3 arises from the check-in with tag core-9-0-b3.

    Highlighted differences between Tcl 9.0 and Tcl 8.6 are summarized below,
    with focus on changes important to programmers using the Tcl library and writing Tcl scripts.

    ## 64-bit capacity: Data values larger than 2Gb

    ## Internationalization of text
    - Full Unicode range of codepoints
    - New encodings: utf-16/utf-32/ucs-2(le|be), CESU-8, etc.
    - `encoding` options -profile, -failindex manage encoding of I/O.
    - `msgcat` supports custom locale search list
    - `source` defaults to -encoding utf-8

    ## Zip filesystems and attached archives.

    ## Unix notifiers available using epoll() or kqueue()
    - relieves limits on file descriptors imposed by legacy select()

    ## Notable incompatibilities
    - Unqualified varnames resolved in current namespace, not global.
    - No --disable-threads build option. Always thread-enabled.
    - I/O malencoding default response: raise error (-profile strict)
    - Windows platform needs Windows 7 or Windows Server 2008 R2 or later
    - Ended interpretation of ~ as home directory in pathnames
    - Removed the "identity" encoding.
    - Removed the encoding alias "binary" to "iso8859-1".
    - $::tcl_precision no longer controls string generation of doubles
    - Removed Tcl 7 legacies: [case], [puts] [read] variant syntaxes
    - Removed subcommands [trace variable|vdelete|vinfo]
    - No -eofchar option for channels anymore for writing.
    - On Windows 10+ (Version 1903 or higher), system encoding is always utf-8.
    - Removed command ::tcl::unsupported::inject.

    ## Incompatibilities in C public interface
    - Many arguments expanded type from int to Tcl_Size
    - Ended support for Tcl_ChannelTypeVersion less than 5
    - Introduced versioning of the Tcl_ObjType struct
    - Removed macros CONST*: Tcl 9 support means dropping Tcl 8.3 support
    - Removed routines:
    Tcl_Backslash(), Tcl_*VA(), Tcl_*MathFunc*(), Tcl_MakeSafe(),
    Tcl_(Save|Restore|Discard|Free)Result(), Tcl_EvalTokens(),
    Tcl_(Get|Set)DefaultEncodingDir(),
    Tcl_UniCharN(case)cmp(), Tcl_UniCharCaseMatch()

    ## New commands
    - `array default`, `array for`
    - `chan isbinary`
    - `coroinject`, `coroprobe`
    - `clock add weekdays`
    - `const`, `info const*`
    - `dict getwithdefault`
    - `file tempdir`, `file home`, `file tildeexpand`
    - `info commandtype`
    - `ledit`
    - `lpop`
    - `lremove`
    - `lseq`
    - `package files`
    - `string insert`, `string is dict`
    - `tcl::process`
    - `*::build-info`
    - `readFile`, `writeFile`, `foreachLine`

    ## New command options
    - `regsub ... -command ...`
    - `lsearch ... -stride ...`
    - `clock scan ... -validate ...`
    - `socket ... -nodelay ... -keepalive ...`
    - `vwait` controlled by several new options

    ## Numbers
    - 0NNN format is no longer octal interpretation. Use 0oNNN.
    - 0dNNNN format to compel decimal interpretation.
    - NN_NNN_NNN, underscores in numbers for optional readability
    - Functions: isinf() isnan() isnormal() issubnormal() isunordered()
    - `fpclassify`
    - Function int() no longer truncates to word size

    ## tcl::oo facilities
    - private variable and methods
    - `method -export`, `method -unexport`

    Tk Changes Summary
    -------------------

    The source code for Tk is managed by fossil. Tk developers coordinate all changes to the Tk source code at

    [Tk Source Code](https://core.tcl-lang.org/tk/)

    Release Tk 9.0b3 arises from the check-in with tag core-9-0-b3.

    Highlighted differences between Tk 9.0 and Tk 8.6 are summarized below,
    with focus on changes important to programmers using the Tk library and
    writing Tcl scripts containing Tk commands.

    ## Many improvements to use of platform features and conventions.
    - Built-in widgets and themes are scaling-aware.
    - Improved support of two-finger gestures, where available
    - The `tk windowingsystem` "aqua" needs macOS 10.10 or later

    ## New commands and options
    - `tk sysnotify`: access to the OS notifications system
    - `tk systray`: access to the OS tray facility
    - `tk print`: access to the OS printing facility

    ## Widget options
    - New `ttk::progressbar` option: **-text**
    - `$frame ... -backgroundimage $img -tile $bool`
    - `$menu id`, `$menu add|insert ... ?$id? ...`
    - `$image get ... -withalpha ...`
    - All indices now accept the forms **end**, **end-int**, **int+|-int**

    ## Improved widget appearance
    - `ttk::notebook` with nondefault tab positions

    ## Images
    - Partial SVG support
    - Read/write access to photo image metadata

    Tcl Improvement Proposals (TIPs)
    --------------------------------

    Each new user-visible feature in Tcl or Tk should find its origins in
    a Tcl Improvement Proposal (TIP). TIPs are published, edited, considered
    and voted in public, and should contain valuable information about how
    a feature came to be the way it is. See the full collection here:

    https://tip.tcl-lang.org/

    Additional support resources
    ----------------------------

    See the following links for an accumulation of migration advice:

    https://core.tcl-lang.org/tcl/wiki?name=Migrating+C+extensions+to+Tcl+9 https://core.tcl-lang.org/tcl/wiki?name=Migrating+scripts+to+Tcl+9

    There has been much progress already porting many known applications, extensions, and packages in the Tcl world to compatibility with Tcl/Tk 9:

    https://wiki.tcl-lang.org/page/Apps+confirmed+to+work+with+Tcl+9 https://wiki.tcl-lang.org/page/Porting+extensions+to+Tcl+9

    For additional information:
    ---------------------------

    Please visit the Tcl Developer Xchange web site:

    https://www.tcl-lang.org/

    This site contains a variety of information about Tcl/Tk in general, the
    core Tcl and Tk distributions, Tcl development tools, and much more.

    --
    Tcl Core Team and Maintainers
    Don Porter, Tcl Core Release Manager
    --
    | Don Porter Applied and Computational Mathematics Division |
    | donald.porter@nist.gov Information Technology Laboratory |
    | http://math.nist.gov/~DPorter/ NIST | |______________________________________________________________________|
    --- Synchronet 3.20a-Linux NewsLink 1.114