Premium
CXXR: an extensible R interpreter
Author(s) -
Runnalls Andrew
Publication year - 2013
Publication title -
wiley interdisciplinary reviews: computational statistics
Language(s) - English
Resource type - Journals
SCImago Journal Rank - 0.693
H-Index - 38
eISSN - 1939-0068
pISSN - 1939-5108
DOI - 10.1002/wics.1251
Subject(s) - code refactoring , interpreter , computer science , documentation , programming language , software engineering , task (project management) , software , code (set theory) , source code , engineering , set (abstract data type) , systems engineering
This paper describes CXXR, a project to refactor the R interpreter from C into C++, with a view to making the internals of the interpreter more readily accessible to researchers and developers. The continued growth of CRAN is a testament to the increasing number of developers engaged in R development. But far fewer researchers have experimented with the R interpreter itself. The code of the interpreter, written for the most part in C, is structured in a way that will be foreign to students brought up with object‐oriented programming, and the available documentation, though giving a general understanding of how the interpreter works, does not really enable a newcomer to start modifying the code with any confidence. The CXXR project is progressively refactoring the interpreter into C++, whilst all the time preserving existing functionality. By restructuring the code into tightly encapsulated and carefully documented classes, CXXR aims to open up the interpreter to more ready experimentation by statistical computing researchers. This paper focuses on the example task of providing, as a package, a new type of data vector, and shows how CXXR greatly facilitates such a task by internal changes to the structure of the interpreter, and by offering a higher‐level interface for packages to exploit. WIREs Comput Stat 2013, 5:181–189. doi: 10.1002/wics.1251 This article is categorized under: Software for Computational Statistics > Software/Statistical Software