[R-SIG-Mac] How to make Mac 64-bit version feature complete?

Simon Urbanek simon.urbanek at r-project.org
Sat Dec 10 16:22:08 CET 2011


Adam,

On Dec 7, 2011, at 9:07 AM, Adam Strzelecki wrote:

> Hello R Community,
> 
> I have recently started using R for my PhD work. Aside of that I am Mac and iOS developer since few years. As far I can see R package for Mac comes in two flavors, R (32-bit) and R64 (64-bit).

Not really - it's one R with three architectures (i386, x86_64 and ppc) - you can choose them using R --arch <arch>.


> Correctly if I am wrong, but the only reason of such separation (rather doing single universal version for all PPC, i386 and x86_64) is Carbon dependency for various R packages?

Yes, you are wrong, that is not the rationale. The main reason is the same as why Apple uses separate files for i386, x86_64 and ppc: portability (see gcc, for example). In addition, there is no benefit in creating universal binaries, since they are very Darwin-specific and bring no benefit in this context. Think about the consequences - R code can be conditioned on the architecture, so when building packages, you have to run them for every architecture separately which is unnecessary difficult with universal binaries (you can't simply use -arch foo -arch bar like with gcc). It's much easier if you use the classic multi-lib approach where you can run separate architectures at will. (Technically the only difference is that we use thin binaries instead of fat binaries, so it's only the format on disk, not anything else)

As a side note - the R framework and all its libraries are universal as you can see, so "native" Mac apps that link the framework can be universal (and e.g. the GUI is).

Also your subject doesn't make sense - all architectures in R have exactly the same functionality. None of them is "limited" in any way. A side-effect of the multi-lib approach is that users can choose to compile only specific architectures (more for convenience than anything), but CRAN only builds complete packages (i.e., all architectures).

Cheers,
Simon


> So 32-bit version is the one that uses native Quartz or OpenGL rendering, while 64-bit version is the one that can drive over 2GB of memory but falls back to X11 as Carbon isn't available for 64-bit.
> 
> Can anyone tell me what are the packages that still relay on Carbon (quartz renderer, rgl? anything else) that would need to be ported to Cocoa so 64-bit version will offer full functionality as 32-bit counterparts on Mac, instead of falling back to X11? I guess I could help quickly porting these parts into Cocoa, so we got single (3 architecture) binary.
> 
> Cheers,
> -- 
> Adam Strzelecki | nanoant.com
> 
> BTW. Who's the Mac package maintainer in R project?
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
> 
> 



More information about the R-SIG-Mac mailing list