[ESS] Start 64bit R

Kevin Coombes kevin.r.coombes at gmail.com
Mon Apr 6 19:04:07 CEST 2015


Hi,

I have attached the function as an elisp-file, but I'm not sure if it 
will get through any filters to make it back to the mailing list. If 
not, I can paste the code directly into another email.

I don't think the solution I have is particularly elegant, and I have no 
feeling for how robust it is.  But it worked in the previous and in the 
current version of ESS on the three machines that I use regularly.

I do think it would be good to add it in for others benefit.  (I find it 
hard to believe that I'm the only person who want to run the 64-bit 
version instead of the 32-bit version. There are lots of bioinformatics 
computations that run out of space when using only 32 bits.)

Part of my reason for asking for the change to be made part of the ESS 
distribution is plain old "disgruntlement".  I don't like the fact that 
"R-newest" in ESS *means* 32-bit.  We've had 64-bit versions of R for 
several years.  And when I get the newest version of R from CRAN, it 
comes with both 64-bit and 32-bit version.  And it installs icons for 
both on  my desktop, so I can start whichever one I want.  In ESS, I 
either have to edit the "ess-site.el" file -- which I used to do, and 
requires re-editing every time you upgrade R (or ESS). Or I have to use 
a non-standard command that I wrote (M-x R64), which makes things 
complicated when I try to explain things to students.

I'd also like a more robust, long-term solution. I don't want the next 
version of ESS to break my inelegantly hacked solution.   As for 
long-term, my first home computer was an IBM 386SX -- running the 
hand-coded-in-assembly version of Freemacs -- so I've gone through these 
transitions before.  Presumably, at some point we'll start using 128-bit 
instead of 64-bit.  And then I'll want the 128-bit version of R to be 
the default.  And my code that searches for the string "64bit" won't 
work.  And it's even possible that it will stop working in a new release 
of R if they change how they designate the 32bit and 64bit versions.

Best,
   Kevin

