-
Notifications
You must be signed in to change notification settings - Fork 194
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
Conversation
…> to be #included in any order.
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
strongly against this
@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. |
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.
|
…h in the definition of mp_int. See: [libtom/libtommath#473]
…h in the definition of mp_int. See: [libtom/libtommath#473]
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 <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…
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:
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