Skip to content
Snippets Groups Projects
Commit 5a4f521d authored by Mick Jordan's avatar Mick Jordan
Browse files

update README, add documentation project

parent 41303793
Branches
No related tags found
No related merge requests found
# FastR Documentation
## Index
[Limitations](Limitations.md)
# Limitations
The long-term goal is for FastR to be a high-performance drop-in replacement for the reference implementation (open source GNU R). However, this is
a challenging goal for a language and ecosystem as rich as R's. At the time of writing FastR implements almost the entire language, but many packages
do not install or run correctly. For pure R packages this is generally due to incomplete implementations of the R builtin functions; either they are not
implemented at all or some argument types are not accepted. In due course we expect to provide a web page listing the status of all the CRAN packages
on FastR.
## Native Code
GNU R makes extensive use of native code, mostly C, to implement aspects of the default packages and, of course, package developers are encouraged to follow
the same strategy to finesse performance problems. The native extensions [interface](https://cran.r-project.org/doc/manuals/r-release/R-exts.html#System-and-foreign-language-interfaces)
is a difficult fit for a Java implementation such as FastR as it is strongly biased towards the existing GNU R implementation. In contrast Java
has a very abstract and portable native code interface, but it is difficult and inefficent to map this to the R interface. Especially problematic
are packages that actually depend on the internal details of GNUR, which can be enabled by setting `USE_RINTERNALS` in native code. FastR cannot support this
at all. Where this is being used by a package simply as a performance speedup (some function calls become C macros), the package will still build, but run more slowly.
However, where this is genuinely being used to access the GNU R internal data structures, it will fail to build. Note that whereas native C code produces
a performance speedup with GNU R it will likely run slower on FastR due to the overhead of the JNI interface. We are actively working on a solution to this problem.
In addition many of the default packages, e.g. `stats`, `graphics` contain a lot of C code that may use R internals. FastR has taken a mixed approach to
implementing these "package" builtins. Some have been translated to Java, some that do not depend on the GNU R internals are accessed through the
native interface, but many are not implemented. FastR is adopting "as-needed" approach to these functions.
../README.md
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment