Check-in [83b3a62247]

Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add information on Microsoft's Universal CRT (UCRT) to the TIP #425 explanation.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 83b3a62247b6d34509e2f9fc0981d95bc6d3fa196c70a18ec05a52d2ebf0c7b4
User & Date: jan.nijtmans 2017-10-23 13:20:14
Context
2017-10-23
16:22
Improving the quality of the metadata. check-in: 947bed9807 user: dkf tags: trunk
13:20
Add information on Microsoft's Universal CRT (UCRT) to the TIP #425 explanation. check-in: 83b3a62247 user: jan.nijtmans tags: trunk
06:51
Add classes to each row of table to work towards enabling user filtering. check-in: 62394c4e59 user: dkf tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to tip/425.md.

39
40
41
42
43
44
45










46
47
48
49
50
51
52
Making things worse, stderr is implemented by the C runtime,
\(msvcrt??.dll\) but if a application is embedding or dynamically
loading tcl.dll then the runtime of the embedder might be
different from tcl.dll/tclsh.exe's runtime. The embedder
providing the panic proc gives the highest chance that panic
messages arrive in the same runtime as the embedder.
For tclsh.exe this makes no difference.











# Proposed Change

A new function _Tcl\_ConsolePanic_ is added to the stub library
on Windows, which can be installed by embedding
application as panic proc. The full signature is:








>
>
>
>
>
>
>
>
>
>







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Making things worse, stderr is implemented by the C runtime,
\(msvcrt??.dll\) but if a application is embedding or dynamically
loading tcl.dll then the runtime of the embedder might be
different from tcl.dll/tclsh.exe's runtime. The embedder
providing the panic proc gives the highest chance that panic
messages arrive in the same runtime as the embedder.
For tclsh.exe this makes no difference.

Starting with VS2015, Microsoft introduced a new [Universal CRT (UCRT)](https://msdn.microsoft.com/en-us/library/abx4dbyh.aspx),
which defaults to the standard channels stdin/stdout/stderr
to be linked in statically. This makes it possible to
have different dll's (e.g. zlib.dll / tcl87.dll) occupy
a different C runtime (such as msvcrt.dll), but still
prevent conflicts in the standard channels. That's
why it is best to put Tcl\_ConsolePanic\(\) in Tcl's stub
library, which assures the function to be linked in statically
into the tclsh executable, in stead of dynamically in tcl87.dll.

# Proposed Change

A new function _Tcl\_ConsolePanic_ is added to the stub library
on Windows, which can be installed by embedding
application as panic proc. The full signature is: