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.
|