Version 6 of Porting extensions to Tcl 9

Updated 2023-08-08 18:34:03 by paul

PO - 2023-04-05

This page is the summary of my experiences trying to port the Tcl packages or programs supported by BAWT to Tcl 9.

The versions used for the tests were Tcl 9.0b1 (a97f381771) and Tk 8.7b1 (002da37d).

Note, that all changes listed below regarding size_t must be replaced with either ptrdiff_t or Tcl_Size, if TIP 660 will be accepted, which I strongly encourage.

Table Packages lists all packages looked at and their current status. Tables Changes in Tcl and Changes in C summarize all changes done at the Tcl and C level for all packages. All other tables summarize the changes done for each individual package or program.

Please feel free to add your experiences, additions and comments.


PO - 2023-08-08 See also Rolf Ade's EuroTcl2023 presentation Porting tcllib to Tcl 9


Packages

This table summarizes the status of the package ports.

The columns show the folllowing information:

  • Library: The name and a link to the package home page.
  • Tcl8 Version: The version number and a link to the source of the package as used in BAWT for Tcl 8.6.
  • Tcl9 Version: The version number and a link to the source of the modified package. If no entry is given, then either the Tcl8 version is working or I did not look at the package or it was too much effort.
  • Build: The modified package could be compiled with Tcl 9.
  • Require: A package require suceeded for the package with Tcl 9.
  • Bawt Test: The simple BAWT test program for this package works with Tcl 9.
  • Module Tests: I did not perform any package module tests right now.
  • Responsible: Add a link, if you are the maintainer or feel responsible for this package.
  • Comments: Short comments regarding this package. Add longer comments at the end of the table.
