Jony, I would caution that while R will run with just base, you won't be able to do much of anything with it. All the statistical analysis and graphing functions reside in additional packages. So practically speaking you'll need the workarounds Simon mentioned involving an alternative to dyn.load so you can attach additional packages. Your project looks pretty cool though!
Also, as an aside have you seen the ipython notebook ( http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html )? It doesn't meet your requirement of not installing anything, and currently has a slightly different focus, but the appearance of the documents is very similar to what you are doing here (other than being server based), and it already understands multiple languages, including python, R, matlab, octave, etc and is being actively developed and supported. ~G On Fri, May 3, 2013 at 8:21 AM, Jony Hudson <jony.hud...@imperial.ac.uk>wrote: > Hi All, > > thanks for the replies. Very helpful to know that it will run with just > base. Looks like the best bet, at least to get started, is to not use the > usual build-process, but to come up with a simple build-script for just the > core. Ultimately, the build script has to be different anyway, as compiling > the Fortran code to JS requires a few more steps than the native compile. > > For a bit of context, the reason I'm toying with this is I've been > experimenting recently with analysis-in-the-browser. The kernel of the idea > is that if you could do real analysis, without installing anything, and > share it on the web then it would be a Good Thing, and could make it easier > to engage people with data. I've got a proof-of-concept version running > here http://www.monkeycruncher.org that let's you write javascript > analysis code in notebook-style documents. It's neat, but it's a bit > hamstrung by the lack of javascript libraries to actually do any useful > analysis! If you could have R running in there though, that would be a much > better proposition ... > > I'll let you know if I make any progress! > > > Jony > > > -- > Centre for Cold Matter, The Blackett Laboratory, > Imperial College London, London SW7 2BW > T: +44 (0)207 5947741 > http://www.imperial.ac.uk/people/jony.hudson > http://www.imperial.ac.uk/ccm/research/edm > http://www.monkeycruncher.org > http://j-star.org/ > -- > > On 3 May 2013, at 01:31, Simon Urbanek <simon.urba...@r-project.org> > wrote: > > > On May 2, 2013, at 6:18 PM, Gabriel Becker wrote: > > > >> Jony, > >> > >> I'm currently writing up the paper for something with a similar result > but > >> very different implementation. The RBrowserPlugin package/browser plugin > >> (joint with my advisor Duncan Temple Lang) embeds R within the web > browser > >> as an NPAPI plugin. > >> > >> This approach allows full bi-directional communication between R and the > >> javascript engine (including direct function calling and references to > >> native objects in both directions) using a user's existing local R > >> installation (including packages). > >> > > > > Minor detail: it requires you to have R *and* a special plugin which > makes it pretty much non-deployable. It's completely unrelated to what Jony > is proposing - which doesn't require any dependencies and is actually > pretty cool and would be useful if feasible. FWIW: There are many ways to > run R from a browser that already exist - without the need for plugins or > other client-side hacks - that's the beauty of modern browsers :). > > > > > > To get this back on the actual topic: I have been toying with > cross-compiling R when I was porting it on the iPhone and it's possible, > however, you can't use the build process as-is. It does build core R > properly, but the problem is that you need to bootstrap R to build any > packages. I worked around the problem at the time by building packages on > another platform and re-using those files (things like lazy-loaded DBs, > compiled RD files etc.). > > > > I can imagine that you'll need some equivalent to dynamic linking, but > conceptually it's nothing else but calling functions, so I think you should > be able to compile each package separately and just replace the dynload > code by code that loads another JavaScript. The nice thing is that packages > will simply be just another JS libraries. That's all in theory, I didn't > actually try that part. I suspect you'll have a lot of work, e.g. you'll > need to map all the I/O operations that load compiled/stored R code, > documentation, data from somewhere etc. Good luck! > > If all fails, you can always compile R for JS/Linux ;). > > > > Cheers, > > Simon > > > > > > > >> Devel source at https://github.com/gmbecker/RFirefox, release, > (hopefully) > >> officially cross-platform version to coincide with the paper going off > for > >> review. > >> > >> I had toyed with the idea of the emscripten approach, but I think > putting R > >> in the browser once is enough for me at the moment so I will happily > keep > >> an eye on your project instead of attacking that myself :). > >> > >> As for your actual question I can't really say, other than that I > suspect > >> you will not be able to dispense with base and methods, but that I would > >> conjecture that stats is "optional". > >> > >> ~G > >> > >> > >> On Thu, May 2, 2013 at 9:12 AM, Jony Hudson <jony.hud...@imperial.ac.uk > >wrote: > >> > >>> Hi, > >>> > >>> I'm trying to cross-compile R to javascript so that it can run in a > >>> web-browser. Take as long as you need to stop laughing. So, as I was > saying > >>> - I want to try and get a build of R running in the browser. [If > you're not > >>> familiar with it already, you might enjoy looking at emscripten.org. > It's > >>> a remarkably capable tool for translating LLVM bitcode to javascript. > Check > >>> out some of the demos!] > >>> > >>> I'm trying to start out with the most minimal build of R possible. I > can > >>> turn off various options in the configure script, but I'm wondering > about > >>> the bundled R packages (base, stats etc). I'm guessing that the native > code > >>> portions of these packages are dynamically loaded at runtime, which > will > >>> probably need patching. To start off, I'd like to not build these > packages > >>> if possible. > >>> > >>> So, is there a way to configure which packages in the library get > built or > >>> is it just a case of editing the makefile? And is there a minimal set > of > >>> them that would still allow R to run (not be useful - that can come > later - > >>> just run)? > >>> > >>> Thanks in advance for any help anyone can provide :-) > >>> > >>> > >>> Jony > >>> > >>> -- > >>> Centre for Cold Matter, The Blackett Laboratory, > >>> Imperial College London, London SW7 2BW > >>> T: +44 (0)207 5947741 > >>> http://www.imperial.ac.uk/people/jony.hudson > >>> http://www.imperial.ac.uk/ccm/research/edm > >>> http://www.monkeycruncher.org > >>> http://j-star.org/ > >>> -- > >>> > >>> ______________________________________________ > >>> R-devel@r-project.org mailing list > >>> https://stat.ethz.ch/mailman/listinfo/r-devel > >>> > >> > >> > >> > >> -- > >> Gabriel Becker > >> Graduate Student > >> Statistics Department > >> University of California, Davis > >> > >> [[alternative HTML version deleted]] > >> > >> ______________________________________________ > >> R-devel@r-project.org mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-devel > >> > >> > > > > -- Gabriel Becker Graduate Student Statistics Department University of California, Davis [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel