Massimo,

thanks, that you care about tcl9. I think, TCL9 is important for Rivet to overcome the size limits. I know from NaviServer, that they have a lot of trouble with sizes and arguments, like for the seek command, if files get large.

Thanks for the message and this analysis.
As you know, I am a big fighter against all those magic macros and their pitfalls.

May I ask you to send the message as given to the core list?
It would be great, if people get aware of this?
Or even better would be a ticket on core.tcl-lang.org/tcl

Thank you and take care,
Harald

Am 19.11.2023 um 00:50 schrieb Massimo Manghi:
Dear fellow Tcl'ers

This message is more specifically meant for Harald. Thank you Harald for your efforts as a driving force in the current process of having Tcl9.0 out

I've built rivet branch tcl-novem with Tcl9 (branch tcl-9-0-b1-rc) and as expected I had to get all the Tcl_Size replace int where the compiler found potentially incompatible representations. That was straightforward.

everything was right except for this warning (compiling with gcc 13.2.0)

mod_rivet_ng/TclWebapache.c: In function ‘TclWeb_StringToUtf’:
/home/manghi/tcltk/include/tclDecls.h:3972:47: warning: right-hand operand of comma expression has no effect [-Wunused-value]  3971 |         (Tcl_ExternalToUtfDStringEx(NULL, (encoding), (src), (len), \
       | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 3972 |         TCL_ENCODING_PROFILE_TCL8, (ds), NULL), Tcl_DStringValue(ds))
       | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
mod_rivet_ng/TclWebapache.c:803:5: note: in expansion of macro ‘Tcl_ExternalToUtfDString’
   803 |     Tcl_ExternalToUtfDString(NULL,in,(signed)strlen(in),&dstr);
       |     ^~~~~~~~~~~~~~~~~~~~~~~~

The relevant macro in tclDecls.h

#define Tcl_ExternalToUtfDString(encoding, src, len, ds) \
     (Tcl_ExternalToUtfDStringEx(NULL, (encoding), (src), (len), \
     TCL_ENCODING_PROFILE_TCL8, (ds), NULL), Tcl_DStringValue(ds))

which expands Tcl_ExternalToUtfDString(encoding, src, len, ds) as

(Tcl_ExternalToUtfDString(....),Tcl_DStringValue(ds))

where apparently the function call on the right of the comma has no meaningful purpose, as it returns the string internal value which goes unassigned.

Probably a minor problem but I thought the Tcl includes shouldn't in principle generate unnecessary noise

  -- Massimo

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to