Library Tcl8 Version Tcl9 Version Build Require Bawt Test Module Tests Responsible Comments
apave 3.4.8 YesYesYes
awthemes 10.4.0 YesYesYes
BWidget 1.9.16 1.9.17 YesYesYes
Canvas3d 1.2.2 1.2.3 YesYesYes
cawt 2.9.2 YesYesNoPONo tests possible due to Twapi not yet working
cffi 1.2.0 1.2.1 YesYesYes
critcl 3.2 3.2.1 YesYesN/A
DiffUtil 0.4.2 0.4.3 YesYesNoBAWT demo hangs
expect 5.45.4 NoNoNo
ffidl 0.9.0 0.9.1 YesYesYes
fitsTcl 2.5 2.5.1 YesYesYes
gdi 0.9.9.15 YesYesN/A
gorilla 1.6.0 1.6.1 YesYesN/A
hdc 0.2.0.1 YesYesN/A
Img 1.4.14 1.4.15 YesYesYes
imgjp2 0.1 0.1.1 YesYesYes
imgtools 0.3 0.3.1 YesYesYes
iocp 1.1.0 1.1.1 YesYesNo
itk 4.1.0 4.1.1 YesYesYes
iwidgets 4.1.1 4.1.2 YesYesYes
materialicons 0.2 YesYesYes
mawt 0.4.1 0.4.2 YesYesYesPO
memchan 2.3 2.3.1 YesYesN/A
mentry 3.16 YesYesYes
Mpexpr 1.2 1.2.1 YesYesYes
mqtt 3.1 3.1.1 YesYesYes
MuPDFWidget 2.2 YesYesYes
nacl 1.1 1.1.1 YesYesYes
nsf 2.4.0 YesYesYes
ooxml 1.6.1 1.6.2 YesYesYes
oratcl 4.6 NoNoN/A
parse_args 0.3.3 0.3.4 YesYesYes
pawt 1.1.0 1.1.1 YesYesYesPO
pdf4tcl 0.9.4 YesYesYes
pgintcl 3.5.1 3.5.2 YesYesN/A
photoresize 0.2 0.2.1 YesYesYes
poApps 2.11.0 2.12.0 YesYesN/A
poImg 2.0.2 2.0.3 YesYesYesPO
printer 0.9.6.15 0.9.6.16 YesYesN/A
publisher 2.0YesYesN/A
puppyicons 0.1 YesYesYes
rbc 0.2 NoNoNo
rl_json 0.11.5 0.11.6 YesNoNo
ruff 2.3.0 2.3.1 YesYesN/A
scrollutil 1.17 YesYesYes
shellicon 0.1 0.1.1 YesYesYes
shtmlview 1.0.0 1.0.1 YesYesYes
Snack 2.2.11 2.2.12 YesYesYes
tablelist 6.20 YesYesN/A
tbcload 1.7.1 1.7.2 YesNoN/A
tcl3dBasic 0.9.5 0.9.6 YesYesYesPO
Tcladdressbook 1.2.4 NoNoN/A
tclAE 2.0.7 NoNoN/A
Tclapplescript 2.2 NoNoN/A
tclargp 0.2 YesYesYes
tclcompiler 1.7.3 1.7.4 YesYesNo
tclcsv 2.3 2.3.1 YesYesYes
tclfpdf 1.5 YesYesYes
tclgd 1.4 1.4.1 YesYesYes
Tclkit NANAYesYesN/A
tcllib 1.21 1.22 YesNoNoNo tcllibc
tclMuPdf 2.1.1 2.3 YesYesYes
tclparser 1.8 1.8.1 YesYesN/A
tclpy 0.4 0.4.1 YesYesYes
tclssg 2.2.1 YesYesN/A
tcltls 1.7.22 1.7.23 YesYesN/A
tclvfs 1.4.2 1.4.3 YesYesN/A
tclws 3.4.0 3.4.1 YesYesN/A
tclx 8.4.4 NoNoNo
tdom 0.9.3 YesYesYes
Tix 8.4.3 8.4.4 YesYesNo
tkcon 2.7.10 YesYesN/A
tkdnd 2.9.3 2.9.4 YesYesNotkdnd works on Linux and Darwin
Tkhtml 3.0.1 3.0.2 YesYesYes
tklib 0.7 0.8 YesYesN/A
tkpath 0.3.3 NoNoNo
tkribbon 1.1 1.2 YesYesN/A
tksqlite 0.5.13 0.5.14 YesYesN/A
tksvg 0.12 YesYesYes
Tktable 2.11 2.11.1 YesYesYes
tkwintrack 2.0.1 YesYesN/A
treectrl 2.4.1 2.4.2 YesYesYes
Trf 2.1.4 NoNoNo
trofs 0.4.9 NoNoN/A
tserialport 1.1 1.1.1 YesYesN/A
twapi 4.7.2 4.7.3 YesNoN/A
tzint 1.1 1.1.1 YesYesYes
udp 1.0.11 1.0.12 YesYesN/A
ukaz 2.0a3 YesYesYes
vectcl 0.2 0.2.1 YesYesNo
wcb 3.8 YesYesN/A
windetect 1.0.0 YesYesN/A
winhelp 1.1 1.1.1 YesYesYes

Additional comments:


Changes in Tcl

Common changes in Tcl files Comments
Replaced $tcl_platform with $::tcl_platform in namespaces
Replaced package require Tcl 8.X with package require Tcl 8.X-
Replaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-
Added string totitle in pkgIndex.tcl.in or pkgIndex.tcl
Added string totitle in Makefile.in
Replaced "~" with file tildeexpand "~" for Tcl >= 9.
Changed functionality: ttk::combobox::current returns empty string instead of -1
Check for octal number.

Additional comments:


Changes in C

Common changes in C/C++ files Comments
Replaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)
Added #include <stdarg.h>
Removed _ANSI_ARGS_ statements
Added definition of _ANSI_ARGS_Only as quick workaround
Added definition of TCL_VARARGSOnly as quick workaround
Changed CONST to const
Changed CONST84 to const
Changed CONST86 to const
Changed VOID to void
Replaced TCL_CHANNEL_VERSION_2 with TCL_CHANNEL_VERSION_5
Replaced TCL_CHANNEL_VERSION_4 with TCL_CHANNEL_VERSION_5
Replaced Tcl_UniCharNcasecmp with Tcl_UtfNcasecmp
Replaced Tcl_UniCharNcmp with Tcl_UtfNcmp
Replaced Tcl_UniCharCaseMatch with Tcl_StringCaseMatch
Replaced Tcl_Backslash with Tcl_UtfBackslashRecommended replacement ??
Replaced Tcl_DStringTrunc with Tcl_DStringSetLength
Replaced TclOffset with offsetof
Replaced Tcl_WinUtfToTChar with Tcl_UtfToChar16DString
Replaced Tk_BackgroundError with Tcl_BackgroundError
Replaced Tk_CancelIdleCall with Tcl_CancelIdleCall
Replaced Tk_DoWhenIdle with Tcl_DoWhenIdle
Replaced Tk_EventuallyFree with Tcl_EventuallyFree
Replaced Tk_Preserve with Tcl_Preserve
Replaced Tk_Release with Tcl_Release
Replaced TkpDrawHighlightBorder with Tk_DrawHighlightBorder for Tcl >= 9
Replaced TkpMakeWindow with Tk_MakeWindow for Tcl >= 9
Replaced TclSetPreInitScript with Tcl_SetPreInitScript for Tcl >= 9
Added parameter compRule to Tk_PhotoPutBlock for Tcl >= 9
Replaced Tk_PhotoPutBlock_NoComposite with Tk_PhotoPutBlock(..., TK_PHOTO_COMPOSITE_OVERLAY)
Replaced Tcl_PanicVA with `Tcl_Panic using method described in TIP 422
Replaced panic with `Tcl_Panic
Replaced Tcl_DriverCloseProc with Tcl_DriverClose2Proc. Changed signature of corresponding function.
Removed expressions using obsolete TCL_INTERP_DESTROYEDRecommended replacement ??
Removed expressions using obsolete TCL_PARSE_PART1Recommended replacement ??
Replaced obsolete TCL_OUT_LINE_COMPILE with TCL_ERROR
Replaced obsolete TK_X_EVENTS with TCL_WINDOW_EVENTS
Replaced obsolete TK_DONT_WAIT with TCL_DONT_WAIT
Compile Tcl_SavedResult, Tcl_DiscardResult, Tcl_SaveResult, Tcl_RestoreResult only for Tcl < 9Recommended replacement ??
Used size_t for size parameter of Tcl_GetStringFromObj for Tcl >= 9
Added definition of TCL_NULL: (size_t*)NULL for Tcl >= 9, else NULL
Replaced NULL or 0 with TCL_NULL in Tcl_GetStringFromObj calls
Replaced -1 with TCL_INDEX_NONE in call of Tcl_NewStringObj
Replaced -1 with TCL_INDEX_NONE in call of Tcl_DStringAppend

Additional comments:

  • Instead of just using NULL (which does not work with new Tcl macros in C++), use (size_t *) NULL.

CMake

File Changes Comments
Modules/FindTCL.cmakeAdded search for tcl9tk87 library files in BAWT Setup script CMake.bawt

Additional comments:


SWIG

File Changes Comments
Several filesChanged CONST to const
Several filesReplaced NULL or 0 with TCL_NULL in Tcl_GetStringFromObj calls
Several filesReplaced Tcl_GetBoolFromObj with SwigGetBoolFromObj
Several filesUsed size_t for size parameter of Tcl_GetStringFromObj for Tcl >= 9
Lib/tcl/tclapi.swgAdded definition of TCL_NULL: (size_t*)NULL for Tcl >= 9, else NULL
Source/Modules/tcl8.cxxAdded command line parameter -tcl9 for Tcl9 related initialization code

Additional comments:

  • Instead of generating CONST use const.
  • Instead of just using NULL (which does not work with new Tcl macros in C++), use (size_t *) NULL.
  • Rename Tcl_GetBoolFromObj to SwigGetBoolFromObj, as Tcl_GetBoolFromObj is a macro in Tcl9.

Tk

File Changes Comments
xlib/X11/Xlib.hReplaced _X_DEPRECATED EXTERN KeySym XKeycodeToKeysym with EXTERN _X_DEPRECATED KeySym XKeycodeToKeysym

Additional comments:

  • Change needed for C++ packages using X: photoresize Tcl3D tkdnd

BWidget

File Changes Comments
dropsite.tclReplaced $tcl_platform with $::tcl_platform in namespaces
widget.tclReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:


Canvas3d

File Changes Comments
generic/c3dsearch.cRemoved CONST86 in struct

Additional comments:


cffi

File Changes Comments
generic/tclhBase.hUsed definitions of Tclh_SSizeT and Tclh_USizeT as are used for Tcl 8TODO
generic/tclhPointer.hAdded #include <stdarg.h>
pkgIndex.tcl.inAdded string totitle

Additional comments:


critcl

File Changes Comments
build.tclReplaced package require Tcl 8.X with package require Tcl 8.X-
lib/critcl/critcl.tclReplaced package require Tcl 8.X with package require Tcl 8.X-
lib/critcl/pkgIndex.tclReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-

Additional comments:


DiffUtil

File Changes Comments
pkgIndex.tcl.inAdded string totitle
generic/diffutil.cReplaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)
generic/diffutil.cReplaced Tcl_UniCharNcasecmp with Tcl_UtfNcasecmp
generic/diffutil.cReplaced Tcl_UniCharNcmp with Tcl_UtfNcmp
Several filesChanged CONST to const

Additional comments:


ffidl

File Changes Comments
generic/ffidl.cReplaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)
generic/ffidl.cChanged CONST to const
library/ddidlrt.tclReplaced $tcl_platform with $::tcl_platform in namespaces
library/ddidlrt.tclNeed to corrected stubs number of obsolete TclGetUnicode and TclGetByteArrayFromObjTODO

Additional comments:


fitsTcl

File Changes Comments
configure.inAdded search for Tcl9 libraries.

Additional comments:


gorilla

File Changes Comments
Several filesReplaced package require Tcl 8.X with package require Tcl 8.X-
sources/tcllibUpdated csv module to 0.8.1
sources/tcllibUpdated md5 module to 2.0.8
sources/tcllibUpdated sha1module to 2.0.4
sources/tcllibUpdated sha1module to 1.0.7
gorilla.tclReplaced "~" with file tildeexpand "~" for Tcl >= 9.

Additional comments:


Img

File Changes Comments
libpng/win/makefile.vcAdapted stub lib names for Tcl9.
win/rules-img.vcAdapted stub lib names for Tcl9.
tclconfig/tcl.m4Line 3210: Replaced PACKAGE_LIB_PREFIX with PACKAGE_LIB_PREFIX8
Several filesUnified WIN32 definitions to _WIN32

Additional comments:


imgjp2

File Changes Comments
Makefile.inAdded string totitle
imgjp2.cReplaced Tk_PhotoPutBlock_NoComposite with Tk_PhotoPutBlock(..., TK_PHOTO_COMPOSITE_OVERLAY)

Additional comments:


imgtools

File Changes Comments
pkgIndex.tcl.inAdded string totitle

Additional comments:


iocp

File Changes Comments
win/tclWinIocp.cReplaced TCL_CHANNEL_VERSION_4 with TCL_CHANNEL_VERSION_5
win/tclWinIocp.cReplaced Tcl_DriverCloseProc with Tcl_DriverClose2Proc. Define IocpChannelClose only for Tcl < 9.
win/tclWinIocpTcp.cReplaced Tcl_DStringTrunc with Tcl_DStringSetLength
win/tclWinIocpWinsock.cReplaced Tcl_DStringTrunc with Tcl_DStringSetLength
win/tclWinIocpUtil.cReplaced Tcl_PanicVA with `Tcl_Panic using method described in TIP 422
win/tclhBase.hDeclared for Tcl9: typedef size_t Tclh_SSizeT

Additional comments:


itk

File Changes Comments
Several filesChanged CONST to const
Several filesRemoved _ANSI_ARGS_ statements
generic/itkArchBase.cReplaced Tcl_DStringTrunc with Tcl_DStringSetLength
generic/itkUtil.cChanged VOID to void
pkgIndex.tcl.inReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-

Additional comments:


iwidgets

File Changes Comments
win/iwidgets.tclReplaced $iwidgets with $::iwidgets in namespaces
iwidgets.tcl.inReplaced $iwidgets with $::iwidgets in namespaces
iwidgets.tcl.inReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:


mawt

File Changes Comments
./swigfiles/mawt.iReplaced SWIG module name mawtLib with mawt
./tclfiles/mawtInterface.tclReplaced namespace mawtlib with mawt
./tclfiles/mawtQuery.tclReplaced namespace mawtlib with mawt
./tclfiles/pkgIndex.tcl.inReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-

Additional comments:


memchan

File Changes Comments
Several filesChanged CONST to const
Several filesChanged CONST84 to const
Several filesChanged VOID to void
Several header filesAdded definition of _ANSI_ARGS_
generic/memchanInt.hCorrected #if ((TCL_MAJOR_VERSION >= 8) && ...) to #if ((TCL_MAJOR_VERSION == 8) && ...)

Additional comments:


Mpexpr

File Changes Comments
Several filesChanged CONST to const
Several filesChanged CONST84 to const
Several filesChanged VOID to void
Several filesRemoved _ANSI_ARGS_ statements
./generic/mpexpr.hAdded definition of TCL_VARARGS
./generic/mpparse.cReplaced Tcl_Backslash with Tcl_UtfBackslash

Additional comments:


mqtt

File Changes Comments
mqtt-3.1.tmReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:


nacl

File Changes Comments
pkgIndex.tcl.inAdded string totitle

Additional comments:


ooxml

File Changes Comments
helper.tclReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:


parse_args

File Changes Comments
generic/parse_args.cReplaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)

Additional comments:


pawt

File Changes Comments
pkgIndex.tclReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-

Additional comments:


pgintcl

File Changes Comments
pgin.tclReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:


photoresize

File Changes Comments
pkgIndex.tcl.inAdded string totitle
generic/photoresize_wrap.cppChanged CONST to const
generic/photoresize_wrap.cppReplaced NULL with TCL_NULL in Tcl_GetStringFromObj calls

Additional comments:


poApps

File Changes Comments
Several filesReplaced "~" with file tildeexpand "~" for Tcl >= 9 using new proc GetHomeDir
Several filesChanged functionality: ttk::combobox::current returns empty string instead of -1

Additional comments:


poImg

File Changes Comments
pkgIndex.tcl.inAdded string totitle

Additional comments:


printer

File Changes Comments
printer.cCompile Tcl_SavedResult, Tcl_DiscardResult, Tcl_SaveResult, Tcl_RestoreResult only for Tcl < 9

Additional comments:


rl_json

File Changes Comments
Several filesChanged CONST to const
Several filesRemoved _ANSI_ARGS_ statements
pkgIndex.tcl.inAdded string totitle

Additional comments:


rbc

File Changes Comments
Several filesChanged CONST to const
Several filesChanged CONST86 to const
Several filesAdded definition of _ANSI_ARGS_
Several filesAdded definition of TCL_VARARGS
Several filesRemoved expressions using obsolete TCL_INTERP_DESTROYED

Additional comments:

  • Stopped porting because of lots of other needed changes

ruff

File Changes Comments
ruff.tclReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:


shellicon

File Changes Comments
shellicon.cChanged CONST to const
shellicon.cReplaced Tcl_AppendResult with Tcl_SetResult for return of image name

Additional comments:


shtmlview

File Changes Comments
shtmlview/shtmlview.tclReplaced $tcl_platform with $::tcl_platform in namespaces

Additional comments:


Snack

File Changes Comments
Several filesChanged CONST to const
Several filesChanged CONST84 to const
Several filesChanged CONST86 to const
Several filesRemoved _ANSI_ARGS_ statements
generic/jkSound.hAdded #if TCL_MAJOR_VERSION >= 9 to hide obsolete Tcl_SeekOld and Tcl_TellOld
Several filesRemoved expressions using obsolete TCL_INTERP_DESTROYED
Several filesRemoved expressions using obsolete TCL_PARSE_PART1

Additional comments:


tbcload

File Changes Comments
Several filesChanged CONST to const
Several filesChanged VOID to void
cmpInt.hAdded definition of _ANSI_ARGS_
cmpRead.cReplaced TclOffset with offsetof

Additional comments:

  • Critical compiler warnings regarding int * vs. size_t * with ExceptionRange
  • package require tbcload generates error message: InitTypes: failed to find the int type

tcl3dBasic

File Changes Comments
CMakeModules/Macros.cmakeAdded macro GET_TCL_MAJOR_VERSION
tcl3dOgl/Togl/togl.cAdded definition of TCL_NULL: (size_t*)NULL for Tcl >= 9, else NULL
tcl3dOgl/Togl/togl.cReplaced Tk_Preserve with Tcl_Preserve
tcl3dOgl/Togl/togl.cReplaced Tk_Release with Tcl_Release
tcl3dOgl/Togl/togl.cReplaced TkpMakeWindow with Tk_MakeWindow for Tcl >= 9
tcl3dOgl/Togl/togl.cReplaced panic with `Tcl_Panic
tcl3dOgl/Togl/togl.cReplaced Tk_DoWhenIdle with Tcl_DoWhenIdle
tcl3dOgl/Togl/togl.cCompile Tcl_SavedResult, Tcl_DiscardResult, Tcl_SaveResult, Tcl_RestoreResult only for Tcl < 9
Several filesReplaced NULL or 0 with TCL_NULL in Tcl_GetStringFromObj calls
Several filesUsed size_t for size parameter of Tcl_GetStringFromObj for Tcl >= 9
Several pkgIndex.tcl filesReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-
Several SWIG filesAdapted SWIG module names
CMakeLists.txtRetrieve Tcl major number needed as parameter for SWIG.

