Skip to content

Comments

TCL9 compile clean#5

Open
teclabat wants to merge 7 commits intobohagan1:masterfrom
teclabat:wip
Open

TCL9 compile clean#5
teclabat wants to merge 7 commits intobohagan1:masterfrom
teclabat:wip

Conversation

@teclabat
Copy link

Fix multicast IPv6 error
All tests pass in Windows (msys2) and Debian (bookworm 12)
Removed configure script as this should be autogenerated

teclabat and others added 7 commits January 7, 2026 02:37
Change-Id: Id71a568a001c63aee3101684c7ce000f7448ab58
Change-Id: I6ddc8ec74191ef522cfdac21fe88cbf4639b1d45
wip
Change-Id: I461ed9503c23d506e41f00c5acd2f493b47e6ef4
@bohagan1
Copy link
Owner

bohagan1 commented Feb 18, 2026

I looked over your changes and have a few comments.

  1. Remove configure script:

    The configure script is essential to the building of this extension. For make based builds, the build process is './configure; make; make install'. Many users don't have the Autoconf environment set up, so they can't run 'autoconf' to create the configure script. Even if they do, it may use an outdated version. It is for these reasons the configure script comes with Tcl, Tk, and every other compiled extension. I think maybe you meant the Makefile should not be included in the repo. It isn't.

Tcl 9 Migration (2026-02-14)

  1. Added lowercase init aliases for Tcl 9 load command

    Not sure why you needed to do this. I've been using udp with Tcl 8.6 and 9.0.[0-3] for awhile on Windows, Linux, FreeBSD, etc. without issue. All code compiles cleanly and tests pass. I think maybe you aren't using the included pkgIndex.tcl file created by the make process from pkgIndex.tcl.in. It handles the conversion of the package name to title case so load will work.

  2. Fixed channel type closeProc field for Tcl 9

    Again similar to issue 3, I haven't had any issues with continuing to use 'udpClose' in the Udp_ChannelType definition. Ditto for same approach with TclTLS, TclVFS, etc. Which compiler and settings did you use to encounter this?

  3. Replaced deprecated Tcl_DStringResult

    I don't see Tcl_DStringResult on any of the lists or in the TCL sources as being deprecated. See https://wiki.tcl-lang.org/page/Porting+extensions+to+Tcl+9, https://core.tcl-lang.org/tcl/wiki?name=Migrating%20C%20extensions%20to%20Tcl%209, etc. In fact that last link uses it as part of a work-around example. I don't think this is needed.

  4. IPv6 Multicast Interface Fix (2026-02-14)

    I've been working on an updated version which uses the Windows Unicode APIs, better IPv6 support, etc. It addresses the IPv4 vs IPv6 differences for the interface. This was tough one to get working right. I'll check if this adds anything I missed. Thanks.

Windows Compiler Fixes (2026-01-07)

  1. Fixed ioctlsocket() Type Compatibility (Line 1972)

  2. Fixed WSAAddressToStringA() Type Compatibility (Line 394)

    As stated above I've been working on an updated version and one of the first changes I made in it covered these two issues. I've been busy with other work, so haven't had a chance to get back to finish it. However, let me see if I can put out a 1.0.13 release with these type fixes while the rest go in 1.1 or 2.0. Thanks for reporting it.

@teclabat
Copy link
Author

  1. What is an "outdated" version? I fear more that "configure" gets outdated.

  2. About the Tcl_DStringResult: indeed this change was unnecessary and now introduced a copy/memory operation. I think this should be undone as Tcl_DstringResult only moves pointers (much better). What is a noop is the Tcl_DStringFree as Tcl_DStringResult already reinitializes the internal buffer. So this call can safely be removed.

  3. I am glad if you can reuse even a little portion of the code.

@bohagan1
Copy link
Owner

Old is anything built by an autoconf earlier than 2.72.

I've been burned using Dstrings before, so I always play it safe now.

Checking my notes, I now recall why the network interfaces were so much trouble. Windows doesn't support all of the network interface APIs even if in POSIX and RFC 2553. Where it dies, it only supports ANSI not Unicode. So I was working to bridge that using the W APIs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants