=============
New features
------------
- Report the existence during build time of a file `.Renviron`,
or the definition of the environment variables `R_ENVIRON' or
`R_ENVIRON_USER` with a warning. (issue 204)
- Moved console writting callback to use `ptr_R_WriteConsoleEx`
rather than `ptr_R_WriteConsole`. This allows callbacks
for warnings and messages. `get/set_writeconsole` is now
replaced by `get/set_writeconsole_regular` (regular
output) and `get/set_writeconsole_warnerror` (warning and error).
In order to conserve backward compatibility an alias for
`get/set_writeconsole_regular` called `get/set_writeconsole` is
provided.
- Added callback for `ptr_R_ResetConsole`.
- :mod:`pandas` :class:`Categorical` objects are automatically handled
in the pandas converter.
- The translation of R symbols into Python symbols used in `importr` and
underlying classes and methods can be customized with a callback.
The default translation turning `.` into `_` is `default_symbol_r2python`.
- Translation of named arguments in R function is now sharing code with the
translation of R symbols (see point above), providing a consistent way to
perform translations.
- Utility function `sequence_to_vector` in `robjects` to convert Python
sequences (e.g., `list` or `tuple`) to R vector without having to
specify the type (the type is inferred from the list).
- :mod:`robjects.vectors` object have a property :attr:`NAvalue` that contains
the `NA` value for the vector, allowing generic code on R vectors.
For example, testing whether any vector contains `NA` can be written as
`any(x is myvector.NAvalue for x in myvector)`. Making numpy /masked/ array
is an other application.
Changes
-------
- The automatic name translation from R to Python used in `importr` is
now slightly more complex. It will not only translate `.` to `_` but
should a conflict arise from the existence in R of both the `.` and `_`
versions the `.` version will be appended a `_` (in accordance with
:pep:0008). The change was discussed in issue 274).
- The ipython 'R magic' is now starting with a default conversion mode
that is `pandas2ri` if it can find it, then `numpy2ri` if it can find it,
and then the basic conversion.
- R vectors are now typed at the C level (IntSexpVector, FloatSexpVector,
ListSexpVector, etc...) whenever retrieving them from the embedded R
with the low-level `rinterface`. This is facilitating dispatch on vector
type (e.g., with `singledispatch` now used for the conversion system).
Bugs fixed
----------
- The evaluation of R code through R's C-level function `tryEval`
caused console output whenever an error occurred. Moving to
the seemingly experimental `tryEvalSilent` makes evaluations less
verbose.
- Multiple plots in one ipython cell (pull request 44)