Additional comments:


tclcompiler

File Changes Comments
Several filesChanged CONST to const
Several filesChanged CONST84 to const
cmpInt.hAdded definition of _ANSI_ARGS_
cmpInt.hAlways define macro panic as Tcl_Panic
cmpWrite.cReplaced TclOffset with offsetof
cmpWrite.cReplaced obsolete TCL_OUT_LINE_COMPILE with TCL_ERROR

Additional comments:

  • Critical compiler warnings regarding int * vs. size_t * with ForeachVarList

tclcsv

File Changes Comments
src/tclcsv.cChanged CONST to const
pkgIndex.tcl.inAdded string totitle

Additional comments:


tclgd

File Changes Comments
Several filesChanged CONST to const
generic/tclgdtcl.cReplaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)

Additional comments:


Tclkit

File Changes Comments
kbskit/generic/kitInit.cReplaced TclSetPreInitScript with Tcl_SetPreInitScript for Tcl >= 9
kbskit/generic/rechan.cCompile Tcl_SavedResult, Tcl_DiscardResult, Tcl_SaveResult, Tcl_RestoreResult only for Tcl < 9
Several filesChanged CONST to const
Several filesReplaced package require Tcl 8.X with package require Tcl 8.X-
Several filesReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-
kbskit/library/setupvfs.tclAdded ability to specify different Tcl and Tk versions.
TclVfs/generic/vfs.cReplaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)
Several filesRemoved _ANSI_ARGS_ statements
vqtcl/generic/vlerq.cReplaced Tcl_WinUtfToTChar with Tcl_UtfToChar16DString

Additional comments:


tcllib

File Changes Comments
Lots of filesReplaced package require Tcl 8.X with package require Tcl 8.X-
Lots of filesReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-

Additional comments:


tclparser

File Changes Comments
tclParser.cChanged CONST to const
tclParser.cRemoved _ANSI_ARGS_ statements
tclParser.cUsed size_t for size parameter of TclFindElement for Tcl >= 9

Additional comments:


tclpy

File Changes Comments
generic/tclpy.cReplaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)
pkgIndex.tcl.in.cmakeAdded string totitle

Additional comments:


tcltls

File Changes Comments
Several filesRemoved _ANSI_ARGS_ statements
Several filesChanged CONST to const
Several filesChanged CONST84 to const
Several filesChanged VOID to void
tlsIO.cReplaced TCL_CHANNEL_VERSION_2 with TCL_CHANNEL_VERSION_5
tls.cReplaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)
pkgIndex.tcl.inReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-

Additional comments:


tclvfs

File Changes Comments
generic/vfs.cRemoved _ANSI_ARGS_ statements
generic/vfs.cChanged CONST to const
generic/vfs.cChanged CONST86 to const
generic/vfs.cCompile Tcl_SavedResult, Tcl_DiscardResult, Tcl_SaveResult, Tcl_RestoreResult only for Tcl < 9
generic/vfs.cReplaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)
library/vfs.tcl.inReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-
Several filesReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:


tclws

File Changes Comments
Several filesReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:


tclx

File Changes Comments
Several filesChanged CONST to const
Several filesChanged VOID to void
Several filesAdded definition of TCL_VARARGS
Several filesRemoved expressions using obsolete TCL_PARSE_PART1

Additional comments:

  • Stopped porting because of unknown replacement for Tcl_Value and Tcl_ValueType

tix

File Changes Comments
Several filesChanged CONST to const
Several filesChanged VOID to void
generic/tix.hAdded definition of _ANSI_ARGS_
generic/tix.hAdded definition of TCL_VARARGS
generic/tixGrSort.cReplaced Tcl_DStringTrunc with Tcl_DStringSetLength
Several filesCompile Tcl_SavedResult, Tcl_DiscardResult, Tcl_SaveResult, Tcl_RestoreResult only for Tcl < 9
Several filesReplaced Tk_Preserve with Tcl_Preserve
Several filesReplaced Tk_Release with Tcl_Release
Several filesReplaced Tk_CancelIdleCall with Tcl_CancelIdleCall
Several filesReplaced Tk_DoWhenIdle with Tcl_DoWhenIdle
Several filesReplaced Tk_EventuallyFree with Tcl_EventuallyFree
Several filesReplaced Tk_BackgroundError with Tcl_BackgroundError
generic/tixWidget.cReplaced obsolete TK_X_EVENTS with TCL_WINDOW_EVENTS
generic/tixWidget.cReplaced obsolete TK_DONT_WAIT with TCL_DONT_WAIT
library/Init.tclReplaced package require Tcl 8.X with package require Tcl 8.X-
Makefile.inReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:

  • BAWT demo crashes

tkdnd

File Changes Comments
library/tkdnd.tclAdded string totitle
Several filesReplaced Tk_BackgroundError with Tcl_BackgroundError
Several filesReplaced -1 with TCL_INDEX_NONE in call of Tcl_NewStringObj
Several filesReplaced -1 with TCL_INDEX_NONE in call of Tcl_DStringAppend
win/TkDND_OleDND.cppUsed size_t for size parameter of Tcl_GetStringFromObj for Tcl >= 9

Additional comments:

  • No drag and drop possible on Windows. Linux and Darwin work.

tkhtml

