[Rd] [Fwd: opened symbols in libR.so available.]
Guillaume Yziquel
guillaume.yziquel at citycable.ch
Sun Nov 29 16:54:38 CET 2009
Uwe Ligges a écrit :
> Guillaume Yziquel wrote:
>> Hi.
>>
>> I've patched Dirk Eddelbuettel's Debian package of R, namely r-base, in
>> order to make hidden symbols of the library libR.so available is now
>> available:
>>
>> http://yziquel.homelinux.org/debian/pool/main/r/r-base/
>>
>> For instance, the mkPROMISE symbol is available:
>>
>>> yziquel at seldon:/usr/lib/R/lib$ nm -D libR.so | grep mkPROMISE
>>> 000000000011f6f0 T Rf_mkPROMISE
>>> yziquel at seldon:/usr/lib/R/lib$
>>
>> Instructions for my personal repository are available here:
>>
>> http://yziquel.homelinux.org/topos/debian-repository.html
>>
>> I hope this will be useful to people who wish to develop
>> things, test things, reverse-engineer things from the libR.so library.
>>
>> I've been told that there's an interesting scheme, used by r-base-ra,
>> to make packages coexist with R. As of now, it simply replaces the
>> Debian version number, currently -1, with the Debian version number
>> -1hackable.
>>
>> All the best,
>
>
> Umm, you know,
>
> 1. there is some reason why not everything is exported from libR.so,
> particularly those parts of the API that are matter to change or are
> undocumented for other reasons.
Yes. For sure. These are good reasons.
Interfacing to hidden symbols in order to try out stuff from an
interactive session is also a good reason. I'd rather have to deal with
a moving API than contemplating an API moving.
(As a side-note, putting tryEval in the API wouldn't be such a bad idea...)
> 2. if you do not want to listen to 1.:
> R is open source, hence no need to reverse-engineer or "hack" anything
> there, just change the sources and recompile in a way that they export
> those names.
That's what I did. As I did not want to screw up my whole Debian system,
I built up a package, which might be useful for people writing language
bindings. It's pointless to buy a second computer or meddle with chroots
just to recompile R. That's all.
If people do not have the same needs as I do (namely, why what I am
passing to tryEval, eval, applyClosure gives a segfault), there's no
point in installing such a package. I set it up because such a post
remained unanswered:
https://stat.ethz.ch/pipermail/r-devel/2009-November/055813.html
The whole point is that I have to develop on a naked libR.so to get my
binding going. Then I'll consider cleaning things up, and make it
compile against a regular libR.so. In the end, the OCaml-R API will be
as safe as possible, with extremely strong typing.
> Best,
> Uwe Ligges
As to reverse-engineering, reading the R source code is already
reverse-engineering, as is reading any complex C code which is
insufficiently documented (insufficiently with respect to my needs,
because otherwise, R-ints.pdf, R-exts.pdf and R-lang.pdf have a lot of
information).
All the best,
--
Guillaume Yziquel
http://yziquel.homelinux.org/
More information about the R-devel
mailing list