Diff

Login

Differences From Artifact [cd1a3c07f8]:

To Artifact [4fe917c481]:


1
2
3
4
5
6
7
8
9
10
TIP:            72
Title:          64-Bit Value Support for Tcl on 32-Bit Platforms
Version:        $Revision: 1.4 $
Author:         Donal K. Fellows <[email protected]>
State:          Draft
Type:           Project
Vote:           Pending
Created:        05-Nov-2001
Post-History:   
Tcl-Version:    8.4


|







1
2
3
4
5
6
7
8
9
10
TIP:            72
Title:          64-Bit Value Support for Tcl on 32-Bit Platforms
Version:        $Revision: 1.5 $
Author:         Donal K. Fellows <[email protected]>
State:          Draft
Type:           Project
Vote:           Pending
Created:        05-Nov-2001
Post-History:   
Tcl-Version:    8.4
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
 6. ''Tcl_Seek'' and ''Tcl_Tell'' (together will all channel drivers)
    will be updated to use the new 64-bit type for offsets (which will
    reflect at the Tcl level in the [[seek]] and [[tell]] commands)
    though a compatibility interface for old extensions that do not
    supply a channel driver will be maintained (though the size of
    offset reportable through the interface will naturally be limited.)

 7. 'Tcl_FSStat'' and ''Tcl_FSLstat'' will all be
    updated to use a stat structure reference that can contain 64-bit
    wide values.  This will enable various [[file]] subcommands (and
    [[glob]] with some options) to work correctly with files over 2GB
    in size.  Note that there is no neat way to do this in a backward
    compatible way as there is currently no guarantee on which fields
    will actually be present in the structure, but those functions
    have never been available outside an alpha...







|







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
 6. ''Tcl_Seek'' and ''Tcl_Tell'' (together will all channel drivers)
    will be updated to use the new 64-bit type for offsets (which will
    reflect at the Tcl level in the [[seek]] and [[tell]] commands)
    though a compatibility interface for old extensions that do not
    supply a channel driver will be maintained (though the size of
    offset reportable through the interface will naturally be limited.)

 7. ''Tcl_FSStat'' and ''Tcl_FSLstat'' will all be
    updated to use a stat structure reference that can contain 64-bit
    wide values.  This will enable various [[file]] subcommands (and
    [[glob]] with some options) to work correctly with files over 2GB
    in size.  Note that there is no neat way to do this in a backward
    compatible way as there is currently no guarantee on which fields
    will actually be present in the structure, but those functions
    have never been available outside an alpha...
152
153
154
155
156
157
158




159
160
161
162
163
164
165

 10. New compatibility functions will also be provided, because not
     all platforms have convenient equivalent functions to ''strtoll''
     and ''strtoull''.

 11. ''Tcl_LinkVar'' will be extended to be given the ability to link
     with a wide C variable (via a TCL_LINK_WIDE_INT flag).





~ Summary of Incompatibilities and Fixes

The behaviour of expressions containing constants that appear positive
but which have a negative internal representation will change, as
these will now usually be interpreted as wide integers.  This is
always fixable by replacing the constant with ''int(''constant'')''.







>
>
>
>







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

 10. New compatibility functions will also be provided, because not
     all platforms have convenient equivalent functions to ''strtoll''
     and ''strtoull''.

 11. ''Tcl_LinkVar'' will be extended to be given the ability to link
     with a wide C variable (via a TCL_LINK_WIDE_INT flag).

 12. The ''tcl_platform'' array will gain a new member, ''wordSize'',
     which will give the native size of machine words on the host
     platform (actually whatever ''sizeof(long)'' returns.)

~ Summary of Incompatibilities and Fixes

The behaviour of expressions containing constants that appear positive
but which have a negative internal representation will change, as
these will now usually be interpreted as wide integers.  This is
always fixable by replacing the constant with ''int(''constant'')''.