File Changes Comments
Several filesChanged CONST to const
Several filesChanged VOID to void
Several filesRemoved _ANSI_ARGS_ statements
src/htmltcl.cAdded #include <stdarg.h>
src/htmltcl.cReplaced Tcl_PkgRequire(interp, "Tcl", "8.X", 0) with Tcl_PkgRequire(interp, "Tcl", "8.X-", 0)
src/htmlimage.cAdded parameter compRule to Tk_PhotoPutBlock for Tcl >= 9

Additional comments:


tklib

File Changes Comments
Lots of filesReplaced package require Tcl 8.X with package require Tcl 8.X-
Lots of filesReplaced package vsatisfies Tcl 8.X with package vsatisfies Tcl 8.X-

Additional comments:


tkpath

File Changes Comments
Several filesChanged CONST to const
Several filesChanged VOID to void

Additional comments:

  • Stopped porting because of lots of needed Tk_OptionSpec adaptions

tkribbon

File Changes Comments
CMakeLists.txtReplaced tkribbon with Tkribbon in load command

Additional comments:


tksqlite

File Changes Comments
tksqlite.tclReplaced package require Tcl 8.X with package require Tcl 8.X-
tksqlite.tclReplaced ttk with ::ttk in namespaces

Additional comments:


tktable

File Changes Comments
./generic/tkTable.cRemoved expressions using obsolete TCL_INTERP_DESTROYED
Several filesChanged CONST to const
Several filesChanged CONST84 to const
Several filesChanged VOID to void
Several filesRemoved _ANSI_ARGS_ statements
Makefile.inReplaced package require Tcl 8.X with package require Tcl 8.X-

Additional comments:


treectrl

File Changes Comments
Several filesChanged CONST to const
Several filesChanged VOID to void
generic/tkTreeUtils.cRemoved _ANSI_ARGS_ statements
generic/qebind.cCompile Tcl_SavedResult, Tcl_DiscardResult, Tcl_SaveResult, Tcl_RestoreResult only for Tcl < 9
generic/tkTreeDisplay.cReplaced TkpDrawHighlightBorder with Tk_DrawHighlightBorder for Tcl >= 9
generic/tkTreeElem.cRemoved expressions using obsolete TCL_INTERP_DESTROYED
Makefile.inAdded string totitle

Additional comments:


tserialport

File Changes Comments
pkgIndex.tcl.inAdded string totitle

Additional comments:


twapi

File Changes Comments
twapi/storage/dirmonitor.cReplaced Tcl_UniCharCaseMatch with Tcl_StringCaseMatch
twapi/namedpipe/namedpipe.cReplaced Tcl_DriverCloseProc with Tcl_DriverClose2Proc. Changed signature of NPipeCloseProc
twapi/namedpipe/namedpipe.cReplaced TCL_CHANNEL_VERSION_4 with TCL_CHANNEL_VERSION_5
twapi/include/twapi.htclStubsPtr->tcl_StaticLibrary not available in Tcl9 anymore. Replaced by Tcl_StaticPackage, which enables compilation, but Tcl_StaticPackage can/should not be used with stubs.
pkgIndex.tcl.inAdded string totitle

Additional comments:

  • Compiles, but does not work with package require

tzint

File Changes Comments
pkgIndex.tcl.inAdded string totitle

Additional comments:


udp

File Changes Comments
pkgIndex.tcl.inAdded string totitle
generic/udp_tcl.cChanged CONST to const
generic/udp_tcl.cChanged CONST86 to const
generic/udp_tcl.cReplaced Tcl_DriverCloseProc with Tcl_DriverClose2Proc. Changed signature of corresponding function.
generic/udp_tcl.cAdded #include <stdarg.h>

Additional comments:


vectcl

File Changes Comments
pkgIndex.tcl.inAdded string totitle
generic/vmparser.cChanged CONST to const

Additional comments:


winhelp

File Changes Comments
Makefile.inAdded string totitle

Additional comments: