There is maxima, a symbolic computer algebra system and cffi to connect with C, also f2cl (fortran to lisp), quicklisp for distributing libraries. Also a R version in sbcl could be used to translate it to clojure in order to interface with java.
R for the JVM: 60% complete, help wanted!
11–19 of 19 posts
Re: R for the JVM: 60% complete, help wanted!
#12Re: R for the JVM: 60% complete, help wanted!
#13What about Incanter? It seems like a perfect opportunity to gather two languages trying to do the same thing into a single JVM-focused project.
Incanter is quite nice and I really like Clojure (disclaimer: I am still a beginner), but it has far less libraries than R. I also think the creators of R did a really good job in making seamless the installation of a package (install.packages(...)) and having lots of functions pretty well documented, so a statistician who is not a programmer can easily do his work and quickly come up with results. AFAIK this is stil…
Re: R for the JVM: 60% complete, help wanted!
#14bedatadriven: R native code is usually slow and always memory hungry. Nonetheless, running R on Google AppEngine is very tempting. Could you give us some idea how the memory usage looks like using Renjin when compared to any other R distribution? Here is example how to measure memory: http://heuristically.wordpress.com/2010/01/04/r-memory-usage...
As for memory usage, I believe object.size() will double-count your input data when it is referenced by the resulting model objects. Better to check memory.profile()
At present, Renjin benefits from the JVM's state-of-the art garbage collection, so you may see some improvements even at present, but I expect the big difference will be once we roll out non-memory-backed stores for R Vectors. Then your input data could be stored in a database and only partially loaded into memory as needed.
Re: R for the JVM: 60% complete, help wanted!
#15Earlier quoted context omitted.
Yeah, there are some killer packages that won't be able to run on Renjin without porting their C sources to java/R. That's a bummer. But others -- like the survey package -- are pure R and run well on renjin. (Just do library(survey, lib.loc='/path/to/R/library') ) The central goal at this point is to support embedding packages like 'survey' in web apps or larger java apps. If you're looking for a seamless user exper…
Looking at that project page is there a reason you went for an interpreter rather than compiling to JVM byte code directly? Obviously it's a little harder if you're targeting JVMs <v7 as you don't have invokeDynamic to play with, but most of that work will be common to an interpreter or compiler. On the project I'm working on we haven't even implemented an interpreter, the REPL simply compiles to class files that are…
There are a few features of the R-language that make direction translation into byte code daunting for a muggle like myself:
1. Computing-on-the-language: R code expects to be able to access and modify the AST and frame of itself, its caller, and other closures. 2. Impure call-by-need argument-passing semantics.
The compiler that's in the trunk is experimental but evolving fast, I think the next steps will probably to start compiling simple but performance-critical basic blocks to byte code at runtime, and then slowly expand the scope of language that can handled from there... (Expert advice welcome!!)
Re: R for the JVM: 60% complete, help wanted!
#16The primary reason to use R is the large number of stats packages, which are written in a mixture of C, Fortran, and R. I don't see mention of JNI anywhere, but hooking into Fortran and C seem like the most difficult but most essential piece of making this useful.
Re: R for the JVM: 60% complete, help wanted!
#17Earlier quoted context omitted.
Looking at that project page is there a reason you went for an interpreter rather than compiling to JVM byte code directly? Obviously it's a little harder if you're targeting JVMs <v7 as you don't have invokeDynamic to play with, but most of that work will be common to an interpreter or compiler. On the project I'm working on we haven't even implemented an interpreter, the REPL simply compiles to class files that are…
Mostly inexperience :-) There are a few features of the R-language that make direction translation into byte code daunting for a muggle like myself: 1. Computing-on-the-language: R code expects to be able to access and modify the AST and frame of itself, its caller, and other closures. 2. Impure call-by-need argument-passing semantics. The compiler that's in the trunk is experimental but evolving fast, I think the ne…
I'd hardly count myself as an expert, but I think the best win we've had is in thinking carefully about callsite caching strategies and having a eureka moment about just how insanely powerful MethodHandles.exactInvoker can be.
Re: R for the JVM: 60% complete, help wanted!
#18Does the JVM environment have any tools that would facilitate building a better R debugger? That's one area of the R ecosystem that could use a serious upgrade IMO.
Re: R for the JVM: 60% complete, help wanted!
#19Looks like a very interesting project. Does the JVM environment have any tools that would facilitate building a better R debugger? That's one area of the R ecosystem that could use a serious upgrade IMO.
One of the projects for 2012 is to integrate Renjin into StatET, including a line-by-line debugger. Any takers?