Files | Admin

Notes:

Release Name: 0.6.0

Notes:
RubyPython is a bridge between the Ruby and Python interpreters. It embeds a
running Python interpreter in the Ruby application's process using FFI and
provides a means for wrapping, converting, and calling Python objects and
methods.

RubyPython uses FFI to marshal the data between the Ruby and Python VMs and
make Python calls. You can:

* Inherit from Python classes.
* Configure callbacks from Python.
* Run Python generators (on Ruby 1.9.2 or later).


Changes: === 0.6 / 2011-04-17 * Major Enhancements: * Previous versions of RubyPython theoretically allowed the loading of different Python interpreters during a single Ruby session. Because of the likelihood of crashes, this functionality has been removed. Now, if you attempt to start RubyPython more than once while specifying different Python interpreters, RubyPython will print a warning and continue working with the already loaded interpreter. * The Python interpreter DLL will only be loaded once. It is configured with a self-removing method, Interpreter#infect! instead of require/load reload hacks. * Removed RubyPython.configure; since the interpreter can only be configured once, independent configuration no longer makes sense. * Minor Enhancements: * RubyPython interpreter initialization is done with a Mutex synchronization to ensure that only one Python interpreter DLL is loaded. * Added RubyPython::Tuple, a simple subclass of ::Array that will correctly be converted to a Python tuple object such that isinstance(x, tuple) returns True. * Renamed RubyPython::PythonExec to RubyPython::Interpreter. Added some helper methods to assist with comparison. Construction is with an options hash. * The #update methods on Python interpreter observers are now private. This is an implementation detail, not a public interface. (The methods have also been renamed to #python_interpreter_update.) * Deprecation: * RubyPython's legacy mode (automatic unboxing of Python proxy objects where possible) has been deprecated and will be removed in the next non-bugfix release after this version. Introduced a new private method (RubyPython.legacy_mode?) to check if legacy mode is turned on so that the deprecation warning is not printed in all uses of RubyPython.