aboutsummaryrefslogtreecommitdiff
path: root/CHANGES.current
blob: f8d73fdb980dc0cfe2473095a353c19855eaf99b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
Version 1.3.20 (In progress)
============================

06/20/2003: cheetah (William Fulton)
            [C#] Finalizers now use destructor syntax as the override which was used in 
            the Finalize method is not in the ECMA standards, spotted by the MS compiler.

06/10/2003: cheetah (William Fulton)
            [C#] A number of changes have been made to remove the Java naming 
            that was used in the C# module.
            
            Typemap name changes:
            jni                         -> ctype
            jtype                       -> imtype
            jstype                      -> cstype
            javain                      -> csin
            javaout                     -> csout
            javainterfaces              -> csinterfaces
            javabase                    -> csbase
            javaclassmodifiers          -> csclassmodifiers
            javacode                    -> cscode
            javaimports                 -> csimports
            javaptrconstructormodifiers -> csptrconstructormodifiers
            javagetcptr                 -> csgetcptr
            javafinalize                -> csfinalize

            Feature name changes:
            javaconst                   -> csconst
            javamethodmodifiers         -> csmethodmodifiers

            Pragma changes:
            pragma(java)                -> pragma(csharp)
            jniclassbase                -> imclassbase
            jniclassclassmodifiers      -> imclassclassmodifiers
            jniclasscode                -> imclasscode
            jniclassimports             -> imclassimports
            jniclassinterfaces          -> imclassinterfaces

            Special variable name changes:
            $javaclassname              -> $csclassname
            $javainput                  -> $csinput
            $jnicall                    -> $imcall

            This will break SWIG interface files that use these typemaps, features
            and pragmas. Please update your code or use macros for backwards
            compatibility.

            *** POTENTIAL INCOMPATIBILITY FOR C# MODULE ***

06/10/2003: mkoeppe (Matthias Koeppe)
	    [MzScheme] Applied MzScheme module updates contributed by
	    John Lenz <jelenz@students.wisc.edu>.

            - Updated mzscheme to use SWIG's common runtime type
              system from common.swg. 

	    - The Lib/mzscheme directory has been reorganized to
              standardize names across the language modules:
              mzscheme.i was moved to mzscheme.swg, mzscheme.swg and
              mzschemedec.swg have been removed, mzrun.swg (which
              contains the runtime code) has been added.

            - The swig_proxy structure was renamed to swig_mz_proxy.
              swig_mz_proxy now contains a pointer to a swig_type_info
              structure.  

	    - Added varin and varout typemaps for SWIGTYPE [] and
              SWIGTYPE &.

	    - Garbage collection by calling scheme_add_finalizer() has
              been added.

	    *** NEW FEATURE [MzScheme] ***

06/10/2003: cheetah (William Fulton)
            [Java] New typemaps: javadestruct and javadestruct_derived
            for the C++ destructor wrapper. The javadestruct version gets used by
            classes at the top of an inheritance chain and the javadestruct_derived 
            version gets used by other classes.

            [C#] cildispose and cildisposeoverride typemaps replaced by
            csdestruct and csdestruct_derived typemaps. The delete()
            method has been removed and its functionality put into these
            typemaps designed for the Dispose() method.

            - New typemaps csinterfaces and csinterfaces_derived replace
            the javainterfaces typemap. Also fixes the peculiarity of all classes
            in an inheritance chain individually deriving from the IDisposable 
            interface.

            - New typemap csfinalize for finalizers. C++ destructors are now called
            by garbage collector during finalization. Problem reported by 
            Andreas Schörk.

06/10/2003: Tiger
	    Modified contract code for error message output.
            Contract code can now print out simple error message.
            Modified contract code to prepare for inheritance
            
06/03/2003: mkoeppe
	    [Guile] Applied Guile module updates contributed by 
	    John Lenz <jelenz@students.wisc.edu>. 

	    - SWIG currently uses Guile's gh_ API, which is marked as
	      deprecated in Guile 1.6 and will be removed in Guile
	      1.9.  This change introduces a command-line flag "-scm"
	      which causes SWIG to generate wrappers that use Guile's
	      SCM API instead; this requires Guile >= 1.6.
	    
	    - The Lib/guile directory has been reorganized to
              standardize names across language modules: guiledec.swg
              and guile.swg have been moved into guile_gh_run.swg,
              guile.i has been moved to guile_gh.swg, guile_scm.swg
              and guile_scm_run.swg which contain the SCM API stuff
              have been added

	    - ghinterface.i, which contains the defines from the gh_
              functions to the scm_functions has been added

	    - The API for dealing with pointer objects is now
	      SWIG_ConvertPtr, SWIG_MustGetPtr, SWIG_NewPointerObj.

            - Added varin and varout typemaps for SWIGTYPE [] and SWIGTYPE &

            - Garbage collection has been added.

            *** NEW FEATURE [Guile] ***
	    	
06/01/2003: cheetah (William Fulton)
            Dimensionless arrays such as 

                int foo[] = {1, 2};
                extern int bar[];

            produce a warning that the variable is read-only. Depending on the target
            language, this used to cause compile errors or generate a setter that
            generated a runtime error. A setter cannot be automatically generated
            because the array size cannot be determined by SWIG. A varin, globalin 
            or memberin typemap (depending on the target language) must be written 
            by the user.

05/29/2003: beazley
            Refinement to default typemap matching and arrays.  When an
            array is declared like this:

                       int foo[4];

            The default typemap now resolves to 

                       SWIGTYPE [ANY]

            If no match is found for that, it then resolves to

                       SWIGTYPE []

            If no array dimension is specified in the original declaration,
            the SWIGTYPE [] is used right away. 

            Note: This change has been made to resolve problems related to
            arrays with and without dimensions.  For example, sometimes SWIG
            was generating setter functions for array variables with no dimensions
            (an error). Likewise, SWIG sometimes made arrays with dimensions
            read-only (also an error).  This fixes the arrays_global test
            problem.
                        
05/28/2003: beazley
            Fixed subtle type handling bug with references and pointers.
            If you had functions like this:

                  typedef Foo Bar;

                  Foo *func1();
                  void func2(Bar &x);

            Then func2() wouldn't accept objects returned by func1()
            because of a type error.   It should work now.
            Reported by Brian Yang.

05/21/2003: cheetah (William Fulton)
            Fixes to some of the Visual C++ example project files which would not 
            work with spaces in the paths held in the environment variables used to 
            point to the target language's library / include directory.
            SF bug #740769

05/21/2003:  songyanf (Tiger)
            Added -contracts option.
            First try of the idea of "Wrap by Contract": 
            build up realiable cross-language module by wrapping with SWIG.
            Implemented basic assertion
            (preassertion & postassertion & invariant)
            for simple C/C++ functions.
            
            Current format of contracts are:
            %contract class_name :: func_name (paras...) {
            require:
                   boolean exprs;
                   exprs;
            ensure:
                   boolean expr;
                   exprs;
            invariant:
                   boolean expr;
                   exprs;
            }

            *** NEW FEATURE ***
	    	
05/19/2003: cheetah (William Fulton)
            Build tweaks. There were a few preprocessor definitions which were
            specified in the Makefile for passing on the commandline when compiling.
            These are now all defined in swigconfig.h. Autoconf doesn't normally 
            allow installation directories to be defined in this config header file, 
            but an autoconf archive macro enables this. This macro along with future 
            autoconf macros are going to be put in the Tools/config directory.

            'swig -version' now reports the target build platform.

05/11/2003: cheetah (William Fulton)
            [C# and Java] Fix to the following typemaps:

            javabase, javainterfaces, javaimports, javaclassmodifiers,
            javaptrconstructormodifiers, javafinalize, javagetcptr & javacode.

            These are the typemaps for modifying/generating proxy classes.
            Previously the typemaps would use the proxy class name and not the 
            C++ type, which was inconsistent with all other typemaps. 

            In most circumstances the proxy class name and the C++ class name/type 
            is the same except for classes in namespace, templated classes etc. so
            this shouldn't affect most cases.

            *** POTENTIAL INCOMPATIBILITY FOR JAVA and C# MODULES ***

05/01/2003: beazley
            Fixed problem with return by value, const, and private constructors.
            For example:

                class B {
                private:
                   B();
                public:
                   B(const B&);
                };

                class A {
                   ...
                   const B returnB() const;
                   ...
                };

            Problem and patch suggestion reported by Bill Hoffman.

04/29/2003: cheetah (William Fulton)
            Build changes:
            - Single autoconf invocation - autoconf in the Tools directory has gone.

            - Libtool bootstrapped when running autogen.sh. This requires anyone
              using the cvs version of SWIG to have libtool installed on their
              machine. Suggest version 1.4.2 or higher, preferably the latest - 1.5.

            - Automake is now used to build the runtime libraries in conjunction 
              with libtool.

            - Runtime libraries are now successfully built as DLLs on Cygwin.

            - Skipping languages is no longer just determined in the top level 
              makefile but in configure.in. This info is used for building
              the runtime libraries and for running the examples and test-suite.

            - These changes have fixed multiple build directory builds, that is
              building from directories other than the top level directory. 
              Installation from multiple build directories also working. An initial
              configure in the top level directory is no longer needed as described
              in 04/02/2003 entry. A 'make distclean' will be needed before building
              in a directory other than the top level directory if the autotools 
              have been run from this top level directory at some point, but 
              autoconf will tell you this. Note that 'make check' only works from 
              the top level directory at the moment.

04/28/2003: beazley
            Fixed [ 723471 ] Wrapper_print() fails with preprocessor directives.

04/28/2003: beazley
            Minor refinement of const static member variable handling 
            described in CHANGES 08/11/2002.   Previously, SWIG merely
            checked to see if there was an initializer in the declaration.
            Now, SWIG additionally checks to make sure the static member
            is const.

04/25/2003: ljohnson (Lyle Johnson)
            [Ruby] Added a kind of limited support for multiple inheritance,
            activated using the -minherit command-line option. I've also updated
            the "C++ Inheritance" section of the Ruby documentation to discuss
            how this works, and its limitations. Also also modified the minherit.i
            test case to run against this.

04/25/2003: ljohnson (Lyle Johnson)
            [Ruby] Added the -globalmodule command-line option for the Ruby
            module, for wrapping stuff into the global module (Kernel) instead
            of a nested module. Updated documentation accordingly.

04/23/2003: mrose (Mark Rose)
            Fixed symname error in director calls to Python methods
	    that extend C++ operators.

	    Stopped director destructor wrappers from calling __set_up,
	    which was leaving the director flag in an inconsistent state.

04/23/2003: beazley
            Fixed problem with namespace resolution and nested namespaces.
            Reported by Alfred Lorber (and Marcelo Matus).

04/16/2003: cheetah (William Fulton)
            Patch for Java examples and test-suite to run on Mac OS X.

04/15/2003: ljohnson (Lyle Johnson)
            [Ruby] Incorporated Nobu Nakada's patches for supporting the Ruby
            1.8 allocation framework.

04/15/2003: ljohnson (Lyle Johnson)
            [Ruby] Replaced all uses of the deprecated STR2CSTR() macro with the
            safer StringValuePtr() macro. For more information, see ruby-talk:67059
            and follow-ups to that post.

04/11/2003: beazley
            Fixed problem with preprocessor macro expansion.  For example:
 
                #define min(x,y) ((x) < (y)) ? (x) : (y) 
                int f(int min);

            Reported by Sebastien Recio.

04/10/2003: cheetah (William Fulton)
            [Java] Added a runtime check to typemaps in arrays_java.i library to check 
            that the Java array passed in is the same size as the C array and throw an 
            exception if not.

            Also fix to use delete instead of free for arrays created using new.

04/07/2003: cheetah (William Fulton)
            Remove GCC3 warning when compiling the examples and test-suite:

              cc1plus: warning: changing search order for system directory "/usr/include"
              cc1plus: warning: as it has already been specified as a non-system directory 

            See SF patch #715531 submitted by Gerald Williams

04/03/2003: cheetah (William Fulton)
            [C#] Improved wrapping of enums and constants. These were previously
            wrapped as C# variables rather than constants. Either these are wrapped
            as readonly (runtime) constants or compile time constants, depending on
            the %javaconst directive (The directive is likely to change name soon).
            For example wrapping:
              %javaconst(0);
              #define ABC 22
              %javaconst(1) XYZ;
              #define XYZ 33
            is now:
              public static readonly int ABC = examplePINVOKE.get_ABC();
              public const int XYZ = 33;

04/03/2003: cheetah (William Fulton)
            [Java] Global constants and enums are put in their own interface called
            xxxConstants, where xxx is the module name. This is an improvement as 
            it is possible to derive (implement) a Java class from the xxxConstants
            interface to improve the syntax; namely when wrapping:
              enum {ONE=1, TWO, THREE};
            accessing these from a Java class implementing xxxConstants is neater:
              int number = ONE;
            than the previous:
              int number = xxx.ONE;

            Patch submitted by Dave Dribin.

04/02/2003: cheetah (William Fulton)
            Build improvements for multiple builds. This allows one to build
            the SWIG executable and runtime libraries for different platforms/compilers 
            etc by running configure in different directories. This isn't 100% just 
            yet and won't be until libtool is better configured... a 'configure' and 
            'make distclean' needs to be run in the root directory before it all works.
            For example:
              $ ./configure
              $ make distclean
              $ mkdir config1; cd config1; ../configure CC=gcc CXX=g++; make; cd ..
              $ mkdir config2; cd config2; ../configure CC=cc CXX=c++; make; cd ..
            
            To be improved. A 'make check' does not work yet either. 

04/01/2003: beazley
            Fixed template partial specialization argument expansion bug.
            This showed up when trying to use std_vector.i with vectors
            of pointers.

03/31/2003: cheetah (William Fulton)
            Fix for parallel make builds of SWIG, for example
              make -j 4
            Build failure reported by Bill Clarke.

03/28/2003: beazley
            Released 1.3.19.