On 4/6/2015 11:51 AM, Stephen Eglen wrote:
> hi Kevin,
>
> I vaguely remember saying that I'd take a look - why not send what you
> have to us, and then I'll see how easy it is.
>
> But if you already have a working solution, what do you need improving
> (beyond us perhaps adding something like it into ESS for others
> benefit)?
>
> Stephen
>
>
> On Mon, Apr 06 2015, Kevin Coombes wrote:
>
>> Hi,
>>
>> I've asked this before (and will probably keep asking for it until it
>> gets implemented).
>>
>> I just installed ESS 15.03  with Emacs 24.3 on my Windows 7 64-bit
>> machine.  When I run "M-x R" or "M-x R-newest", ESS insists on starting
>> the 32-bit version of R.  I would prefer it to start the 64-bit version.
>> Is there a variable I can set to get this as the default behavior?
>>
>> If not, can one at least hope that in the next version either
>> [1] running the 64-bit version (if it exists)  becomes the default, or
>> [2] a variable will be added that will allow the user to specify that
>> the 64-bit version should start by default?
>>
>> Note: I have a (probably very inefficient) elisp function that I wrote
>> (and invoke as M-x R64) that hunts for the string "-64bit" in the list
>> of R-version commands and runs the newest of those.  If you think it
>> would help, I'd be more than happy to contribute it. But it has only
>> been tested on my own machines (where it still works with ESS 15.03.)
>>
>> Best,
>>     Kevin
>>
>> On 4/1/2015 3:15 AM, Martin Maechler wrote:
>>> Dear  ESS  users,
>>> Last night, shortly before the end of March (= '03'), I have
>>> relased   ESS 15.03.
>>>
>>> To get it, use http://ess.r-project.org/index.php?Section=download
>>>
>>> This release is not showing off dramatically new features but
>>> the amount of improvements and small bug fixes is well worth
>>> upgrading.
>>>
>>> For more details, the first part of the ANNOUNCE file
>>> is included below, notably with the  'New Features' for 15.03.
>>>
>>> For the ESS Core Team,
>>> --
>>> Martin Maechler,
>>> ETH Zurich
>>>
>>> --------------------------------------------------------
>>>
>>> 1 ANNOUNCING ESS
>>> ****************
>>>
>>> The ESS Developers proudly announce the release of ESS 15.03
>>>
>>>      Emacs Speaks Statistics (ESS) provides an intelligent, consistent
>>> interface between the user and the software.  ESS interfaces with
>>> R/S-PLUS, SAS, BUGS/JAGS, Stata and other statistical analysis packages
>>> under the UNIX, GNU Linux, Microsoft Windows, Mac OS X and other
>>> operating systems.  ESS is a package for the GNU Emacs and XEmacs text
>>> editors whose features ESS uses to streamline the creation and use of
>>> statistical software.  ESS knows the syntax and grammar of statistical
>>> analysis packages and provides consistent display and editing features
>>> based on that knowledge.  ESS assists in interactive and batch execution
>>> of statements written in these statistical analysis languages.
>>>
>>>      ESS is freely available under the GNU General Public License (GPL).
>>> Please read the file COPYING which comes with the distribution, for more
>>> information about the license.  For more detailed information, please
>>> read the README files that come with ESS.
>>>
>>> 1.1 Getting the Latest Version
>>> ==============================
>>>
>>> The latest released version of ESS is always available on the web at:
>>> ESS web page (http://ess.r-project.org) or StatLib
>>> (http://lib.stat.cmu.edu/general/ESS/)
>>>
>>> 1.1.1 Git for ESS development
>>> -----------------------------
>>>
>>> For development and experimentation on new ESS features, there is now a
>>> GitHub branch for ESS, available at <https://github.com/emacs-ess/ESS>.
>>>
>>> 1.2 Current Features
>>> ====================
>>>
>>>      * Languages Supported:
>>>           * S family (R and S+ AKA S-PLUS)
>>>           * SAS
>>>           * OpenBUGS/JAGS
>>>           * Stata
>>>           * Julia
>>>      * Editing source code (S family, SAS, OpenBUGS/JAGS, Stata, Julia)
>>>           * Syntactic indentation and highlighting of source code
>>>           * Partial evaluation of code
>>>           * Loading and error-checking of code
>>>           * Source code revision maintenance
>>>           * Batch execution (SAS, OpenBUGS/JAGS)
>>>           * Use of imenu to provide links to appropriate functions
>>>      * Interacting with the process (S family, SAS, Stata, Julia)
>>>           * Command-line editing
>>>           * Searchable Command history
>>>           * Command-line completion of S family object names and file
>>>             names
>>>           * Quick access to object lists and search lists
>>>           * Transcript recording
>>>           * Interface to the help system
>>>      * Transcript manipulation (S family, Stata)
>>>           * Recording and saving transcript files
>>>           * Manipulating and editing saved transcripts
>>>           * Re-evaluating commands from transcript files
>>>      * Interaction with Help Pages and other Documentation (R)
>>>           * Fast Navigation
>>>           * Sending Examples to running ESS process.
>>>           * Fast Transfer to Further Help Pages
>>>      * Help File Editing (R)
>>>           * Syntactic indentation and highlighting of source code.
>>>           * Sending Examples to running ESS process.
>>>           * Previewing
>>>
>>> 1.3 Requirements
>>> ================
>>>
>>> ESS is most likely to work with current/recent versions of the following
>>> statistical packages: R/S-PLUS, SAS, Stata, OpenBUGS and JAGS.
>>>
>>>      ESS supports current, and recent, stable versions of GNU Emacs
>>> (currently, specifically, the 23.x and 24.x series;
>>> alpha/beta/pre-release versions are NOT SUPPORTED). Non-Windows users
>>> beware: GNU Emacs 24.3 is preferable to 24.1 or 24.2: these broken
>>> builds suffer from bug 12463
>>> <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12463> which will cause
>>> emacs and ESS to get progressively slower over time.
>>>
>>>      Due to XEmacs lacking some features that ESS requires, ESS support of
>>> XEmacs ends with ESS 12.04-4.  This decision will be re-visited in the
>>> future as XEmacs continues to sync with GNU Emacs.
>>>
>>>      To build the PDF documentation, you will need a version of TeX Live
>>> or texinfo that includes texi2dvi (BEWARE: recent TeX Live, and some
>>> texinfo RPMs, do NOT include texi2dvi).
>>>
>>> 1.4 Stability
>>> =============
>>>
>>> All recent released versions are meant to be release-quality versions.
>>> While some new features are being introduced, we are cleaning up and
>>> improving the interface.  We know that there are many remaining
>>> opportunities for documentation improvements, but all contributors are
>>> volunteers and time is precious.  Patches or suggested fixes with bug
>>> reports are much appreciated!
>>>
>>> 1.5 Mailing List
>>> ================
>>>
>>> There is a mailing list for discussions and announcements relating to
>>> ESS. Join the list by sending an e-mail with "subscribe ess-help" (or
>>> "help") in the body to <ess-help-request at stat.math.ethz.ch>;
>>> contributions to the list may be mailed to <ess-help at stat.math.ethz.ch>.
>>> Rest assured, this is a fairly low-volume mailing list.
>>>
>>>      The purposes of the mailing list include
>>>
>>>      * helping users of ESS to get along with it.
>>>      * discussing aspects of using ESS on Emacs and XEmacs.
>>>      * suggestions for improvements.
>>>      * announcements of new releases of ESS.
>>>      * posting small patches to ESS.
>>>
>>> 1.6 Reporting Bugs
>>> ==================
>>>
>>> Please send bug reports, suggestions etc.  to
>>> <ESS-bugs at stat.math.ethz.ch>
>>>
>>>      The easiest way to do this is within Emacs by typing
>>>
>>>      'M-x ess-submit-bug-report'
>>>
>>>      This also gives the maintainers valuable information about your
>>> installation which may help us to identify or even fix the bug.
>>>
>>>      If Emacs reports an error, backtraces can help us debug the problem.
>>> Type "M-x set-variable RET debug-on-error RET t RET". Then run the
>>> command that causes the error and you should see a *Backtrace* buffer
>>> containing debug information; send us that buffer.
>>>
>>>      Note that comments, suggestions, words of praise and large cash
>>> donations are also more than welcome.
>>>
>>> 1.7 Authors
>>> ===========
>>>
>>>      * A.J. Rossini (mailto:blindglobe at gmail.com)
>>>      * Richard M. Heiberger (mailto:rmh at temple.edu)
>>>      * Kurt Hornik (mailto:Kurt.Hornik at R-project.org)
>>>      * Martin Maechler (mailto:maechler at stat.math.ethz.ch)
>>>      * Rodney A. Sparapani (mailto:rsparapa at mcw.edu)
>>>      * Stephen Eglen (mailto:stephen at gnu.org)
>>>      * Sebastian P. Luque (mailto:spluque at gmail.com)
>>>      * Henning Redestig (mailto:henning.red at googlemail.com)
>>>      * Vitalie Spinu (mailto:spinuvit at gmail.com)
>>>
>>> 1.8 License
>>> ===========
>>>
>>> The source and documentation of ESS is free software.  You can
>>> redistribute it and/or modify it under the terms of the GNU General
>>> Public License as published by the Free Software Foundation; either
>>> version 2, or (at your option) any later version.
>>>
>>>      ESS is distributed in the hope that it will be useful, but WITHOUT
>>> ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
>>> FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in
>>> the file COPYING in the same directory as this file for more details.
>>>
>>> 1.9 New Features
>>> ================
>>>
>>> Changes and New Features in 15.03:
>>>      * ESS[R]: Full native support for 'company-mode'.
>>>      * ESS[R]: More efficient caching algorithm for R completion.
>>>      * ESS: New offset variable 'ess-close-paren-offset' to control the
>>>        indentation of the closing parentheses.
>>>      * ESS[R]: Ask for CRAN mirror only once per emacs session.
>>>      * ESS[R]: Detect 'library' and 'require' calls for better completion
>>>        caching.
>>>      * Buffer display is now customizable ('ess-show-buffer-action').
>>>      * Use 'y-or-n-p' instead of 'yes-or-no-p' throughout.
>>>      * More support for ODS in ess-sas-graph-view.
>>>      * Makefiles are now both UNIX and GNU friendly.
>>>      * ESS[R]: Simplify directory lookup in 'ess-developer' (#137).
>>>      * Make closed paren indentation consistent
>>>
>>>      Bug Fixes in 15.03:
>>>      * Fix open brace indentation bug (#27 in ess/R-ESS-bugs.R).
>>>      * Fix git version lookup
>>>      * Don't check directory modtime in R dialect.
>>>      * Declare all ess macros for edebug.
>>>      * Add 'ess-smart-comma' to eldoc message functions.
>>>      * Inform users when retrieving RDA aliases.
>>>      * Line ending in '~' is also a continuation line.
>>>      * Filing roxy paragraphs works as expected now.
>>>      * In 'ess-developer-add-package', remove incorrect 'wait' argument
>>>        from 'ess-get-words-from-vector' call.
>>>      * Fix #96, #117, #120, #125, #134, #137.
>>>      * Fix ess-quit-r.  Call base::q() even if it is masked.
>>>      * Fix 'ess-show-buffer' to always display the buffer in another
>>>        window.
>>>      * Makefile: Fix cd bug for directories with spaces in them
>>>      * 'ess-kill-buffer-and-go' modified to not restart R
>>>
>>> [..............]
>>>
>>> ______________________________________________
>>> ESS-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/ess-help
>> ______________________________________________
>> ESS-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/ess-help

-------------- next part --------------
;; the "latest" code always picks the 32-bit version.  This hack
;; finds the latest 64-bit version.
(defun R64 (&optional start-args)
  "Call the latest 64-bit version of R"
  (interactive "P")
  ;; sweep through the list of R-version commands
  ;; to find the 64-bit ones
  (defun m64 (target)
    "remove string '-64bit' from target"
    (if (string-match "-64bit" target)
	(replace-match "" t t target)
      ))
   (setq nobits(delq nil (mapcar 'm64 ess-r-versions-created)))
   ;; now use the newest version that matches a 64-bit version
   (defun krc-in-newest (source)
     (if source 
	 (if (string-match source ess-newest-R)
	     (concat source "-64bit")
	   nil)
       nil))
   (setq pending (delq nil (mapcar 'krc-in-newest nobits)))
   ;; take the first one
   (setq myname (car pending))
   ;; convert from string to symbol
   (setq mysym (intern-soft myname))
   ;; look up the function from the symbol
   (setq myfun (symbol-function mysym))
   ;; invoke it
   (funcall myfun start-args)
)


More information about the ESS-help mailing list