Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resolve conflict with tcl.h #473

Closed
wants to merge 1 commit into from
Closed

Resolve conflict with tcl.h #473

wants to merge 1 commit into from

Conversation

nijtmans
Copy link
Collaborator

Resolve possible conflict with tcl.h, allowing <tcl.h> and <tommath.h> to be #included in any order.

The problem is that Tcl has a few API's which are using the "mp_int" structure from tommath.h. For Tcl, the internal structure of mp_int is transparant, that's supposed to come from <tommat.h> But tcl.h contains the following code fragment now:

#ifndef MP_INT_DECLARED
#define MP_INT_DECLARED
typedef struct mp_int mp_int;
#endif

This allows Tcl to use mp_int in it's own API, without defining how it looks like: that's up to libtommath. The first header-file included - either tcl.h or tommath.h - will typedef "mp_int" as an anonymous struct, while tommath has full freedom to specify how it looks like.

So, I ask that tommath.h does the same: If another header file already typdefs mp_int as a anonymous struct, <tommath.h> doesn't need to do that again, just add the exact structure definition. This way the two header files can cooperate without conflicts.

At this moment, Tcl contains a modified <tommat.h> with this change. But it would be great if Tcl could include an unmodified <tommat.h> in the near future.

Thanks!
Jan Nijtmans

@minad
Copy link
Member

minad commented Jan 10, 2020

No, such patches, which are only useful for Tcl won't happen. Please use a patched header in tcl.h. Please do not try to get this merged over and over again. I tried to point out a few times before that this is not a proper thing to do. Duplicating the struct definition in some other header. This can lead to very bad things, incompatible structs used in different compile units etc. Looked more closely, and you are just making the struct opaque, not redefining it. I still think it is the wrong thing to do, you cannot expect of third party libraries to be compatible with your style of predeclaring structs.

@minad minad closed this Jan 10, 2020
Copy link
Member

@minad minad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

strongly against this

@minad
Copy link
Member

minad commented Jan 10, 2020

@nijtmans I wonder why do you not simply include tommath.h in tcl.h instead of predeclaring the mp_int struct? It seems mp_int is exposed throughout the tcl api at many places, but you seem only want to half-expose it through the predeclared struct. What is the reason for that again? I recall something like you wanted to link in msvc to ltm compiled by gcc and this way the struct type is invalid.

The other alternative would be to not expose tommath, by introducing some opaque TclBigInt struct. This would probably be preferable since then tcl is not tied to tommath for ever and the bigint implementation could be switched.

@nijtmans
Copy link
Collaborator Author

Looked more closely, and you are just making the struct opaque, not redefining it. I still think it is the wrong thing to do, you cannot expect of third party libraries to be compatible with your style of predeclaring structs.

No problem, we differ in opinion on this. You have the right to do that. In my opinion this is the best solution, but if I'm stepping over your limits, I will go for the second-best solution. No hard feelings. ;-)

@minad
Copy link
Member

minad commented Jan 13, 2020

No problem, we differ in opinion on this. You have the right to do that. In my opinion this is the best solution, but if I'm stepping over your limits, I will go for the second-best solution. No hard feelings. ;-)

I thought a bit about this. This patch is relatively unproblematic and it wouldn't hurt us much to merge it. But I still believe that it is not the correct thing to do for many reasons. Sorry if I am repeating myself.

  1. It is a hack. Interestingly not a hack needed here but by a downstream project to work around their own api quirks.

  2. There should be something like a library boundary. It should be possible to argued that a change makes sense from the library point of view. However a library has to consider its users and use cases. So this criterion is pretty fuzzy and weak.

  3. There is nothing wrong with having a simple struct definition as we are having right now. Some large libraries might provide predeclaration headers. This is very often a C++ thing to reduce compilation time. But we are talking about a single struct here. It would not hurt you to simply include the full header in Tcl instead of doing this predeclaration dance. (And if it would hurt you and you need to have the struct opaque due to some other reasons, it is a hack and we have go back to point 1).

  4. I looked at your Tcl headers and how you are including or not including tommath.h. In contrast to all the other Tcl_types, the mp_int type stands out. It should either be fully embraced or wrapped to keep it internal. If it should be exposed, then it makes sense to simply include tommath.h everywhere to get access to the definition. If one wants to avoid exposing it (as I would argue), the mp_int type should not appear anywhere in the Tcl api. So what I am saying, the headers in Tcl could probably be reorganized a bit. (I only took a quick glance so ignore what I am saying if it is plain wrong. For example I couldn't figure out directly which headers belong to the public and which are meant to be private. Probably the tommath related headers are not user-facing for tcl embedders?)

andreas-kupries pushed a commit to tcltk/tcl that referenced this pull request Jan 14, 2020
sebres pushed a commit to sebres/tcl that referenced this pull request Oct 15, 2020
clrpackages pushed a commit to clearlinux-pkgs/tcl that referenced this pull request Jan 5, 2021
José Ignacio Marín (5):
      Update TZ info to tzdata2020a.
      Update TZ info to tzdata2020b.
      Update TZ info to tzdata2020c.
      Update TZ info to tzdata2020d.
      Update TZ info to tzdata2020e.

Kevin B Kenny (1):
      Add test cases that used to cause floating point overflow in computing the correction term in floating point input conversion. Fix exponent overflow in floating point input conversion, and floating-point overflow in the significand in input conversion.

aku (1):
      Added two tests demonstrating that the tickets [8af92dfb66] (bad stream expansion) and [f70ce1fead] (multi-stream decoding without readahead limit shenanigans) are fixed.

apnadkarni (6):
      Fix generation of VERSIONINFO in RC files when package versions have 4 or more
      Fix See also links in list commands
      nmake builds: extract {TCL,TK}_RELEASE_SERIAL and patch letters from {tcl,tk}.h
      nmake: build nmakehlp with -DNDEBUG, sync rules.vc for 8.7
      Fix commits 93ab6a and 606df1. msvcrt time64bit - TCL_{MAJOR,MINOR}_VERSION checks.
      nmake: fix path in tcl.nmake check

culler (18):
      Address macOS hangs in Tcl_WaitForEvent.
      Code simplification and cleanup
      Sometimes the waitTime needs to be positive to avoid missing channel io events.
      Use the os_unfair_lock in place of OSSpinLock when the minimum build target is newer than OSX 10.12
      Check if reverting from os_unfair_lock to OSSpinLock has any effect.
      Experiment with  chan-io-50.6 on Travis
      Experiment with io-50.1 on Travis
      Fix the expected result for chanio-50.6
      Add and use testservicemode command; replace update by vwait
      One more vwait.
      use vwait in chanio tests too.
      More places where vwait needs to be used instead of update.
      Try to make io-50.6 more robust on the Travis macOS VM
      Add the missing $.
      And remove the other $ and do the test slightly differently.  Inability to test locally is a challenge.
      Add a make variable to GNUmakefile for building the Tcl.framework for use as a subframework
      When building a subframework for macOS use a build directory in the staging directory.
      Set a default DESTDIR in macosx/GNUmakefile

dgp (242):
      Bump to version 8.7a3 for release.
      Start of TIP 543 implementation.
      Bump release date
      Add tcl/library/manifest.txt to the distribution produced by `make dist`
      Start updates to changes
      More work on changes.
      update changes
      Makefiles got out of sync with tcltest version.
      Bump to 8.7a4 to distinguish development from 8.7a3 release.
      Tests demonstrating the number parsing overflow bugs.
      Tests for another parsing bug.
      Assign a double literal to a double variable. No point in requiring conversion.
      Fix parsing bug when (numSigDigs == 0).
      Fix documentation, comments, and argument names of Tcl_TransferResult().
      Rewrite: lead paragraph with name of documented routine.
      formatting typo and rewrite
      Tcl_TransferResult was new in 8.6, so mark the man page with that version.
      Remove the "new in 8.5" markings from the 8.6 branch of docs.
      Remove "new in 8.6" marks from the docs in the 8.7 branch.
      Missing bit of interp->result deprecation.
      Bring docs up to date with TIP 330 and TIP 336 changes already in Tcl 8.7
      one more
      Revise documentation that refers to direct access to interp->result.
      Remove another mention of interp->result.
      s/in stead/instead/
      Improvements to doc changes from TIPs 422 and 512.
      Implement TIP 559 (deprecation part).
      Create a new macro to deal with unused arguments so we can silence compiler
      The close routines of the "tcp" channel type were failing to record error
      Have to move the JOIN() macro out of deprecation for this TCL_UNUSED.
      More deployment of TCL_UNUSED. (Travis appears happy with it).
      Untangle some MEM_DEBUG ifdeffery.
      More TCL_UNUSED deployment.
      More TCL_UNUSED deployment
      More TCL_UNUSED().
      more of the same
      more unused arguments
      (no comment)
      (no comment)
      more
      more
      Remove SetIndexFromAny(), a useless routine that can only be reached via
      more unused arguments
      more
      More unused arguments through the IO code.
      more
      Unused arguments in the OO source code files.
      More TCL_UNUSED.
      More TCL_UNUSED
      More
      more
      Bring TCL_UNUSED to macosx sources.
      need internal header now.
      TCL_UNUSED in the unix sources.
      TCL_UNUSED for win sources.
      Mac fix
      Add some testing of Tcl_SetByteArrayLength().
      Renumber tests to account for later releases.
      Minimal fix for crash bug.
      New internal routine TclGetBytesFromObj().
      Need declaration too.
      TIP 569 - remove lint comments
      a few more
      Improve the standard error message for nonbyte arguments.
      Repair bad test labels.
      Improve error reporting. If codepoint looks negative, bad char is reported
      Further improvement. Report invalid multi-byte characters accurately.
      [ffeb2097af] Restore the standard and original practice of ignoring invalid
      Optimize base64 decoder to work on bytearrays without string generation.
      Missing error codes from decoder routines.
      Revise comment that was a plain lie.
      Make sure maxlen value does not rely on ordering of options.
      [8edfcedfa0] [binary encode base64] build a string instead of a bytearray
      Add a test for fixed bug.
      Optimize [binary decode uuencode] to process bytearray without string
      Optimize [binary decode hex] to process bytearray without string generation
      Retrict -wrapchar values to those that can be decoded.
      Update docs to describe these changes.
      Tweaks
      Adapt [testbytestring] to use TclGetBytesFromObj, which must be in internal
      Use TclGetBytesFromObj to check that [zipfs mount_data] gets proper bytes argument
      Use TclGetBytesFromObj to check that all commands and public routines that
      Prevent a binary read appending to a non-bytes value.
      New utility routine TclUtfToUCS4() to contain some complexity. Two callers adapted.
      More callers.
      Adapt another caller. This one had a bug when (TCL_UTF_MAX == 4) because it
      One more caller conversion that simplifies.
      typo
      Remove stray debug
      Use new utility routine so that error characters using surrogates are
      Fix broken build.
      Fix testing command [testnumutfchars] so it cannot overrun the buffer.
      Set of tests demonstrating flaws in Tcl_UtfPrev (as viewed through a fragile
      More tests that should continue to demo faults in Tcl_UtfPrev after
      New testing command so we can directly demonstrate flaws.
      Convert the tests to use the testing command.
      more tests
      Restore the original Tcl_UtfPrev routine. Fails a different set of tests.
      Apply better bug fix that does not create new bugs this time.
      Cherry pick the [string trim] changes.
      New tests demonstrating bug in TclNeedSpace(): improper handling escaped space.
      [afa4b28153] Correct TclNeedSpace handling of trailing escaped space.
      Guarantee TclNeedSpace and TclFindElement have common definition of whitespace
      Revise two tests that were detecting and forgiving a bug.
      More tests.
      [085913c760] Fix Tcl_DStringAppendElement quoting of #.
      Same trouble fixed the same way in Tcl_AppendElement().
      Bulletproof the calls to Tcl_UtfPrev in Tcl_AppendLimitedToObj.
      Add (disabled) test to demo the inability of [string wordstart] to handle
      Repair invalid utf-8 in subst.test.
      [2006888] Backport conversion of test file to strict ASCII. ISO-8859-1
      Stop direct use of the identity encoding in tests.
      added test case covering [c61818e4c9] - string trim for not valid utf-8 sequence (mistakenly considers NTS-zero char as a continuation of utf-8 pair)
      Convert test to not directly use identity encoding.
      Another test for [string trimright] that demonstrates its own failures,
      Cherrypick partial fix.
      [c61818e4c9] [string trimright] robustly handle backing up over incomplete
      TclTrimLeft and TclTrimRight are internal routines. They demand NUL-terminated
      TclTrim() can also demand NUL-terminated arguments, and be simplified.
      A NUL byte cannot be mistaken for a trail byte.
      Known bug test string-22.14 is not so hard to fix.
      New test demonstrating Tcl_StringCaseMatch is botched in its use of
      [a7f685a181] Eliminate botched call of Tcl_UtfPrev.
      Repair tests to expect the right thing.
      Make the comments describing Tcl_UtfPrev more complete and precise.
      Improve the precision of the Tcl_UtfPrev documentation.
      test numbering
      Create separate tables to serve Tcl_UtfPrev and Tcl_UtfComplete.
      Expose the failing tests. Fix string-20.7 by using an invalid single byte
      Same issue fixed for test string-20.8*
      Keep the tests consistent.
      The function of Tcl_UtfNext() is to advance a pointer. There's nothing
      Create and use an optimized macro TclUtfNext() for Tcl_UtfNext().
      Replace calls of TclUtfToUniChar() with TclUtfNext() when caller has no
      Fix the bad logic in Tcl_UtfNext().
      typo
      New testing command [testutfnext].
      Collection of coverage tests for Tcl_UtfNext.
      Add test demonstrating that Tcl_UtfNext accepts overlong byte sequences,
      New tests checking Tcl_UtfPrev handling of overlong sequences. Bug demonstrated.
      Rework Tcl_UtfPrev so it properly handles overlong sequences.
      More test coverage
      Use test existence to shorten comment.
      Refactor the Overlong test into a utility routine.
      When we reject overlong sequences, \xC1 is as invalid a lead byte as \xFF.
      Convert Overlong() to use a lookup table.
      Create and use macro TclUtfPrev for Tcl_UtfPrev.
      More tests and fix for overlong handling in revised Tcl_UtfNext.
      compiler warning
      More detailed comments.
      delete merge litter
      Improve the docs for Tcl_UtfNext.
      merge litter
      Adjust test results and implementation for Tcl 8.6 current support of
      Fix the bad tests utf-2.11 and utf-6.88 that expected the wrong results.
      Bring the single-byte marker for invalid lead byte \xC1 into the complete table
      enable the tests on a bug fix branch
      When supporting 4-byte sequences, make sure the Overlong test does too, and
      more test fixes
      When supporting 4-byte sequences even with TCL_UTF_MAX = 3, need to
      Bring back the test utf-2.11; it fails in a TCL_UTF_MAX=4 build.
      Backport a collection of tests for consistency between branches.
      Corrections for many tests, changing lead byte \xF4 to \xF2.
      [493dccc2de] Coverage that Tcl_UtfPrev also checks the upper range validity.
      More tests explicitly for Tcl_UtfNext near validity boundary U+110000
      [493dccc2de] Revise sequence validity check to reject out of range decodes too.
      Make TCL_UTF_MAX=4 build test clean again.
      regexp engine has to agree about the sizeof(Tcl_UniChar).
      typo
      Reconcile tests to the 8.5 branch history.
      Backport the encoding fix for source-7.2 in TCL_UTF_MAX=6 build.
      Backport the fix for encoding-16.1 in a TCL_UTF_MAX=6 build.
      Tie together the TCL_UTF_MAX=4 and TCL_UTF_MAX=6 builds to mean the same
      Pair every compat85 test with a fullutf test so that we cover all variants.
      Revert the backport to tclEncoding.c that seems to redefine the "unicode"
      We've settled on using (TCL_UTF_MAX > 3) to indicate 4-byte Tcl_UniChar.
      Revert the other encoding system backport.
      Move testing command [testsize] from Windows to generic.
      Use new testing command to constrain tests to (sizeof(Tcl_UniChar) == 2)
      remove merge litter
      Restored a test constraint to tolerate [1004065] (maybe just in time to not need it anymore).
      Eliminate the -bytestring option of [testutfnext]. No caller needs anything else.
      Add optional second argument to [testutfnext] that can limit how many
      Collection of tests checking read limit protections calling Tcl_UtfNext.
      test number reuse
      Argument conditions for Invalid() call were not always satisfied.
      Demonstrate that the failing tests on the 8.6 branch tip can equally well
      Revise tests to reflect fixed bug in RE parsing of \uHHHH escapes.
      Revert the parts of [76213b3f72] that converted callers of Tcl_UtfToUniChar
      Two more tests developed during work on [27944a3661].
      Cherrypick [d2143c14c1]: Eliminate the -bytestring option of [testutfnext]. No caller needs anything else.
      dup test name
      Bring back a set of tests from 8.6. Invented new constraints to constrain to
      Continuing test reconciliation.
      Refine the constraint.  The fact that Tcl stores extended characters
      test reconciliation
      More test reconciliation.
      Possible fix for [string to*] writing out a high surrogate at end of string.
      More tests showing more bugs.
      Still more tests
      Use lossless internal routines to cover extended characters.
      bring back new tests
      Pull back another test from 8.7.
      silence compiler warning
      test reconciliation
      constraint fixes
      case
      case
      Parameterize tests of Tcl_UniCharNcasecmp
      Improve the reporting of a failing test. Start testing extended chars.
      Proposed fix.
      Restore constraint compat with later branches in utf-2.8* tests.
      If we insist on tidy grouping and numbering, lets get it right.
      More constrained splits to cover variants.
      repair numbering botch.
      Expand coverage of indexing across all variants.
      Split tests utf-8.5.
      Test the other notation too (as was already done in 8.7+)
      Correct the tests for variants with no UCS-4 support.
      New test for Tcl_UniCharNcmp.
      Split a test so other builds are covered.
      Add comments so I'll know again later why this is here.
      Revise constraints to where expectations are met.
      Test for [4c591fa487].
      D'oh!
      The routine Invalid() has been revised to do something different.
      Restore safe calls of Invalid().
      Tighten optimization in Tcl_NumUtfChars. Explain in comments.
      New approach to fixing the regression reported in [31aa44375d] builds on
      split and constrain the failing test.
      Test demonstrating bug in ticket [b2816a3afe].
      Fix.  Note that just because we get one positive detection of an incomplete
      Same trouble with Tcl_UtfToUniCharDstring. Test and fix.
      Bump to 8.6.11 for release.
      Some additions to changes.
      Suppress tests that fail starting with OSX Mojave.
      Silence compiler warning -- fix safety of macro.
      make dist
      Repair flaws exposed by debugging test run.
      changes file updates WIP
      Suppress testing of known bug only when it is present.  Allow tests that pass.
      update changes

dkf (14):
      Move the cookiejar package to its own directory so http works as a TM. Fix the unix installation code to include the bootstrap registrar names.
      Proposed Windows installation code for cookiejar package
      Fixed index line
      typo fix
      Ensure that we release the correct references when an error occurs during setting a class's superclasses
      Copied build control files for Github Actions from 8.7
      Cleaning up the actions and trying to make them behave more usefully on Windows.
      Back to powershell
      Fixed some tests, added trial macOS build
      Fix minor errors
      Updated README
      Added MSYS/gcc build for Windows, renamed Linux build step
      Rethinking how to do a build matrix on several platforms
      Disable test that fails in CI environments

fvogel (1):
      Restore the build by providing a copysign replacement for old MSVC versions.

gahr (6):
      Use AC_CHECK_LIB and put ltommath in MATH_LIBS to avoid polluting LIBS
      Make sure LDFLAGS are propagated to MAKE_LIB
      Regenerate configure
      Include LDFLAGS in TCL_LIB, since that's where MATH_LIBS come in
      Fix equality check, reported by Emiliano
      Regenerate configure

jan.nijtmans (534):
      Even better support for -DTCL_UTF_MAX=6.  Ongoing improvements (TIP being planned)
      More WIP. Seems to be *almost* working.
      Experiment: On platforms which support it (gcc), compiled libtommath with DIGIT_BIT=60
      More complete typedef for mp_word, for MP_8BIT and MP_16BIT as well.
      (temporary workaround): Mark expr-47.12 and expr-47.13 as nonPortable: Those are the test-cases failing with DIGIT_BIT=60 on MacOSX but not on other platforms. To be investigated further!
      Complete implementation for MSVC (even building minigzip)
      More WIP: eliminate all usage of (platform-specific) Tcl_WinTCharToUtf()/Tcl_WinUtfToTChar() to its proposed portable replacements: Tcl_Utf16ToUtfDString()/Tcl_UtfToUtf16DString()
      More simplifications, taking deprecations into account
      TIP #548: Deprecate Tcl_WinUtfToTChar() and Tcl_WinTCharToUtf() and provide more flexible replacement functions
      Add compatibility macro's for Tcl_WinUtfToTChar/Tcl_WinTCharToUtf
      Code cleanup for Tcl_WinUtfToTChar/Tcl_WinTCharToUtf. Tested with Tk now.
      Experiment: compile Tcl with C++ compiler. WIP
      Improvement: always export both 16-bit and 32-bit UTF function
      Fix UNIX/Mac build
      Undo changes in configure script: Since wchar_t is not used in Tcl yet (except in Windows), the -fshort-wchar option is not necessary
      Rename UTF-related functions to "WChar" and "Char16" variants, more intuitive because they represent wchar_t and char16_t (since C++11) types in modern compilers.
      wrong length in tclMain.c, and wrong #endif
      Protect Tcl_AToB() functions against NULL input
      Oops, wrong check
      Spread out definitions of Tcl_*WChar* functions over multiple lines, making it more readable.
      Use *WChar* in stead of *Char16* functions on Windows, always. It's actually the same, but more consistent.
      "utfmax" build should be with TCL_UTF_MAX=6
      Forgot some changes from tip-548
      default TCL_UTF_MAX should still be 3
      Tcl_UntraceVar() -> Tcl_UntraceVar2() and similar changes.
      Mark more unused parameters
      (experiment) Allow C++ symbols to be found in loaded extensions
      Handle "Unload" as well
      Bring back Tcl_UntraceVar
      interp is not dummy any-more
      Fix build with "cl" using configure/make build system. It turns out that using -DIOAPI_NO_64 is harmful on Windows (although it works with mingw-w64)
      Don't use -64 in travis titles any more: x64 is implicit if 32-bit is not explicitely mentioned.
      Fix Utf16ToUtfProc() (from TIP #548): If last code-point is higher surrogate, make sure that actual conversion is delayed until the next round, assuring proper merging of two surrogates into a single UTF-8 character.
      Move testgetencpath/testsetencpath test commands from UNIX-specific to general. Rewrite a few other commands (like "memory") to use the Tcl_Obj interface.
      Fix .travis.yml
      Make less dependent on UNICODE definition
      Add 3 more builds with Clang (UTF_MAX=6, UTF_MAX=3, NO_DEPRECATED).
      More Win32 API impovals.
      Use Tcl_WCharToUtfDString in stead of (deprecated) Tcl_WinTCharToUtf
      Fix correct export on win32 for TclZipfs_AppHook, when not building with -DUNICODE
      Deprecate mp_get_bit, mp_expt_d_ex, mp_toradix_n, mp_to_unsigned_bin, mp_to_unsigned_bin_n, because they are deprecated in libtommath 1.2.0 too.
      Fix breakage from previous commit (still one test-case, encoding-2.2, is failing)
      Fix possible gcc warnings. Also indicate dummy parameters as "dummy"
      Fix gcc warning, also introduced by [0f2870649c804dd8]
      Deprecate mp_unsigned_bin_size, mp_init_set_int, mp_set_int, which are deprecated in libtommath 1.2.0.
      Add support for libtommath's MP_WUR annotation to genStubs.tcl. Not enforced yet by the Tcl core, but extensions will encounter the libtommath warnings. Can be switched off.
      Reference registry 1.3.3 -> 1.3.4
      More code cleanup related to libtommath 1.2.0: Adapt naming of (internal) symbols to new conventions. Remove deprecated declarations which were never implemented/included by Tcl.
      Remove (temporaryly) tests/fileSystemEncoding.test, since the bug is not fixed yet on Windows
      Don't typedef mp_digit in tcl.h anymore, it is supposed to be brought in from tclTomMath.h.
      Combine TCL_DD_SHORTEN_FLAG and TCL_DD_SHORTEST to be the same flag (which it is .... actually)
      On Windows, use <stdint.h> header-file if available.
      WIP: Use unsigned int in stead of mp_digit in libtommath stub entries.
      More tweaks
      More tweaks, hopefully fixing the Travis build
      Fix generic\tclStubInit.c(139): warning C4098: 'TclBN_mp_set': 'void' function returning a value
      Add compat/stdint.h, upgrade to libtommath 1.2.0, adapt as much as possible accordingly (still WIP)
      More WIP: All makefile builds appear to work fine, makefile.vc build still to be done.
      Fix tclScan.c, not generating a string representation any more with unsigned wideints
      Move tclOOScript.tcl from the generic to the tools directory, so "make dist" can pick it up. Reported by Pietro Cerutti.
      Deprecate mp_div_3(): Will be private function in future libtommath, not used in Tcl.
      Fix travis build win32, 32-bit mingw
      Now that libtommath has mp_init_l/mp_init_ll/mp_init_ull, use those instead of the legacy TclBNInitBignumFromLong/TclBNInitBignumFromWideInt/TclBNInitBignumFromWideUInt
      try to install libtommath 1.2.0 through homebrew on MacOS
      Backout [b5c1404365f53fe0], removing TclFreeObj() is a step too far for 8.7
      Update makefile.vc and rules.vc for using libtommath.dll/zlib1.dll in stead of statically linking libtommath, whenever possible.
      Some code cleanup. Build with zlib dll on Win32 when using makefile.vc (shared-build only)
      Formatting
      Fix typo in tclTestObj.c
      Undo minor tweak, no longer necessary
      Tweak visibility of some libtommath symbols and add --with-system-libtommath configure option (as requested by Pietro Cerutti)
      Fix 2 version numbers in Makefile echo's (just misleading). Thanks to Pietro Cerutti for noticing this.
      Fix installation of cookiejar on UNIX, and add same pieces to windows as well. Also modify manifext.txt accordingly, for the zipfile vfs.
      Don't bother paths of 64-bit SDK any more: This was Visual Studio 2008-specific and doesn't work with other Visual Studio versions.
      Move check for stdbool.h from SC_MISSING_POSIX_HEADERS to SC_CONFIG_CFLAGS, since it's not POSIX.
      Minor tweak: Don't include the "dde" and "reg" directory in the zip-file on UNIX
      Another minor tweak: No need to include manifest.txt in the vfs zip-file, since it's renamed to pkgIndex.tcl
      (hopefully) fix installation on Windows
      Update "opt" from version 0.4.5 to 0.4.7, backported from Tcl 8.7a3.
      Enhance rules.vc like already done in other configure scripts: Determine HAVE_STDINT_H/HAVE_INTTYPES_H/HAVE_STDBOOL_H/MP_NO_STDINT the simple way, just by compiler version.
      Fix one failing testcase (thanks, Travis!)
      Add some new test-cases involving e.g. Unicode 11. Backported from Tcl 8.7a3
      Fix executable flag
      Fix make install on Ubuntu (and - most likely - other platforms)
      Eliminate unneccessary eol-spacing from documentation.
      More eol-spacing
      Renumber tcltest from 2.5.1 -> 2.5.2, already for next release.
      Eliminate excess eol-spacing
      Fix [a46a49b90f]: tests http-cookiejar-1.[12] fail
      If TCL_UTF_MAX>=4, make Tcl_ParseBackslash combine two surrogates so they appear as one 4-byte UTF-8 byte sequence from the start. Add test-case for this.
      Fix [3cd9bea1e6]: check-in [43032d7ba3] potential problems. Also don't allow surrogates in \U?????? syntax.
      Fix encoding-15.6 testacase for TCL_UTF_MAX=6, due to changes escape sequences for upper/lower surrogate combination.
      Add build using gcc and TCL_UTF_MAX=4 to Travis build. Not officially supported but used by Androwish. Remove "threads" designator on Windows, since it's already default.
      Use the right encoding when converting (Unicode) messages regarding socket errors on Windows. Some code cleanup in win/tclWinfile.c.
      Add builds using TCL_UTF_MAX=4 on Windows. Not officially supported, but used by Androwish. Also alphabetise some options in win/makefile.vc and win/rules.vc
      Fix some test-cases when Tcl is compiled with -DTCL_UTF_MAX=6. Not officially supported but used by Androwish. The test-cases prove that "unicode" should be UTF-16 actually for all TCL_UTF_MAX values.
      Unnecessary double ;; in tclTimer.c. Update compat/zlib to exactly the same content as in the core-8-branch branch.
      Exclude some test-cases with possible timing problems on Windows. Double ;; in generic/tclTimer.c
      Fix 2 test-cases, which were failing when TCL_UTF_MAX=6. Add UTF_MAX=6 UNIX build to Travis as proof that now all test-cases pass for UTF_MAX=6 (still not officially supported)
      Fix Valgrind problem reported as follow-up in [fc4393e9b0]. Since it happens only for TCL_UTF_MAX>3 it's not actully a 'bug' in 8.6, but it might be a corner-case not handled well in 8.7
      Add special handling of lower surrogate to UtfToUtfProc(), so valgrind should't complain in that situation. With new test-cases covering that.
      Fix [abd4abedd2]: Failed to build tk 8.6.10 with cross compile
      Attempt to fix [5f236bc67a]: valgrind report for Tcl_UniCharToUtf
      Undo accidental change in [343273c9de4fd4f1]
      Fix bug in tclEncoding.c, only manifesting in testcase encoding-15.4 for TCL_UTF_MAX=6. (knownBug, fixed now)
      Implement "panic" as described in the TIP
      Little doc tweak
      Update win/tcl.m4, for use with C++
      Add many missing constraints
      Add 3 (libtommath) functions to the stub table. Will be added to 8.7 too, through TIP #538
      Little code tweaks, regarding the use of TCL_UTF_MAX or wchar_t.
      Fix Travis build for MSVC Debug mode
      Optimize mp_mul for the case a==b
      Don't export mp_sqr() directly from libtcl
      One #undef too much
      Make win/configure work with CC=g++ (doesn't actually work with Tcl and Tk yet)
      Only use OPTS=msvcrt in combination with "static", otherwise it's a NOOP.  Disable pragma warning:C4146 (backported from 8.6), since it only gives misleading warnings.
      Better fix for [3390638]: making the intVal variable unsigned prevents the need for using sprintf() altogether.
      Put back 4 test-cases as they were in core-8-branch, but only for TCL_UTF_MAX=3
      Add type-cast, making sure that the unary minus is handled correctly on any compiler
      Update travis build fro xcode11 to xcode11.3 as highest platform
      Fix 2 unused arguments with USE_DTRACE
      Prevent double definition of MODULE_SCOPE on Darwin
      Minor optimization in TclFormatInt: No need to check for "0" as special value. No need to include final NULL-byte in character-reversion operation, as we already known the NULL-byte will come last.
      Workaround for [ce3b9f2b04]: compilation errors with clang (windows msys2)
      Fix for building Cygwin using Clang.
      Put our own included (-I) directories before directories coming in though CFLAGS, so building with external libraries (like libtommath) doesn't possibly corrupt our own build. Reported by Pietro Cerutti
      Make definition of struct mp_int EXACTLY the same as the one in the (modified) tommath.h
      More progress in making clang build on Cygwin warning-free
      Attempt to improve support for external libtommath
      Add FALLTHRU markers, eliminating gcc warning using -Wextra
      Don't assume/set LDFLAGS being "", it could be set on the "configure" command-line.
      (cherry-pick): Fix issue [9128866ec8448752] by adding Line Feed character to tis-620.enc.
      Fix typo: "==" -> "="
      Fix test encoding-28.0, adapting for the correct number of available encodings
      Remove type-casts in many Tcl_LinkVar() calls, which is no longer necessary since 8.7.
      One more place where the (deprecated) "unicode" encoding was still used.
      Some eol whitespace eliminations
      Don't use "operator" as variable name, as it is a keyword in C++.
      Code cleanup (mostly comments, backported from 8.6).
      Start handling WUR (Warn Unused Result) in all tommath calls. WIP, not complete yet.
      Put "-ltommath" in $MATH_LIBS in stead of $LIBS, so it won't be used by other checks in the configure script. Suggested by Pietro Cerutti.
      tommath_private.h : Remove special C4146 handling: already done in tclWinPort.h too.
      Silence some gcc-9 compiler warnings.
      Fix [0b9332722a]: Support utf-8 on Windows console
      Add ${LDFLAGS} to MAKE_LIB. This handles the possibility of adding LDFLAGS=?? on the "configure" commandline. Suggested by Pietro Cerutti. Thanks!
      Fix [cff53cf7d0]: Failed test oo-0.9 in file oo.test in Tcl8.6.10
      Attempt to resolve a conflict between (unmodified) tommath.h and tcl.h in the definition of mp_int. See: [https://github.com/libtom/libtommath/pull/473]
      A few more "break" statements, so any compiler knows these are no FALLTHROUGH situations.
      A few more "break" statements, so any compiler knows these are no FALLTHROUGH situations.
      Proposed fix for [8cd2fe7474]: "unload" command Bug (when handling multiple libs)
      Fix [8cd2fe7474]: "unload" command Bug (when handling multiple libs)
      Don't deprecate Tcl_NewUnicodeObj/Tcl_SetUnicodeObj/Tcl_GetUnicodeFromObj, since that's not according to TIP #542. (Those are only deprecated when using TCL_UTF_MAX=4, not in the general case)
      Now that TIP #538 is integrated, make rules.vc work for both 8.6 and 8.7 without changes.
      Don't run stack-3.1 test on OSX, it fail regulary. Don't really bother for Tcl 8.5 any more.
      Last unused internal stub entry from 258 to 259.
      Better error-handling in some libtommath calls.
      TIP #559 follow-up: Make sure that if Tcl_FreeResult() is used in an extension compiled with -DTCL_NO_DEPRECATED, this results in a link error.
      Fix install-libraries-zipfs-static target: On Windows INSTALL_DATA makes no sense. Reported by René Zaumseil. Thanks!
      Fix compiler warnings on Cygwin when using -DTCL_NO_DEPRECATED
      Deprecate channel types 1-4
      According to the [https://core.tcl-lang.org/tcl/artifact?udc=1&ln=469-471&name=5ac7827cd282bbda|documentation], close2Proc(...., 0) should operate the same as closeProc(). Fix the UNIX/Windows socket channels to behave like that.
      Simplify the use of HaveVersion() in Channel handling. Nothing functional, only code clean-up.
      Reset WSAGetLastError()/errno always, even when this error is not reported due to the earlier error.
      Add 64-bit seek to the ZipChannel
      Make Tcl_ChannelCloseProc() deprecated too. Implement close2Proc and wideSeekProc for all internal channel types.
      TclInitBignumFromWide(U)Int is not used any more.
      Oopsee
      It appears that inttypes.h was introduced in Visual Studio 2013
      Clean up some usage of DBGX: It isn't used any more on UNIX
      (cherry-pick): It appears that inttypes.h was introduced in Visual Studio 2013
      Update all tables to [http://unicode.org/versions/Unicode13.0.0/|Unicode 13] (to be released March 10, 2020)
      Attempt to fix travis build. See: [https://travis-ci.community/t/vcvarsall-bat-freezes-on-new-1809-based-windows-images/7098]
      Move build from xenial to bionic. Add Xcode11.3 build for MacOS (now that we are on it anyway)
      (cherry-pick): Fix travis build, due to the change of Windows image.
      Restore compatibility with older (mingw) Makefiles. Fix for [4b5deacc70]: undefined reference to `Tcl_SetStartupScript'.
      Fix [da235271f1]: [info hostname] on Windows is limited to max NetBIOS name length
      Add  -Wpointer-arith warning to C-compile. Fix gcc(-9) warning.
      Correct ANSI prototype of TclNokia770Doubles()
      Make tclWinDde.c compilable with C++ compiler. dde -> 1.4.3
      Resolve a number of shadowed variables (discovered by compiling with -Wshadow)
      Minor TIP #562 fix: Missing #endif, results in (harmless) compiler warning when compiling with -DTCL_NO_DEPRECATED.
      Better error-message in case of "index out of range", mentioning the actual index which was out of range. Also, use the same error-code, because the underlying cause is all the same.
      Don't generate "deprecated" warning for Tcl_Close(), since only the stub entry is deprecated. Will be replaced by macro.
      Implement WideSeekProc() for all channels which have a SeekProc(). Implement Close2Proc() for all channels, as minimal wrapper around CloseProc().
      Fix some gcc(-9) warnings caused by -Wcast-function-type
      Some more gcc(-9) warnings
      Move setting of interpreter error-message from tclUnixSock.c to tclIO.c, since the same should be done for all channel types. (Thanks, Don, for noticing this!)
      Change (interal) function signature of TclpAlloc/TclpRealloc/TclpFree, using (void *) in stead of (char *)
      Move TCL_UNUSED to tclInt.h, so we can still deprecate JOIN()
      Use more uppercase hex (e.g. 0xFF) in stead of lowercase (0xff) consistantly.
      Fix Windows build, broken by [d5175f6050e308f4]
      reformat assemble-15.* test-cases
      Convert many test-cases to modern test syntax
      Fix one wrong type-cast (only causing warning, nothing serious)
      Make ourEnviron type (techar **) not (char **), so we need less type-casts.
      Add one more reserved stub entry, most likely will be Tcl_GetBytesFromObj() in Tcl 8.7.
      Unicode 13 has a new range of characters from 0x30000 to 0x3134A, so generate those in the tables too.
      More uppercase HEX representations in source-code.
      Resolve gcc compiler warnings, only on 32-bit builds (gcc-7)
      Even more uppercase HEX representations in source-code
      Fill UNIX TclIntPlatDecls stub entries 15 up to 19 and 22 with same functions as for win32. Not used in 8.6 yet.
      MacOS: Make Tcl_MacOSXOpenBundleResources() a macro calling Tcl_MacOSXOpenVersionedBundleResources: One more stub entry which can be removed in Tcl 9.0
      Spurious test-failure on Travis OSX
      Follow-up to [a9f61c48906b66f8]: Fill UNIX TclIntPlatDecls stub entry 5 with same entry from win32. Can be simplified further in 8.7/9.0.
      Little typo
      Fix [767e070d35]: Tcl_GetRange and Tcl_GetUniChar do not validate index inputs
      Fix harmless gcc warning, when compiling on Linux
      Looks like this little hack is no longer necessary on current 32-bit Cygwin.
      tcltest.tcl: Only adapt "filesMade" variable if the file to be removed is actually found.
      Optimize TclStringFirst/TclStringLast: Let it return a Tcl_Obj * in stead of an int, so its callers don't need to do the conversion any more.
      genStubs.tcl: Only do an "append line" when there really is something to be done.
      Initialize Tcl_UniChar's, in case we are handling surrogates (however unlikely).
      Remove MODULE_SCOPE function TclpSetInterfaces(), which is just empty.
      Other suggested solution for [b8e82d293b]
      Fix (harmess) gcc warning, noted on Ubuntu
      Fix [828dda049b]: Memory faults post-TIP 557
      Fix a few warning-message in --enable-symbols-mem mode
      Add enable-symbols=mem builds to Travis
      More Mem-Debug builds, using MSVC.
      Remove variable "properByteArrayType" from tclTest.c, because it isn't used any more.
      Update xcode 8 -> 8.3 and 9 -> 9.2 for Travis build. Install latest libtommath homebrew package without hack, this time.
      Make sure that "Windows NT" is the only supported Windows platform. On Windows CE, no chance that Tcl 8.6 will ever run .... Windows XP is the minimum now.
      Simplify implementation of TclUtfToUCS4: The #undefined Tcl_UtfToUniChar() already does everything for use here (Unlike in Tcl 8.6, with has to live without TIP #542)
      Revert test-case utf-4.10 change from previous commit: It caused the Travis build failure.
      Partial fix for [31aa44375de2c87e]: Tcl_NumUtfChars regression in default 8.6 build.
      Better use public function Tcl_GetIntForIndex() in stead of private one.
      Make Tcl_UtfCharComplete() usable for both Tcl_UtfToUniChar() and Tcl_UtfToChar16(). Defect noticed by Don Porter. Thanks!
      Fix [dd010cadfb]: [string trim] mishandles surrogates
      Add two test-cases, regarding expectations on Tcl_UtfCharComplete()/Tcl_UtfToUniChar(). Backported from 8.7, let's keep numbering the same everywhere
      Teach "split", "string wordstart" and "string wordend" how to handle Unicode characters >\uFFFF, using the new utility function TclUtfToUCS4(). (Thanks, Don!). Add test-cases to prove it.
      In TCL_UTF_MAX=4 mode, string lengths are quitely different.
      Since Tcl_UtfCharComplete() now guarantees that at least 3 more bytes are available for header bytes 0x80-0xBF, check those 3 bytes first in Tcl_UtfToUniChar() before doing other checks (that might point to uninitialized memory in non-confirming extensions)
      Introduce MODULE_INSTALL_DIR in make/nmake files, for compiling Tcl. Less use of ".." in the makefiles.
      re-generate UNIX configure script
      Fix determination of TCL_PACKAGE_PATH if it contains multiple directories, and at least one of them contains a space.
      Only set MODULE_INSTALL_DIR once in UNIX makefile ....
      Let's test if "make install" works, for now without spaces in the path
      Fix unit-test, change expectations according to current 8.6 branch (not handling [1b1f5f0b53] yet, doing that in separate branch)
      Backport test-cases from 8.6
      Don't use 'identiy' encoding in test-cases any more!
      Add missing testConstraint definition
      Fix windows build (with older compilers)
      Backport encoding-15.3 test-case from 8.7, together with missing "teststringbytes" command: Usefull for testing byte strings without the need for the "identity" encoding
      Missing .$noComp in string-20.8 test-case, we don't want duplicate test-case numbers.
      Try adding some quotes
      More double-quotes
      Update latest Xcode from 11.3 to 11.4
      New test command "testutfnext", not used yet in actual test-cases. Being merged up to higher branches. (Thanks, Don!)
      Use TclGetBytesFromObj() in testcases in stead of Tcl_GetByteArrayFromObj(), since we only want to handle proper bytearrays.
      Add (internal) stub entries for TclRegisterLiteral and TclStaticPackage. Not used in any test-cases yet, but could be used in extensions for testing. Backported from 8.6.
      Add "knownBug" testcase, showing a situation in which Tcl_UtfNext doesn't behave as described in the documentation
      Fix more test-cases for TCL_UTF_MAX=3
      Fix build for TCL_UTF_MAX=4.  Mark some failing tests with "knownBug". Those still need to be fixed!
      More test-cases
      Fix implementation of Tcl_UtfAtIndex() for TCL_UTF_MAX=6  (There's no test-case for this in the core-8-6-branch, but there is in core-8-branch).
      Add test-case for Tcl_UtfNext/Tcl_UtfPrev. About 15 of them give the wrong answer, but - at least - this way we record the current state, to be compared with the new implementation coming soon.
      Clean-up some unnecessary spacing.
      Unbreak shared windows build. Remove some ARGSUSED usage.
      Add mem-debug build to Travis. Update Xcode from 8 to 8.3, 9 to 9.2 and 11.3 to 11.4
      Update documentation of Tcl_UtfPrev/Tcl_UtfNext back to how it was. Will be updated later, when implementation is ready and agreed upon.
      Fix [c574e50a3b30e76f]: CRASH: utf-2.[89] in 8.5 built with TCL_UTF_MAX=4
      Clean-up testcases: Constant use of uppercase in hex-values. Use "testbytestring" in stead of "bytestring". Mark tests not working with TCL_UTF_MAX>3 with "compat85"
      More test-case cleanup
      4 more testcases, which could detect future regressions in Emoji handling
      Proposed fix for [27944a3661]: Taming test utf-6.88.
      More test-cases. Fix wrong quoting in testcase utf-10.5
      Move the needed apt package in .travis.yml to the top, so they can be shared between the images.
      Code cleanup (more typecasts), making it more compatible with -Wc++-compat. Less use of /* ARGUSED */.
      (cherry-pick): Proposed fix for [27944a3661]: Taming test utf-6.88.
      Proposed fix for [c11e0c5ce4]: Regression in Tcl_UtfCharComplete.
      Add test-cases handling TclGetBytesFromObj()   ( actually Tcl_UtfToUniChar too)
      Teach Tcl_UtfPrev() that 0xC1 is _always_ an invallid byte. Test-case utf-7.34.
      Add more test-cases for TCL_UTF_MAX>3
      Wrong indent in comment
      More test cleanup
      Fix corner-case in TIP #542 implementation: For extensions compiled with TCL_UTF_MAX=4 while Tcl is built with TCL_UTF_MAX=3, Tcl_UtfCharComplete() might give the wrong result.
      Improve the "testutfnext" command. It can now accept both bytes and strings, and it will test whether src[-1] is read without needing test-variations for it.
      Improved "testutfnext" command
      Determine "testConstraint ucs2" without the need for a testcommand. Rename "compat85" testConstraint to "ucs2", because that's what it actually is.
      Attempt to fix [1004065] for TCL_UTF_MAX=4. Disallow building Tcl with TCL_UTF_MAX>4
      Oopsee (but not really crucial)
      Another ucs2 testContraint no longer used
      (cherry-pick): Update documentation of Tcl_UtfPrev/Tcl_UtfNext back to how it was. Will be updated later, when implementation is ready and agreed upon.
      Testcase cleanup
      Testcase cleanup
      Fix TclUtfNext() macro. Use it in tclTest.c, so such a mistake can be detected next time.
      Fix regression in Tcl_NumUtfChars, caused by this commit: [6596c4af31e29b5d]. Expectations of failing tests was adapted later, that's why this was missed.
      Revert change in ParseLexeme() too
      Fix GCC warning in MemDebug mode: format not a string literal and no format arguments [-Wformat-security]
      Add protections against overflow in Unicode values. Backported from 8.6. Also remove some out-of-date comments.
      Missing '0'
      Make (unsupported) 'U' regex escaping work again.
      Fix [cc4d805771]: reg-13.17.error fails in 8.5 tip
      Backout [ 649f53b9f4]: This was not meant for 8.6
      Quickfix to Tcl_NumUtfChars(). Barely used in Tcl core. Still needs a better look.
      Found problem with utf-6.125/6.126: argument -bytestring was missing in test
      encoding-12.6 only works for "ucs2" for now. Don't use (deprecated) INLINE and CONST
      Make reg-13.33/reg-13.34 work again. Still have to investigate what's the problem.
      Undo last change in regc_lex.c: It doesn't do the expected thing when TCL_UTF_MAX>3. More work needed
      Add 6 "ucs2" markers. The first 4 of them are not bugs: They show that Tcl_UtfComplete() cannot be
      Cherry-pick Tcl_UniCharAtIndex() implementation from [6596c4af31], but adapted to the needs of TIPs 389/542.
      Backport parsing of surrogate-pair change from 8.6 (only for TCL_UTF_MAX=4)
      Bring forward test-cases utf-6.94 and utf-6.95 from Tcl 8.6 (higher ones have no value IMHO, but those 2 have!)
      Extend "testutfnext" test-command such that it can detect when it reads more bytes than the end of the string.
      Better structurize the UTF-8 (mainly around Tcl_UtfNext()/Tcl_UtfPrev(), but not only those) test-cases:
      Add UNICODE_OUT_OF_RANGE() calls to UCS4ToTitle() and friends. Backported from 8.7. This fixes [69634d51fb]: handling out of range UCS4 values (at least, it's fixed in 8.6 now the same way as it's fixed in 8.7).
      Backport many UNICODE_OUT_OF_RANGE() calls. This should fix [69634d51fb74551b] for Tcl 8.5 (with TCL_UTF_MAX=4) too. Also fix some comments which were not up to date.
      Remove X attribute from .gitignore and .gitattributes
      Remove unnecessary quoting in test-cases. Add some more tests for toupper/tolower/totitle
      Renumber test-cases
      Partial fix for [ed29806ba]: Tcl_UtfToUniChar reads more than TCL_UTF_MAX bytes.
      Let's not get out the src[3] check yet.
      New encoding-15.16 test-case. Fix title of utf 2 test-cases.
      First, prove that bug [ed29806baf] is present in 8.7 too. Let's see what test-cases fail when we no longer check the validity of the 3th trail byte.
      Fix [ed29806baf] by introducing TclUCS4Complete(). All other calls of Tcl_UtfToUniChar() are suspicious, because those cannot handle 4-byte UTF-8 sequences reliable.
      Never mind remark about TIP #573 in previous commit: Test failure was due to typo. Fixed now.
      More fixes for [ed29806baf]. Not working yet. WIP
      Seems almost correct. Still problem with "string index" for TCL_UTF_MAX>3
      Join test-cases utf-6.93.0 and utf-6.93.1, which MUST give the same answer always for whatever testConstraints.
      Re-join utf-6.93.0 and utf-6.93.1 (please disregard comment in previous commit, it was not correct).
      (partial) fix for [9d0cb35bb2]: Various issues with core-8-6-branch, TCL_UTF_MAX=4. (even though TCL_UTF_MAX=4 is unsupported, it would be nice to make it work)
      Test-case cleanup. Increase timeout a little bit in main.test, making Travis build errors because of this less likely.
      New internal function TclGetUCS4() only available when TCL_UTF_MAX=4. This fixes all "knownBug" testcases related to tip389.
      More progress/simplification
      Properly protect "Invalid" function against lead bytes 0x80-0xBF. This fixes "knownBug" testcase utf-6.93.1.
      One more tip389 selector
      Fix Tcl_UtfPrev() such that it can never go back more than TCL_UTF_MAX bytes. Already done correctly on core-8-6-branch, but this was never forwarded to core-8-branch.
      Add 4 test-cases that could fool Tcl_UtfPrev (but ... actually they don't).
      Remove PROTO_FLAGS support from the Makefile, since it isn't used anywhere any more.
      More usage of TclUtfToUCS4(), so we can use the whole Unicode range better in TCL_UTF_MAX>3 builds.
      Remove PROTO_FLAGS here too
      3 testcases don't need pairsTo4bytes, fullutf is enough, since the dubble-surrogate-backslash syntac has no relation to the internal byte format.
      Change Invalid() parameter type to "const char *".  Also call Invalid() first in Tcl_UtfNext(), so if src[1] is invalid src[2] doesn't need to be checked any more.
      Backport testutfprev/testutfnex testcase improvements from 8.7. This makes testdescriptions/testresults more equal among branches, so the real differences are more visible.
      Tighten optimization in Tcl_UtfToUniCharDString(), just as in Tcl_NumUtfChars(). Don't use "-1" in the Tcl_NumUtfChars() calculation, since that raises more questions than it solves, but that's easy to be remedied as well: Juse use >= in stead of > in the comparation. Great idea, Don!
      Fix [fad64a857e76f98e]:  "lsearch" provides wrong errorCode with bad -stride option
      For TCL_UTF_MAX==4: Make sure that Tcl_UtfNext()/Tcl_UtfPrev() never move more than 3 bytes. This is more consistant with what Tcl 8.7 does too.
      Simplify test-cases which don't need the "testbytestring" command to run without it. e.g. [testbytestring \xC2\xA2] is the same as just \xA2.
      Change order of some testcases, matching 8.6
      More testcases that can run without "testbytestring" constraints.
      More test-case cleanup. Enhance "testutfnext", so it can detect whether bytes after the string-end are read. The command will return -1 in that case. No need for additional arguments any more.
      Tweak Invalid() function: No need for "return 0" twice in the function.
      Demonstration for documentation bug, and suggestion for improved wording. More explanation will follow in the ticket.
      occurance -> occurrence.
      Tweak the Tcl_UtfPrev() implementation for TCL_UTF_MAX=4. This fixes 10 testcases in 4 groups (utf-7.10, utf-7.15, utf-7.40 and utf-7.48) , where Tcl_UtfPrev() didn't jump to the beginning of the UTF-8 character, even though there was no limitation which prevented that. So, this is actually a bug-fix for the TIP #389 implementation.
      Fix [d402ffe76]: Win32 potential crash when using main(). Thanks to Christian Werner for the Bug report and the Fix.
      Fix "knownBug" utf-4.11.  Turns out a few other testcases where still not correct, now they are. Make next/prev behavior the same for all TCL_UTF_MAX values, since the exact behavior for TCL_UTF_MAX>3 should be worked out further for Tcl 8.7 first, then everything agreed upon can be backported.
      Unsplit some test-cases and renumber, for testcase which give the same results for different TCL_UTF_MAX values.
      Revert implementation of Tcl_UniCharAtIndex() change done in this commit: [6596c4af31e29b5d]. Just look at the Tcl_UtfAtIndex() implementation for TCL_UTF_MAX=4: It's not the same.
      One Tcl_UtfPrev() -> TclUtfPrev() change. Just a little bit cheaper.
      In some places, Tcl_UtfPrev()/Tcl_UtfNext() is used traversing the individual bytes of a string searching for '(', ')', '::' or other single bytes. It is overkill to use Tcl_UtfPrev/Tcl_UtfNext for that, since those characters can only appear as their ASCII byte, not as any other sequence.
      Testcase cleanup: Sync with testcases in core-8-6-branch
      Tiny fix for TCL_UTF_MAX=4 build only: Since Tcl_UtfNext() verifies 4 bytes for lead bytes F0-F5, Tcl_UtfCharComplete() should guarantee that those 4 bytes are available, not 3.
      Update from Xcode 11.4 to 11.5: Latest one should continue to work always.
      Fix compiled "string is <class>" for TCL_UTF_MAX=4 build, for characters > U+FFFF.
      Proposed soution for [a1bd37b719]: clock (free)scan of ISO 8601 timestamp with literal T behaves strange
      clock-iso-2.patch
      (cherry-pick): Update TZ info to tzdata2020a.
      Not really a problem, since SHLIB_CFLAGS is empty on win32 .... still this is wrong...
      rules.vc: No need to redefine values which are already the default. tclWinPort.h: Fix comment
      sync zlib's crypt.h with version in Tcl 8.7
      Clearify documentation regarding [a7c1c2c7e5]
      Make sure that files like _FOSSIL_ or .flsckout are never committed to a GIT repository
      library/reg/pkgIndex.tcl should not be executable
      Change all *.sln to CRLF format, so they are directly usable in Visual Studio projects
      Remove .fossil-settings/crnl-glob, as it is not used in fossil any more.
      Backport some changes in tclGetDate.y from 8.7.
      re-generate with bison 3.1
      avoid %pure-parser deprecation warning from Bison 3.4
      Add "manifest.uuid" to the distribution, so we can see exactly where "make dist" came from. In case of "git", we can see that too
      Fix [9080d6a871]: Build fix for tcl on macOS on Apple Silicon
      re-generate unix/configure
      One include too much
      Clean-up compat functions, not using "register" any more, and fix some signatures (constify) matching nowadays standards. All backported from core-8-branch with modifications.
      Add "make dist" target to Travis build, as regression test. This should continue to work.
      MacOSX: add some type-casts, improving C++ compatibility. Make sure that strstr and strtoul() are not configured as invalid: Mac is more strict in exact function signatures. Backported from 8.7
      Re-generate unix/tclConfig.h.in
      A few missing entries in .fossil-settings/ignore-glob and .gitignore
      In tcl_startOfPreviousWord, don't bother doing a regexp when $start <= 0.
      Make sure that in tclConfig.sh for Windows ${DBGX} is expanded before exporting TCL_(SHARED|UNSHARED|EXPORT)_LIB_SUFFIX there. Otherwise extensions removing ${DBGX} from their implementation (see TIP #578) will break on Windows.
      Proposed fix for [5019748c73]: FreeScan resp. Oldscan does not recognize positive time zone offset like "31 Jan 14 23:59:59 +0100"
      First bunch of changes. Please review!
      Addendum to  [60fab362ce]: "Also don't allow surrogates in \U??????".  This change was only meant for builds with TCL_UTF_MAX > 3.
      Fix utf-1.13 testcase for TCL_UTF_MAX>3
      Fix test-cases clock-34.65 and clock-34.66, they seem to be affected by summertime
      Fix 4 test-cases, which fail when running from the western hemisphere
      (cherry-pick): Bugfix in library/tm.tcl - in a safe interp ::tcl::tm::UnknownHandler should always use the freshest "package ifneeded"
      Rename doc/CrtSlave.3 to doc/CrtAlias.3. Some more doc tweaks.
      Fix [5bbd044812]: Fix index underflow.
      New TIP #581 implementation
      Doc/internal variable tweaks
      Backport changes in tcltest package from higher Tcl versions.
      Use "Global" in stead of "Master" internally, where "Master" is not used in the Master-Slave paradigm and where this makes sense.
      Mark chan-io-50.? and event-1.1 as nonPortable (for now): Those sometimes fail in the Travis environment, but in practice this doesn't seem to be a real problem.
      Re-enable event-1.1, io-50.? and chan-io-50.? test-cases, trying to get a hand at the problem [f586089a2b]
      Convert test-cases to do proper setup/cleanup
      Fix [20dccf1200]: htons-related test fails on Mac OSX Catalina (10.15)
      Testcase cleanup: transform *io-50.* testcases to new test syntax
      doc fix
      Remove use of (always enabled) "openpipe" constraint.
      Eliminate many unnecessary type-casts, mostly (size_t) when value is already size_t or int
      Code cleanup: less of use "register" keyword, and better use of typecasts
      Revert unintended ckalloc -> Tcl_Alloc change from previous commit
      Update .travis.yml: remove deprecated "sudo" and rename "matrix" to "jobs"
      Fix value of CMD_DEAD flag
      Fix [e87000d8425ab86a]: crash for "fconfigure stdout" in Win32.
      Testcase event-1.1 (still) fails occasionally on macOS
      Upgrade Travis build from bionic to focal
      Backport improvemenets in .gitignore .fossil-settings/ignore-glob and win/nmakehlp.c
      Keep gcc-5 and gcc-6 builds on "bionic", because "focal" doesn't have these
      Testcase chan-io-50.1 still fails sometimes on MacOSX. So put same measures in place as in io-50.1. See: [f586089a2b]
      opt package: Change comment. 0.4.7 -> 0.4.8.
      Eliminate eol-spacing
      Many more internal master/slave -> parent/child renamings
      Upgrade Travis build from xcode 11.5 to 11.7
      TIP #581: Mainly documentation and some testcases
      Let all test-cases load the "tcltest" package the same way. Depend on tcltest 2.5, since we never test with earlier tcltest versions
      TIP #581: Last possible master/slave -> parent/child changes, without affecting anything serious
      Backport genStubs.tcl from 8.7. This adds support for MP_WUR, not actually used by Tcl. But could be used in (libtommath-related) extensions
      Fix "make install" on MacOSX: interp: make-manpage-section: ignoring .VS "TIP 581" after .TP
      Rename safe-stock86.test to safe-stock.test
      Don't use sizeof() for structs containing a flexible array as last element. Lesson from [https://core.tcl-lang.org/tk/info/3bc0f44ef3|3bc0f44ef3]. Use TclOffset in stead.
      Use $index<0 in stead of $index==-1 consistantly
      Fix [https://core.tcl-lang.org/tk/tktview?name=3bc0f44ef3|3bc0f44ef3]: UBSan complains about body.chars[] usage.
      Folow-up to previous commit: ExecStack is a FLEXARRAY too
      Prevent the usage of the term safe/unsafe child. Suggested by Keith Nash. Thanks!
      Eliminate many "register" keywords (which do nothing with modern compilers)
      Add .bmp to .gitattributes. Simplify .fossil-settings/binary-glob
      Unbreak winFCmd-1.38 testcase on Windows
      Proposed solution for [835c93c000]: TIP #525 only implemented for non-singleproc case
      Tcl 8.6 should not be tested with "package prefer latest" any more: All included packages are supposed to be stable. Not to be merged to 8.7 (which still contains unstable packages)
      Backport many (formatting) changes in tools/*. Nothing functional.
      Improve TclInvalidateStringRep() macro such that (objPtr) is only evaluated once. Addation brackets in TclHasStringRep() macro
      Let's see if we can recover from an occasional hickup like happened here: [https://travis-ci.org/github/tcltk/tcl/jobs/729226819]
      Add gcc-10 build to Travis
      When sourcing script files (even when simulating that through open|read), always set -eofchar \032 just like the source command does.
      It's "utf-8", not "utf8" or "UTF8"
      Build Travis with Xcode 12 and 12u (Universal Apps)
      Tweak xcode labels for Travis build
      Make Tcl compile warning-free using -Wshadow
      Update internal zlib channel type from TCL_CHANNEL_VERSION_3 to TCL_CHANNEL_VERSION_5. Not actually a change, since supported procs are the same. So all internal channels have the same type
      (slightly) better error-message for invalid http -headers option. This works for plain 8.6 too
      (cherry-pick): HAVE_TM_GMTOFF detection doesn't work if CFLAGS contains -Werror. Here's the fix.
      xcode12 -> xcode12.2.  Prevent build warning about generic/tclStubInit.c
      Fix [014ade1d44]: Misleading error message when using "-path" multiple times with "glob"
      Eliminate warnings when compiling with -Wundef
      (cherry-pick): Fix [014ade1d44]: Misleading error message when using "-path" multiple times with "glob".
      Fix warning, doing a static build on Windows
      More usage of TclNewObj() in stead of Tcl_NewObj() and TclNewIntObj() in stead of Tcl_NewIntObj()
      Something strange going on on Travis with (long-gone) safe-stock86.test
      Fix [53d5155335]: Typo in interp.n
      Remove use of CFG_ENCODING from rules.vc/makefile.vc: It will become obsolete with TIP #587. In stead, move the default handling to tclPkgConfig.c for now
      Still troubles with GIT on Travis
      Fix [cb458261c3]: Strip comme il faut (without really doing 'il faut' ....). Update 'install-sh' to latest upstream version, but re-add this commit: [b269db5d3e97b67c]
      Improve comment in install-sh, regarding Tcl-specific change
      Fix [c975939973]: Usage of gnu_printf in latest mingw-w64
      (cherry-pick): Fix [c975939973]: Usage of gnu_printf in latest mingw-w64.
      Fix warning: /home/jboss/workspace/tcl8.7/generic/tclIO.c:9997:27: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
      Fix [48898ab5f6a0d957]: Too few is better than not enough? (Inconsistent error messages)
      Revert changes in previous commit to clock.n and lassign.n
      Slight tweak to previous commit: Move definition of __USE_MINGW_ANSI_STDIO to the Makefile
      Fix implib filenames (adapted from Mingw2's 006-proper-implib-name.mingw.patch)
      Update TZ info to tzdata2020d.
      3 new testcases
      Add "{}" around many "expr" commands in testcases. Also in doc/expr.n
      Simplify testcases using "incr"
      Correct casing of "packageName" argument in Tcl_StaticPackage() call and "load" command (which - actually - is not a packageName at all ...)
      Add MSVC "StaticPackage" build to travis. Fix another bug in winDde.test which didn't account for statically loaded dde package.
      Backport [fc1e203728]: backout e56a9f214a. If it was wrong in core-8-branch, it's wrong here too.
      Enhance misleading test-case utf-6.23 with better diagnostics: Byte 0xE8 is the start of a 3-byte UTF-8 sequence, so Tcl_UtfNext is expected to read next byte and see if it is a continuation byte.
      Fix 2 testcases which failed when compiled with TCL_UTF_MAX>3
      Extend tcltk-man2html-utils.tcl, so it can handle the TIP #588 man-page. Also fix 2 (minor) syntax errors in man-pages
      Extend tcltk-man2html-utils.tcl: Add euro-sign too
      Generated html still not 100% correct ....
      Extend tcltk-man2html-utils.tcl a little more: Allow original AT&T syntax for more accented characters, and add support for some ligatures. Use this in re_syntax.n
      Add github actions build. Use Titlecase in Tcl_StaticPackage
      Enhance misleading test-case utf-6.23 with better diagnostics: Byte 0xE8 is the start of a 3-byte UTF-8 sequence, so Tcl_UtfNext is expected to read next byte and see if it is a continuation byte
      Handle github actions test failures. Backported from 8.6
      Use '&' in stead of 'and' in copyright statements consistantly
      shorten github actions build name
      Add a --disable-shared build to github actions
      Don't use "Copyright &lt;year> _by_" any more. This results in more consistant copyright statements in the (html) documentation
      Slightly friendlier "jobs" labels. Fix exact OS (Linux/Mac/Windows) we want to build on, not just "latest"
      Get rid of "register" keyword, forbidden in c++20.
      Fix winFCmd testcase. Add --disable-shared and TCL_UTF_MAX=4 builds to github actions
      label change in win-build.yml
      Cherry-pick part of "msys2-fixes_v001" branch: build/test fixes for msys2
      Update README.md
      Fix [b6a7fc9243]. Also add (back) \*(qo, which might be used in older man-pages
      doc update: 16-bit DOS appllications are not supported any more.
      Minor fixes + copy editing :). See [https://github.com/tcltk/tcl/pull/8]
      Missing '_' in unix/tcl.m4 (Only relevant for mingw)
      Handle 5 test-failures on Cygwin/Msys
      Remove redunant piece of SC_ENABLE_SHARED: The AC_ARG_ENABLE already generates this part, resulting in duplicate code in the "configure" script
      Do 4 types of windows builds (just as we did on Travis)
      Add options to workflow step titles
      Fix linker message on windows: LINK : warming LNK4108: /ALIGN specified without /DRIVER; image may not run.
      Don't use -opt:nowin98 linker option any more. See: [https://bugzilla.mozilla.org/show_bug.cgi?id=130372]
      Extend "platform" package for msys2 -> platform 1.0.15
      Fix syntax error in win/makefile.vc
      Use 0o??? notation for octal numbers in tools and testcases in stead of 0???. Although it still works in 8.6, it is deprecated an will be removed in 9.0.
      two more 0o??? notations
      Fix 4 socket testcases on Msys (those fail on Cygwin too)
      TclWordEnd was removed in 8.1, so those testcases cannot be run anymore
      Backport "tcltest" package from 8.7. No changes when running on 8.5 or 8.6
      rules.vc: Make sure that 3th "load" argument is titlecased in pkgIndex.tcl
      sync win/rules.vc with Tcl 8.7. No change for 8.6
      Use more 0o??? syntax for octal. Clean up build *.yml files
      RFE 548cd945d6: symlinks for Windows 10
      Potential fix for [ed5be77734]: win: "comx:" not recognized as serial port.
      Tweak: account for terminating '\0'
      Update "platform" package to handle Big Sur version numbering. Also remove special case for cygwin/msys2, just make it more generic
      Update "platform" package for Big Sur:
      make dist
      Fix [fe57ad096d97623e]: Fix test http-4.14 for tcl-8.6.11rc0
      Fix [cb4d185ea57b8966]: Fix tests safe-* for tcl-8.6.11rc0
      Fix C:\test\tcl8.6.11_rc0\win\..\generic\tclStubInit.c(107) : warning C4761:
      Protect fCmd-28.8 with constaint win10
      [testConstraint winVista] should be true on Windows 10 too
      Add .travis.yml and .github/worksflows to "make dist"
      Fix [ea8cd4789c]: Tcl 8.6.11 does not compile with VisualStudio 2010. Thanks Paul!
      Update all configure-related stuff to work with autoconf-2.70 too. For now, everything still generated with (modified) autoconf-2.59
      Fix testcase for [548cd945d6]: Consistant error-code if creating link fails on all platforms. On Win10 disable the testcase, because latest Win10 in "Developer Mode" _can_ create symbolic links to files.
      (cherry-pick): Repair flaws exposed by debugging test run.
      Missing constraint, in case we are running on Windows 10 in developer mode
      (cherry-pick): Update TZ info to tzdata2020e
      More progress in autoconf-2.70 compatibility. Not to be merged to 8.6 yet!
      Convert AC_TRY_COMPILE (which is obsolete now) to AC_COMPILE_IFELSE/AC_LANG_PROGRAM. This still works with autoconf-2.59 too.
      Fix check for broken strstr/strtoul/strtod functions: Modern C compilers don't accept signature mismatches any more.
      Last pre-autoconf-2.69 obsolete construct eliminated. Works with autoconf-2.59 as well. Still to be tested with autoconf-2.70.
      unix/configure.in is not supposed to be executable in the distribution.
      correct quoting in unix/installManPage, so $Dir can contain spaces
      Fix [43d371ac19]: Usage of exit() without including <stdlib.h> in unix/configure

kjnash (43):
      Create new branch named "bug-f81beca7af"
      Bugfix for #f81beca7af. Revert mistaken change to -querycha…
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