Added Ruby changes.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9697 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
522403958e
commit
b3b883f382
1 changed files with 91 additions and 0 deletions
|
|
@ -1,5 +1,96 @@
|
||||||
Version 1.3.32 (in progress)
|
Version 1.3.32 (in progress)
|
||||||
============================
|
============================
|
||||||
|
04/29/2007: gga
|
||||||
|
[Ruby] Fixed GC memory issues with trackings that could lead
|
||||||
|
to segfaults when dealing, mainly, with static variables.
|
||||||
|
[Bug: ]
|
||||||
|
|
||||||
|
04/29/2007: gga
|
||||||
|
[Ruby]
|
||||||
|
Fixed String conversion using old ruby1.6 macros. Now
|
||||||
|
StringValuePtr() is used if available. This removes warnings
|
||||||
|
when converting strings with \0 in them. [Bug:]
|
||||||
|
|
||||||
|
04/29/2007: gga
|
||||||
|
[Ruby]
|
||||||
|
Changed VALUE swig_ruby_trackings (the tracking hash table)
|
||||||
|
from static to being exposed outside of a single DSO. This
|
||||||
|
allows properly dealing with directors across multiple DSOs.
|
||||||
|
However, the developer is currently forced to turn on and off
|
||||||
|
a -DSWIGEXTERN flag. In the next revision this will be
|
||||||
|
addressed.
|
||||||
|
[Bug: ]
|
||||||
|
|
||||||
|
04/29/2007: gga
|
||||||
|
[Ruby]
|
||||||
|
Fixed the argout count in directors for Ruby. Previously,
|
||||||
|
ignored or "numinputs=0" typemaps would incorrectly not get
|
||||||
|
counted towards the argout count.
|
||||||
|
|
||||||
|
04/29/2007: gga
|
||||||
|
[Ruby]
|
||||||
|
Upgraded Ruby converter to recognize "numinputs=0". Previously,
|
||||||
|
only the old "ignore" flag was checked (which would currently
|
||||||
|
still work properly, but is deprecated).
|
||||||
|
|
||||||
|
04/29/2007: gga
|
||||||
|
[Ruby - but should be made generic]
|
||||||
|
%feature("numoutputs","0") added. This (temporary) feature
|
||||||
|
allows you to ignore the output of a function so that it is
|
||||||
|
not added to a list of outpus values ( ie. argouts ).
|
||||||
|
This should also become a feature of %typemap(out) as
|
||||||
|
"numoutputs"=0, just like "numinputs"=0 exists.
|
||||||
|
|
||||||
|
%feature("directors"=1)
|
||||||
|
|
||||||
|
%include <typemaps.i>
|
||||||
|
|
||||||
|
%feature("numoutputs","0") { Class::member_function1 };
|
||||||
|
%typemap(out) MStatus { // some code, like ignore mstatus
|
||||||
|
// and raise exception };
|
||||||
|
|
||||||
|
%inline %{
|
||||||
|
typedef int MStatus;
|
||||||
|
class Class {
|
||||||
|
|
||||||
|
// one argument returned, but director out code added
|
||||||
|
// MStatus is discarded.
|
||||||
|
virtual MStatus member_function1( int& OUTPUT );
|
||||||
|
|
||||||
|
// two arguments returned, director out code added
|
||||||
|
// MStatus is not discarded
|
||||||
|
virtual MStatus member_function2( int& OUTPUT );
|
||||||
|
};
|
||||||
|
%}
|
||||||
|
|
||||||
|
04/29/2007: gga
|
||||||
|
[Ruby]
|
||||||
|
Directors will now try to reset the ruby stack on the first call
|
||||||
|
to them if the developer sets the define RUBY_EMBEDDED.
|
||||||
|
Explanation:
|
||||||
|
Ruby's GC needs to be aware of the running stack in order to mark
|
||||||
|
any VALUE (Ruby objects) it finds there to avoid collection of
|
||||||
|
them. This allows the ruby API to very simple and allows you
|
||||||
|
to write code like "VALUE a = sth" anywhere without needing to
|
||||||
|
do things like refcounting like python.
|
||||||
|
By default, the start of the stack is set when ruby_init() is
|
||||||
|
called. If ruby is inited within main(), as it usually is
|
||||||
|
with the main ruby executable, ruby will be able to calculate
|
||||||
|
its stack properly. However, when this is not possible, as when
|
||||||
|
ruby is embedded as a plugin to an application where main is not
|
||||||
|
available, ruby_init() will be called in the wrong place, and
|
||||||
|
ruby will be incorrectly tracking the stack from the function
|
||||||
|
that called ruby_init() only, which can lead to
|
||||||
|
all sorts of weird crashes or to ruby thinking it has run out of
|
||||||
|
stack space incorrectly.
|
||||||
|
To avoid this, director (callback) functions can now be tagged
|
||||||
|
to try to reset the ruby stack, which will solve the issues.
|
||||||
|
NOTE: ruby1.8.6 still contains a bug in it in that its function
|
||||||
|
to reset the stack will not always do so. This bug is triggered
|
||||||
|
very rarely, when ruby is called from two very distinct places
|
||||||
|
in memory, like a branch of main() and another dso. This bug
|
||||||
|
has now been reported to ruby-core.
|
||||||
|
|
||||||
|
|
||||||
04/21/2007: olly
|
04/21/2007: olly
|
||||||
Fix parsing of float constants with an exponent (e.g. 1e-02f)
|
Fix parsing of float constants with an exponent (e.g. 1e-02f)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue