| NEWS | R Documentation |
News for PackageRcpp
Changes in Rcpp release version 1.1.0 (2025-07-01)
Changes in Rcpp API:
C++11 is now the required minimal C++ standard
The
std::string_viewtype is now covered bywrap()(Lev Kandel in#1356 as discussed in#1357)A last remaining
DATAPTRuse has been converted toDATAPTR_RO(Dirk in#1359)Under R 4.5.0 or later,
R_ClosureEnvis used instead ofCLOENV(Dirk in#1361 fixing#1360)Use of
lsInternalswitched tolsInternal3(Dirk in#1362)Removed compiler detection macro in a header cleanup settingC++11 as the minunum (Dirk in#1364 closing#1363)
Variadic templates are now used onconditionally given C++11 (Dirkin#1367 closing#1366)
Remove
RCPP_USING_CXX11as a#defineas C++11 isnow a given (Dirk in#1369)Additional cleanup for
__cpluspluschecks (Iñaki in#1371 fixing#1370)Unordered set construction no longer needs a macro for thepre-C++11 case (Iñaki in#1372)
Lambdas are supported in a Rcpp Sugar functions (Iñaki in#1373)
The Date(time)Vector classes now have default ctor (Dirk in#1385 closing#1384)
Fixed an issue where Rcpp::Language would duplicate its arguments(Kevin in#1388, fixing#1386)
Changes in Rcpp Attributes:
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
Changes in Rcpp release version 1.0.14 (2025-01-11)
Changes in Rcpp API:
Support for user-defined databases has been removed (Kevin in#1314 fixing#1313)
The
SET_TYPEOFfunction and macro is no longer used (Kevinin#1315 fixing#1312)An erroneous cast to
intaffecting large return objecthas been removed (Dirk in#1335 fixing#1334)Compilation on DragonFlyBSD is now supported (Gábor Csárdi in#1338)
Use read-only
VECTOR_PTRandSTRING_PTRonlywith R 4.5.0 or later (Kevin in#1342 fixing#1341)
Changes in Rcpp Attributes:
Changes in Rcpp Deployment:
One unit tests for arm64 macOS has been adjusted; a macOScontinuous integration runner was added (Dirk in#1324)
Authors@R is now used in DESCRIPTION as mandated by CRAN, the
Rcpp.package.skeleton()function also creates it (Dirk in#1325 and#1327)A single datetime format test has been adjusted to match a changein R-devel (Dirk in#1348 fixing#1347)
Changes in Rcpp Documentation:
Changes in Rcpp 'hot-fix' release version 1.0.13-1 (2024-11-01)
Changes in Rcpp API:
Changes in Rcpp Deployment:
Authors@R is now used in DESCRIPTION as mandated by CRAN
Changes in Rcpp release version 1.0.13 (2024-07-11)
Changes in Rcpp API:
Set R_NO_REMAP if not already defined (Dirk in#1296)
Add variadic templates to be used instead of generated code(Andrew Johnson in#1303)
Count variables were switches to
size_tto avoid warningsabout conversion-narrowing (Dirk in#1307)Rcpp now avoids the usage of the (non-API) DATAPTR function whenaccessing the contents of Rcpp Vector objects where possible. (Kevin in#1310)
Rcpp now emits an R warning on out-of-bounds Vector accesses. Thismay become an error in a future Rcpp release. (Kevin in#1310)
Switch
VECTOR_PTRandSTRING_PTRto new API-compliantROvariants (Kevin in#1317 fixing#1316)
Changes in Rcpp Deployment:
Small updates to the CI test containers have been made (#1304)
Changes in Rcpp release version 1.0.12 (2024-01-08)
Changes in Rcpp API:
Missing header includes as spotted by some recent tools wereadded in two places (Michael Chirico in#1272 closing#1271).
Casts to avoid integer overflow in matrix row/col selectionshave been added (Aaron Lun#1281).
Three print format correction uncovered by R-devel wereapplied with thanks to Tomas Kalibera (Dirk in#1285).
Correct a print format correction in the RcppExports glue code(Dirk in#1288 fixing#1287).
The upcoming
OBJSXPaddition to R 4.4.0 is supported inthetype2namemapper (Dirk and Iñaki in#1293).
Changes in Rcpp Attributes:
Generated interface code from base R that fails under LTO is nowcorrected (Iñaki in#1274 fixing a StackOverflow issue).
Changes in Rcpp Documentation:
The caption for third figure in the introductory vignette hasbeen corrected (Dirk in#1277 fixing#1276).
A small formatting issue was correct in an Rd file asnoticed by R-devel (Dirk in#1282).
The Rcpp FAQ vignette has been updated (Dirk in#1284).
The
Rcpp.bibfile has been refreshed to current packageversions.
Changes in Rcpp Deployment:
The RcppExports file for an included test package has beenupdated (Dirk in#1289).
Changes in Rcpp release version 1.0.11 (2023-07-03)
Changes in Rcpp API:
Rcpp:::CxxFlags()now quotes only non-standard include pathon linux (Lukasz in#1243 closing#1242).Two unit tests no longer accidentally bark on stdout (Dirk andIñaki in#1245).
Compilation under C++20 usingclang++ and its standardlibrary is enabled (Dirk in#1248 closing#1244).
Use backticks in a generated
.Call()statement inRcppExports.R(Dirk#1256 closing#1255).Switch to
system2()to capture standard error messages inerror cases (Iñaki in#1259 and#1261 fixing#1257).
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
A test for
qnormnow uses the more accurate value from R4.3.0 (Dirk in#1252 and#1260 fixing#1251).Skip tests with path issues on Windows (Iñaki in#1258).
Container deployment in continuous integrations wasimproved. (Iñaki and Dirk in#1264, Dirk in#1269).
Several files receives minor edits to please
R CMD checkfrom r-devel (Dirk in#1267).
Changes in Rcpp release version 1.0.10 (2023-01-12)
Changes in Rcpp API:
Unwind protection is enabled by default (Iñaki in#1225).It can be disabled by defining
RCPP_NO_UNWIND_PROTECTbeforeincludingRcpp.h.RCPP_USE_UNWIND_PROTECTis not checkedanymore and has no effect. The associated pluginunwindProtectis therefore deprecated and will be removed in a future release.The 'finalize' method for Rcpp Modules is now eagerly materialized,fixing an issue where errors can occur when Module finalizers are run(Kevin in#1231 closing#1230).
Zero-row
data.frameobjects can receivepush_backorpush_front(Dirk in#1233 fixing#1232).One remaining
sprintfhas been replaced bysnprintf(Dirk and Kevin in#1236 and#1237).Several conversion warnings found by
clang++have beenaddressed (Dirk in#1240 and#1241).
Changes in Rcpp Attributes:
Changes in Rcpp Deployment:
Several GitHub Actions have been updated.
Changes in Rcpp release version 1.0.9 (2022-07-02)
Changes in Rcpp API:
Accomodate C++98 compilation by adjusting attributes.cpp (Dirk in#1193 fixing#1192)
Accomodate newest compilers replacing deprecated
std::unary_functionandstd::binary_functionwithstd::function(Dirk in#1202 fixing#1201 andCRAN request)Upon removal from precious list, the tag is set to null(Iñaki in#1205 fixing#1203)
Move constructor and assignment for strings have been added(Dean Scarff in#1219).
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
Accomodate four digit version numbers in unit test (Dirk)
Do not run complete test suite to limit test time to CRANpreference (Dirk in#1206)
Small updates to the CI test containers have been made
Some of changes also applied to an interim release1.0.8.3 made for CRAN on 2022-03-14.
Changes in Rcpp release version 1.0.8 (2022-01-11)
Changes in Rcpp API:
STRICT_R_HEADERSis now enabled by default, seeextensive discussion in#1158 closing#898.A new
#defineallows default setting of finalizercalls for external pointers (Iñaki in#1180 closing#1108).Rcpp:::CxxFlags()now quotes the include path generated,(Kevin in#1189 closing#1188).New header files
Rcpp/Light,Rcpp/Lighter,Rcpp/Lightestand defaultRcpp/Rcppfor fine-grainedaccess to features (and compilation time) (Dirk#1191addressing#1168).
Changes in Rcpp Attributes:
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
Changes in Rcpp release version 1.0.7 (2021-07-06)
Changes in Rcpp API:
Refactored
Rcpp_PreserveObjectandRcpp_ReleaseObjectwhich are now O(1) (Dirk and Iñaki in#1133 and#1135fixing#382 and#1081).A spuriously assigned variable was removed (Dirk in#1138 fixing#1137).
Global
RcoutandRcerrobjects are supportedvia a compiler directive (Iñaki in#1139 fixing#928)The
uint32_ttype is used throughout instead ofunsigned int(Dirk in#1153 fixing#1152).The
cfloatheader for floating point limits is nowincluded (Dirk in#1162 fixing#1161).
Changes in Rcpp Attributes:
Forthcoming Changes in Rcpp API:
Starting with Rcpp 1.0.8 anticipated in January 2022,
STRICT_R_HEADERSwill be enabled by default, see#1126.
Changes in Rcpp release version 1.0.6 (2021-01-14)
Changes in Rcpp API:
Replace remaining few uses of
EXTPTR_PTRwithR_ExternalPtrAddr(Kevin in#1098 fixing#1097).Add
push_backandpush_frontforDataFrame(Walter Somerville in#1099 fixing#1094).Remove a misleading-to-wrong comment (Mattias Ellert in#1109 cleaning up after#1049).
Address a sanitizer report by initializing two private
boolvariables (Benjamin Christoffersen in#1113).External pointer finalizer toggle default values werecorrected to true (Dirk in#1115).
Changes in Rcpp Documentation:
Several URLs were updated to https and/or new addresses (Dirk).
Changes in Rcpp Deployment:
Added GitHub Actions CI using the same container-based setupused previously, and also carried code coverage over (Dirk in#1128).
Changes in Rcpp support functions:
Rcpp.package.skeleton()avoids warning from R. (Dirk)
Changes in Rcpp release version 1.0.5 (2020-07-01)
Changes in Rcpp API:
The exception handler code in#1043 was updated to ensureproper include behavior (Kevin in#1047 fixing#1046).
A missing
Rcpp_list6definition was added to supportR 3.3.* builds (Davis Vaughan in#1049 fixing#1048).Missing
Rcpp_list{2,3,4,5}definition were added tothe Rcpp namespace (Dirk in#1054 fixing#1053).A further updated corrected the header include and provideda missing else branch (Mattias Ellert in#1055).
Two more assignments are protected with
Rcpp::Shield(Dirk in#1059).One call to
absis now properly namespaced withstd::(Uwe Korn in#1069).String object memory preservation was corrected/simplified(Kevin in#1082).
Changes in Rcpp Attributes:
Changes in Rcpp Sugar:
Changes in Rcpp support functions:
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
Travis CI unit tests now run a matrix over the versions of Ralso tested at CRAN (rel/dev/oldrel/oldoldrel), and coverage runsin parallel for a net speed-up (Dirk in#1056 and#1057).
The exceptions test is now partially skipped on Solaris asit already is on Windows (Dirk in#1065).
The default CI runner was upgraded to R 4.0.0 (Dirk).
The CI matrix spans R 3.5, 3.6, r-release and r-devel (Dirk).
Changes in Rcpp version 1.0.4 (2020-03-13)
Changes in Rcpp API:
Safer
Rcpp_list*,Rcpp_lang*andFunction.operator()(Romain in#1014,#1015).A number of
#nocovmarkers were added (Dirk in#1036,#1042 and#1044).Finalizer calls clear external pointer first (Kirill Müller andDirk in#1038).
Scalar operations with a rhs matrix no longer change thematrix value (Qiang in#1040 fixing (again)#365).
Rcpp::exceptionandRcpp::stopare now morethread-safe (Joshua Pritikin in#1043).
Changes in Rcpp Attributes:
The
cppFunctionhelper now deals correctly with mulitpledependsarguments (TJ McKinley in#1016 fixing#1017).Invisible return objects are now supported via new option (Kun Renin#1025 fixing#1024).
Unavailable packages referred to in
LinkingToare nowreported (Dirk in#1027 fixing#1026).The
sourceCppfunction can now create a debug DLL onWindows (Dirk in#1037 fixing#1035).
Changes in Rcpp Documentation:
The
.github/directory now has more explicit guidance oncontributing, issues, and pull requests (Dirk).The Rcpp Attributes vignette describe the new invisible returnobject option (Kun Ren in#1025).
Vignettes are now included as pre-made pdf files (Dirk in#1029)
The Rcpp FAQ has a new entry on the recommended
importFromdirective (Dirk in#1031 fixing#1030).The bib file for the vignette was once again updated tocurrent package versions (Dirk).
Changes in Rcpp Deployment:
Changes in Rcpp version 1.0.3 (2019-11-08)
Changes in Rcpp API:
Compilation can be sped up by skipping Modules headers via atoggle
RCPP_NO_MODULES(Kevin in#995 for#993).Compilation can be sped up by toggling
RCPP_NO_RTTIwhichimpliesRCPP_NO_MODULES(Dirk in#998 fixing#997).XPtrtags are now preserved inas<>(Stephen Wadein#1003 fixing#986, plus Dirk in#1012).A few more temporary allocations are now protected from garbagecollection (Romain Francois in#1010, and Dirk in#1011).
Changes in Rcpp Modules:
Improved initialization via explicit
Rcpp::prefix(Riccardo Porreca in#980).
Changes in Rcpp Deployment:
Changes in Rcpp Documentation:
The
Rcpp-modulesvignette received a major review andedit (Riccardo Porreca in#982).Minor whitespace alignments and edits were made in threevignettes following the newpinp release (Dirk).
New badges for DOI and CRAN and BioConductor reverse dependencieshave been added to README.md (Dirk).
Vignettes are now included pre-made (Dirk in#1005addressing#1004)).
The Rcpp FAQ has two new entries on 'no modules / no rtti' andexceptions across shared libraries (Dirk in#1009).
Changes in Rcpp version 1.0.2 (2019-07-20)
Changes in Rcpp API:
Changes in Rcpp Attributes:
Changes in Rcpp Sugar:
Changes in Rcpp Deployment:
Travis CI unit tests are now always running irrespective ofthe package version (Dirk in#954).
Changes in Rcpp Documentation:
Changes in Rcpp version 1.0.1 (2019-03-17)
Changes in Rcpp API:
Subsetting is no longer limited by an integer range (WilliamNolan in#920 fixing#919).
Error messages from subsetting are now more informative(Qiang and Dirk).
Shelterincreases count only on non-null objects(Dirk in#940 as suggested by Stepan Sindelar in#935).AttributeProxy::set()and a few related setters getShield<>to ensurerchkis happy (Romain in#947fixing#946).
Changes in Rcpp Attributes:
Changes in Rcpp Documentation:
Changes in Rcpp Deployment:
Changes in Rcpp version 1.0.0 (2018-11-05)
Happy tenth birthday to Rcpp, and hello release 1.0 !
Changes in Rcpp API:
The empty destructor for the
Dateclass was removedto please g++-9 (prerelease) and-Wdeprecated-copy(Dirk).The constructor for
NumericMatrix(not_init(n,k))wascorrected (Romain in#904, Dirk in#905, and alsoRomain in#908 fixing#907).Rcpp::Stringno longer silently drops embeddedNULbytes in strings but throws new Rcpp exceptionembedded_nul_in_string. (Kevin in#917 fixing#916).
Changes in Rcpp Deployment:
The Dockerfile for Continuous Integration sets the requiredtest flag (for release versions) inside the container (Dirk).
Correct the
R CMD checkcall to skip vignettes (Dirk).
Changes in Rcpp Attributes:
Changes in Rcpp Documentation:
Changes in Rcpp version 0.12.19 (2018-09-20)
Changes in Rcpp API:
The
no_init()accessor for vectors and matrices isnow wrapped inShield<>()to not triggerrchkwarnings (Kirill Müller in#893 addressing#892).STRICT_R_HEADERSwill be defined twelve months fromnow; until then we protect it viaRCPP_NO_STRICT_HEADERSwhich can then be used to avoid the definition; downstreammaintainers are encouraged to update their packages as needed(Dirk in#900 beginning to address#898).
Changes in Rcpp Attributes:
Changes in Rcpp Modules:
Changes in Rcpp Documentation:
Two typos were fixed in the Rcpp Sugar vignette (PatrickMiller in#895).
Several vignettes now use the
collapseargument toshow output in the corresponding code block.
Changes in Rcpp Deployment:
Changes in Rcpp version 0.12.18 (2018-07-21)
Changes in Rcpp API:
The
StringProxy::operator==is nowconstcorrect (Romain in#855 fixing#854).The
Environment::new_child()is nowconst(Romain in#858 fixing#854).Next
evalcodes now properly unwind (Lionel in the largeand careful#859 fixing#807).In debugging mode, more type information is shown on
abort()(Jack Wasey in#860 and#882 fixing#857).A new class was added which allow suspension of the RNGsynchronisation to address an issue seen inRcppDE(Kevin in#862).
Evaluation calls now happen in the
baseenvironment(which may fix an issue seen betweenconflicted and someBioConductor packages) (Kevin in#863 fixing#861).Call stack display on error can now be controlled morefinely (Romain in#868).
The new
Rcpp_fast_evalis used instead ofRcpp_evalthough this still requires settingRCPP_USE_UNWIND_PROTECTbefore includingRcpp.h(QiangKou in#867 closing#866).The
Rcpp::unwindProtect()function extracts theunwinding from theRcpp_fast_eval()function and makes itmore generally available. (Lionel in#873 and#877).The
tm_gmtoffpart is skipped on AIX too(#876).
Changes in Rcpp Attributes:
Changes in Rcpp Sugar:
Changes in Rcpp version 0.12.17 (2018-05-09)
Changes in Rcpp API:
The random number
Generatorclass no longer inherits fromRNGScope(Kevin in#837 fixing#836).A new class,
SuspendRNGSynchronizationScope, can be createdand used to ensure that calls to Rcpp functions do not attempt to call::GetRNGstate()or::PutRNGstate()for the duration ofsome code block.A spurious parenthesis was removed to please gcc8 (Dirkfixing#841)
The optional
Timerclass header now undefinesFALSEwhich was seen to have side-effects on some platforms(Romain in#847 fixing#846).Optional
StoragePolicyattributes now also work forstring vectors (Romain in#850 fixing#849).
Changes in Rcpp Documentation:
A few old typesetting conventions from the prior Rnw formathave been corrected (Peter Hickey in#831; Joris Meys; Dirk)
Two internal links to the introduction published in JSS have beenupdated to the changed filename given the newer TAS introduction.
Some remaining backticks were replaced with straight quotes(Ralf Stubner in#845).
A citation to the Rcpp introducion in the The AmericanStatistician has been added to the introductory and FAQ vignettes.
Changes in Rcpp version 0.12.16 (2018-03-08)
Changes in Rcpp API:
Rcpp now sets and puts the RNG state upon each entry to an Rcppfunction, ensuring that nested invocations of Rcpp functions manage theRNG state as expected (Kevin in#825 addressing#823).
The
R::pythagwrapper has been commented out; the underlyingfunction has been gone from R since 2.14.0, and::hypot()(part ofC99) is now used unconditionally for complex numbers (Dirk in#826).The
long longtype can now be used on 64-bit Windows (Kevinin#811 and again in#829 addressing#804).
Changes in Rcpp Attributes:
Changes in Rcpp Documentation:
The Rcpp FAQ vignette is now indexed as 'Rcpp-FAQ'; a stale Gmanereference was removed and entry for getting compilers under Conda was added.
The top-level README.md now has aSupport section.
The Rcpp.bib reference file was refreshed to current versions.
Changes in Rcpp version 0.12.15 (2018-01-16)
Changes in Rcpp API:
Calls from exception handling to
Rf_warning()now correctlyset an initial format string (Dirk in#777 fixing#776).The 'new' Date and Datetime vectors now have
is_namethodstoo. (Dirk in#783 fixing#781).Protect more temporary
SEXPobjects produced bywrap(Kevin in#784).Use public R APIs for
new_env(Kevin in#785).Evaluation of R code is now safer when compiled against R3.5 (you also need to explicitly define
RCPP_USE_UNWIND_PROTECTbefore includingRcpp.h). Longjumps of all kinds (conditioncatching, returns, restarts, debugger exit) are appropriatelydetected and handled, e.g. the C++ stack unwinds correctly(Lionel in#789). [ Committed but subsequently disabled in release0.12.15 ]The new function
Rcpp_fast_eval()can be used forperformance-sensitive evaluation of R code. UnlikeRcpp_eval(), it does not try to catch errors withtryEvalin order to avoid the catching overhead. While thisis safe thanks to the stack unwinding protection, this also meansthat R errors are not transformed to anRcpp::exception. Ifyou are relying on error rethrowing, you have to use the slowerRcpp_eval(). On old R versionsRcpp_fast_eval()falls back toRcpp_eval()so it is safe to use against anyversions of R (Lionel in#789). [ Committed but subsequentlydisabled in release 0.12.15 ]Overly-clever checks for
NAhave been removed (Kevin in#790).The included tinyformat has been updated to the current version,Rcpp-specific changes are now more isolated (Kirill in#791).
Overly pickyfall-through warnings by gcc-7 regarding
switchstatements are now pre-empted (Kirill in#792).Permit compilation on ANDROID (Kenny Bell in#796).
Improve support for NVCC, the CUDA compiler (Iñaki Ucar in#798 addressing#797).
Speed up tests for NA and NaN (Kirill and Dirk in#799 and#800).
Rearrange stack unwind test code, keep test disabled for now (Lionelin#801).
Further condition away protect unwind behind #define (Dirk in#802).
Changes in Rcpp Attributes:
Addressed a missing Rcpp namespace prefix when generating a C++interface (James Balamuta in#779).
Changes in Rcpp Documentation:
The Rcpp FAQ now shows
Rcpp::Rcpp.plugin.maker()and not theoutdated:::use applicable non-exported functions.
Changes in Rcpp version 0.12.14 (2017-11-17)
Changes in Rcpp API:
New const iterators functions
cbegin()andcend()added toMatrixRowas well (Dan Dillon in#750).The
Rostreamobject now contains aBufferrather thanallocating one (Kirill Müller in#763).New
DateVectorandDatetimeVectorclasses are now thedefault fully deprecating the old classes as announced one year ago.
Changes in Rcpp Package:
DESCRIPTION file now list doi information per CRAN suggestion.
Changes in Rcpp Documentation:
Update CITATION file with doi information and PeerJ preprint.
Changes in Rcpp version 0.12.13 (2017-09-24)
Changes in Rcpp API:
Changes in Rcpp Modules:
Misplacement of one parenthesis in macro
LOAD_RCPP_MODULEwas corrected (Lei Yu in#737)
Changes in Rcpp Documentation:
Rewrote the macOS sections to depend on official documentation dueto large changes in the macOS toolchain. (James Balamuta in#742addressing issue#682).
Added a new vignette ‘Rcpp-introduction’ based on new PeerJpreprint, renamed existing introduction to ‘Rcpp-jss-2011’.
Transitioned all vignettes to the 'pinp' RMarkdown template(James Balamuta and Dirk Eddelbuettel in#755 addressingissue#604).
Added an entry on running 'compileAttributes()' twice to theRcpp-FAQ (##745).
Changes in Rcpp version 0.12.12 (2017-07-13)
Changes in Rcpp API:
The
tinyformat.hheader now ends in a newline (#701).Fixed rare protection error that occurred when fetching stack tracesduring the construction of an Rcpp exception (Kirill Müller in#706).
Compilation is now also possibly on Haiku-OS (Yo Gong in#708addressing#707).
Dimension attributes are explicitly cast to
int(KirillMüller in#715).Unused arguments are no longer declared (Kirill Müller in#716).
Visibility of exported functions is now supported via the R macro
atttribute_visible(Jeroen Ooms in#720).The
no_init()constructor acceptsR_xlen_t(KirillMüller in#730).Loop unrolling used
R_xlen_t(Kirill Müller in#731).Two unused-variables warnings are now avoided (Jeff Pollock in#732).
Changes in Rcpp Attributes:
Execute tools::package_native_routine_registration_skeletonwithin package rather than current working directory (JJ in#697).
The R portion no longer uses
dir.existsto no require R 3.2.0or newer (Elias Pipping in#698).Fix native registration for exports with name attribute (JJ in#703addressing#702).
Automatically register init functions for Rcpp Modules (JJ in#705addressing#704).
Add Shield around parameters in Rcpp::interfaces (JJ in#713addressing#712).
Replace dot (".") with underscore ("_") in package names when generatingnative routine registrations (JJ in#722 addressing#721).
Generate C++ native routines with underscore ("_") prefix to avoidexporting when standard exportPattern is used in NAMESPACE (JJ in#725 addressing#723).
Changes in Rcpp version 0.12.11 (2017-05-20)
Changes in Rcpp API:
Rcpp::exceptions can now be constructed without a call stack (JimHester in#663 addressing#664).
Somewhat spurious compiler messages under very verbose settings arenow suppressed (Kirill Müller in#670,#671,#672,#687,#688,#691).
Refreshed the included
tinyformattemplate library(James Balamuta in#674 addressing#673).Added
printf-like syntax support for exception classes andvariadic templating forRcpp::stopandRcpp::warning(James Balamuta in#676).Exception messages have been rewritten to provide additionalinformation. (James Balamuta in#676 and#677 addressing#184).
One more instance of
Rf_mkStringis protected from garbagecollection (Dirk in#686 addressing#685).Two exception specification that are no longer tolerated by
g++-7.1or later were removed (Dirk in#690 addressing#689)
Changes in Rcpp Documentation:
Changes in Rcpp Sugar:
Changes in Rcpp Attributes:
Changes in Rcpp support functions:
The
Rcpp.package.skeleton()function now creates a packageregistration file provided R 3.4.0 or later is used (Dirk in#692)
Changes in Rcpp version 0.12.10 (2017-03-17)
Changes in Rcpp API:
Added new size attribute aliases for number of rows and columns inDataFrame (James Balamuta in#638 addressing#630).
Fixed single-character handling in
Rstreambuf(Iñaki Ucar in#649 addressing#647).XPtr gains a parameter
finalizeOnExitto enable running thefinalizer when R quits (Jeroen Ooms in#656 addressing#655).
Changes in Rcpp Sugar:
Changes in Rcpp Attributes:
The C++17 standard is supported with a new plugin (used eg for
g++-6.2).
Changes in Rcpp Documentation:
An overdue explanation of how C++11, C++14, and C++17 can be usedwas added to the Rcpp FAQ.
Changes in Rcpp version 0.12.9 (2017-01-14)
Changes in Rcpp API:
The exception stack message is now correctly demangled on allcompiler versions (Jim Hester in#598)
Date and Datetime object and vector now have format methods and
operator<<support (#599).The
sizeoperator inMatrixis explicitly referencedavoiding a g++-6 issues (#607 fixing#605).The underlying date calculation code was updated (#621,#623).
Addressed improper diagonal fill for non-symmetric matrices(James Balamuta in#622 addressing#619)
Changes in Rcpp Sugar:
Changes in Rcpp unit tests
Changes in Rcpp Documentation:
Changes in Rcpp build system
Changes in Rcpp version 0.12.8 (2016-11-16)
Changes in Rcpp API:
String and vector elements now use extended
R_xlen_tindices(Qiang in PR#560)Hashing functions now return unsigned int (Qiang in PR#561)
Added static methods
eye(),ones(), andzeros()for select matrix types (Nathan Russell in PR#569)The exception call stack is again correctly reported; print methodsand tests added too (Jim Hester in PR#582 fixing#579)
Variatic macros no longer use a GNU extensions (Nathan in PR#575)
Hash index functions were standardized on returning unsignedintegers (Also PR#575)
Changes in Rcpp Sugar:
Changes in Rcpp unit tests
A test for expression vectors was corrected.
The constructor test for datetime vectors reflects the new classeswhich treats Inf correctly (and still as a non-finite value)
Changes in Rcpp Attributes
Updated Date and Datetime vector classes:
The
DateVectorandDatetimeVectorclasses were renamedwith a prefixold; they are currentlytypedef'ed to theexisting name (#557)New variants
newDateVectorandnewDatetimeVectorwereadded based onNumericVector(also#557,#577,#581,#587)By defining
RCPP_NEW_DATE_DATETIME_VECTORSthe new classescan activated. We intend to make the new classes the default no soonerthan twelve months from this release.The
capabilities()function can also be used for presence ofthis feature
Changes in Rcpp version 0.12.7 (2016-09-04)
Changes in Rcpp API:
The
NORETmacro is now defined if it was not already definedby R itself (Kevin fixing issue#512).Environment functions get() & find() now accept a Symbol(James Balamuta in#513 addressing issue#326).
Several uses of
Rf_evalwere replaced by the preferredRcpp::Rcpp_eval(Qiang in PR#523 closing#498).Improved Autogeneration Warning for RcppExports(James Balamuta in#528 addressing issue#526).
Fixed invalid C++ prefix identifiers in auto-generated code(James Balamuta in#528 and#531 addressing issue#387; Simon Dirmeier in#548).
String constructors now set default UTF-8 encoding (Qiang Kou in#529 fixing#263).
Add variadic variants of the
RCPP_RETURN_VECTORandRCPP_RETURN_MATRIXmacro when C++11 compiler used (Artem Klevtsovin#537 fixing#38).
Changes in Rcpp build system
Changes in Rcpp unit tests
Changes in Rcpp Examples:
Changes in Rcpp version 0.12.6 (2016-07-18)
Changes in Rcpp API:
The
long longdata type is used only if it is available,to avoid compiler warnings (Kirill Müller in#488).The compiler is made aware that
stop()never returns, toimprove code path analysis (Kirill Müller in#487 addressing issue#486).String replacement was corrected (Qiang in#479 followingmailing list bug report by Masaki Tsuda)
Allow for UTF-8 encoding in error messages via
RCPP_USING_UTF8_ERROR_STRINGmacro (Qin Wenfeng in#493)The R function
Rf_warningcallis now provided as well (asusual without leadingRf_) (#497 fixing#495)
Changes in Rcpp Sugar:
Const-ness of
minandmaxfunctions has been corrected.(Dan Dillon in PR#478 fixing issue#477).Ambiguities for matrix/vector and scalar operations have been fixed(Dan Dillon in PR#476 fixing issue#475).
New
algorithmheader using iterator-based approach forvectorized functions (Dan in PR#481 revisiting PR#428 andaddressing issue#426, with futher work by Kirill in PR#488and Nathan in#503 fixing issue#502).The
na_omit()function is now faster for vectors withoutNAvalues (Artem Klevtsov in PR#492)
Changes in Rcpp Attributes:
Changes in Rcpp Documentation:
A section on default parameters was added to the Rcpp FAQ vignette(James Balamuta in#505 fixing#418).
The Rcpp-attributes vignette is now mentioned more prominently inquestion one of the Rcpp FAQ vignette.
The Rcpp Quick Reference vignette received a facelift with newsections on Rcpp attributes and plugins begin added. (James Balamuta in#509 fixing#484).
The bib file was updated with respect to the recent JSS publicationfor RProtoBuf.
Changes in Rcpp version 0.12.5 (2016-05-14)
Changes in Rcpp API:
Changes in Rcpp Attributes:
R 3.3.0 Windows with Rtools 3.3 is now supported (Qin Wenfeng in PR#451).
Correct handling of dependent file paths on Windows (use winslash = "/").
Changes in Rcpp Modules:
Changes in Rcpp support functions:
Changes in Rcpp version 0.12.4 (2016-03-22)
Changes in Rcpp API:
Changes in Rcpp Sugar:
Changes in Rcpp Attributes:
A plugin for C++14 was added (Dan in PR#427)
Changes in Rcpp Documentation:
An entry was added to the Rcpp-FAQ vignette describing the requiredpackages for vignette building (#422).
Use on OS X was further detailed (James Balamuta in#433 withfurther review by Bob Rudis).
An entry was added concerning the hard-code limit of arguments tosome constructor and function (cf#435).
The Rcpp-FAQ vignette now contains a table of content.
Typos and indentation were corrected in the Rcpp Sugar vignette(#445 by Colin Gillespie).
Changes in Rcpp version 0.12.3 (2016-01-10)
Changes in Rcpp API:
Changes in Rcpp Attributes:
Changes in Rcpp Modules:
Changes in Rcpp Repository:
Changes in Rcpp version 0.12.2 (2015-11-14)
Changes in Rcpp API:
Correct return type in product of matrix dimensions (PR#374by Florian)
Before creating a single String object from a
SEXP, ensurethat it is from a vector of length one (PR#376 by Dirk, fixing#375).No longer use
STRING_ELTas a left-hand side, thanks to aheads-up by Luke Tierney (PR#378 by Dirk, fixing#377).Rcpp Module objects are now checked more carefully (PR#381by Tianqi, fixing#380)
An overflow in Matrix column indexing was corrected (PR#390by Qiang, fixing a bug reported by Allessandro on the list)
Nullabletypes can now be assignedR_NilValueinfunction signatures. (PR#395 by Dan, fixing issue#394)operator<<()now always shows decimal points (PR#396by Dan)Matrix classes now have a
transpose()function (PR#397by Dirk fixing#383)operator<<()for complex types was added (PRs#398 byQiang and#399 by Dirk, fixing#187)
Changes in Rcpp Attributes:
Enable export of C++ interface for functions that return void.
Changes in Rcpp Sugar:
Changes in Rcpp Documentation:
The
NEWSfile now links to GitHub issue tickets and pullrequests.The
Rcpp.bibfile with bibliographic references was updated.
Changes in Rcpp version 0.12.1 (2015-09-10)
Changes in Rcpp API:
Correct use of WIN32 instead of _WIN32 to please Windows 10
Add an assignment operator to
DimNameProxy(PR#339 by Florian)Add vector and matrix accessors
.at()with bounds checking(PR#342 by Florian)Correct character vector conversion from single char (PR#344 byFlorian fixing issue#343)
Correct on use of
R_xlen_tback tosize_t(PR#348 byRomain)Correct subsetting code to allow for single assignment (PR#349 byFlorian)
Enable subset assignment on left and righ-hand side (PR#353 byQiang, fixing issue#345)
Refreshed to included
tinyformattemplate library (PR#357 byDirk, issue#356)Add
operator<<()for vectors and matrices (PR#361 by Danfixing issue#239)Make
StringandString_Proxyobjects comparable (PR#366 and PR#372 by Dan, fixing issue#191)Add a new class
Nullablefor objects which may beNULL(PR#368 by Dirk and Dan, fixing issue#363)Correct creation and access of large matrices (PR#370 by Florian,fixing issue#369)
Changes in Rcpp Attributes:
Correctly reset directory in case of no-rebuilding but Windows code(PR#335 by Dirk)
Changes in Rcpp Modules:
Changes in Rcpp Documentation:
The
Rcpp.bibfile with bibliographic references was updated.
Changes in Rcpp version 0.12.0 (2015-07-24)
Changes in Rcpp API:
Rcpp_eval()no longer usesR_ToplevelExecwhen evaluatingR expressions; this should resolve errors where calling handlers (e.g.throughsuppressMessages()) were not properly respected.All internal length variables have been changed from
R_len_ttoR_xlen_tto support vectors longer than 2^31-1 elements (viaPR#303 by Qiang Kou).The sugar function
sapplynow supports lambda functions(addressing#213 thanks to Matt Dziubinski)The
varsugar function now uses a more robust two-passmethod, supports complex numbers, with new unit tests added (via PR#320 by Matt Dziubinski)Stringconstructors now allow encodings (via PR#310by Qiang Kou)Stringobjects are preserving the underlyingSEXPobjects better, and are more careful about initializations (via PRs#322 and#329 by Qiang Kou)DataFrame constructors are now a little more careful (via PR#301 by Romain Francois)
For R 3.2.0 or newer,
Rf_installChar()is used instead ofRf_install(CHAR())(via PR#332).
Changes in Rcpp Attributes:
Use more robust method of ensuring unique paths for generated sharedlibraries.
The
evalCppfunction now also supports thepluginsargument.Correctly handle signature termination characters ('{' or ';') containedin quotes.
Changes in Rcpp Documentation:
The
Rcpp-FAQvignette was once again updated with respect toOS X issues and Fortran libraries needed for e.g.RcppArmadillo.The included
Rcpp.bibbibtex file (which is also used byother Rcpp* packages) was updated with respect to its CRAN references.
Changes in Rcpp version 0.11.6 (2015-05-01)
Changes in Rcpp API:
The unwinding of exceptions was refined to protect against inadvertentmemory leaks.
Header files now try even harder not to let macro definitions leak.
Matrices have a new default constructor for zero-by-zero dimensionmatrices (via a pull request by Dmitrii Meleshko).
A new
empty()string constructor was added (via another pullrequest).Better support for Vectors with a storage policy different from thedefault, i.e.
NoProtectStorage, was added.
Changes in Rcpp Attributes:
Rtools 3.3 is now supported.
Changes in Rcpp version 0.11.5 (2015-03-04)
Changes in Rcpp API:
An error handler for tinyformat was defined to prevent the
assert()macro from spilling.The
Rcpp::warningfunction was added as a wrapper forRf_warning.The
XPtrclass was extended with newchecked_getandreleasefunctions as well as improved behavior (throw anexception rather than crash) when a NULL external pointer is dereferenced.R code is evaluated within an
R_toplevelExecblock to preventuser interrupts from bypassing C++ destructors on the stack.The
Rcpp::Environmentconstructor can now use a suppliedparent environment.The
Rcpp::Functionconstructor can now use a suppliedenvironment or namespace.The
attributes_hiddenmacro from R is used to shield internalfunctions; theR_ext/Visibility.hheader is now included as well.A
Rcpp::printfunction was added as a wrapper aroundRf_PrintValue.
Changes in Rcpp Attributes:
The
pkg_types.hfile is now included inRcppExports.cppif it is present in either theinst/includeorsrc.sourceCppwas modified to allow includes of local files(e.g.#include "foo.hpp"). Implementation files (*.cc; *.cpp) correspondingto local includes are also automatically built if they exist.The generated attributes code was simplified with respect to
RNGScopeand now usesRObjectand its destructor rather thanSEXPprotect/unprotect.Support addition of the
rngparameter inRcpp::exportto suppress the otherwise automatic inclusion ofRNGScopeingenerated code.Attributes code was made more robust and can e.g. no longer recurse.
Version 3.2 of the Rtools is now correctly detected as well.
Allow 'R' to come immediately after '***' for defining embedded Rcode chunks in sourceCpp.
The attributes vignette has been updated with documentationon new features added over the past several releases.
Changes in Rcpp tests:
On Travis CI, all build dependencies are installed as binary
.debpackages resulting in faster tests.
Changes in Rcpp version 0.11.4 (2015-01-20)
Changes in Rcpp API:
The
ListOf<T>class gains the.attrand.namesmethods common to other Rcpp vectors.The
[dpq]nbinom_mu()scalar functions are now available viatheR::namespace when R 3.1.2 or newer is used.Add an additional test for AIX before attempting to include
execinfo.h.Rcpp::stopnow supports improvedprintf-like syntaxusing the small tinyformat header-only library (following a similarimplementation in Rcpp11)Pairlist objects are now protected via an additional
Shield<>as suggested by Martin Morgan on the rcpp-devel list.Sorting is now prohibited at compile time for objects of type
List,RawVectorandExpressionVector.Vectors now have a
Vector::const\_iteratorthat is 'const correct'thanks to fix by Romain following a bug report in rcpp-devel by Martyn Plummer.The
mean()sugar function now uses a more robust two-passmethod, and new unit tests formean()were added at the same time.The
mean()andvar()functions now support all corevector types.The
setequal()sugar function has been corrected viasuggestion by Qiang Kou following a bug report by Søren Højsgaard.The macros
major,minor, andmakedevno longer leakin from the (Linux) system headersys/sysmacros.h.The
push_front()string function was corrected.
Changes in Rcpp Attributes:
Only look for plugins in the package's namespace(rather than entire search path).
Also scan header files for definitions of functions to be considerdby Attributes.
Correct the regular expression for source files which are scanned.
Changes in Rcpp unit tests
Added a new binary test which will load a pre-built package toensure that the Application Binary Interface (ABI) did not change; thistest will (mostly or) only run at Travis where we have reasonable controlover the platform running the test and can provide a binary.
New unit tests for sugar functions
mean,setequalandvarwere added as noted above.
Changes in Rcpp Examples:
For the (old) examples
ConvolveBenchmarksandOpenMP,the respectiveMakefilewas renamed toGNUmakefileto pleaseR CMD checkas well as the CRAN Maintainers.
Changes in Rcpp version 0.11.3 (2014-09-27)
Changes in Rcpp API:
The deprecation of
RCPP_FUNCTION_*which was announced withrelease 0.10.5 last year is proceeding as planned, and the filemacros/preprocessor_generated.hhas been removed.Timerno longer records time between steps, but times fromthe origin. It also gains aget_timers(int)methods thatcreates a vector ofTimerthat have the same origin. This is modelledon theRcpp11implementation and is more useful for situations wherewe use timers in several threads.Timeralso gains a constructortaking ananotime_tto use as its origin, and aoriginmethod.This can be useful for situations where the number of threads is not knownin advance but we still want to track what goes on in each thread.A cast to
boolwas removed in the vector proxy code asinconsistent behaviour between clang and g++ compilations was noticed.A missing
update(SEXP)method was added thanks to pullrequest by Omar Andres Zapata Mesa.A proxy for
DimNameswas added.A
no_initoption was added for Matrices and Vectors.The
InternalFunctionclass was updated to work withstd::function(provided a suitable C++11 compiler is available)via a pull request by Christian Authmann.A
new_env()function was added toEnvironment.hThe return value of range eraser for Vectors was fixed in a pullrequest by Yixuan Qiu.
Changes in Rcpp Sugar:
In
ifelse(), the returnedNAtype was corrected foroperator[].
Changes in Rcpp Attributes:
Include LinkingTo in DESCRIPTION fields scanned to confirm thatC++ dependencies are referenced by package.
Add
dryRunparameter tosourceCpp.Corrected issue with relative path and R chunk use for
sourceCpp.
Changes in Rcpp Documentation:
The
Rcpp-FAQvignette was updated with respect to OS X issues.A new entry in the
Rcpp-FAQclarifies the use of licenses.Vignettes build results no longer copied to
/tmpto please CRAN.The Description in
DESCRIPTIONhas been shortened.
Changes in Rcpp support functions:
The
Rcpp.package.skeleton()function will now usepkgKitten package, if available, to create a package which passesR CMD checkwithout warnings. A newSuggests:has been addedforpkgKitten.The
modules=TRUEcase forRcpp.package.skeleton()hasbeen improved and now runs without complaints fromR CMD checkas well.
Changes in Rcpp unit test functions:
Functions from theRUnit package are now prefixed with
RUnit::The
testRcppModuleandtestRcppClasssample packagesnow passR CMD check --as-crancleanly with NOTES or WARNINGS
Changes in Rcpp version 0.11.2 (2014-06-06)
Changes in Rcpp API:
Implicit conversions, e.g. between
NumericVectorandIntegerVector, will now give warnings if you use\#define RCPP_WARN_ON_COERCEbefore including the Rcppheaders.Templated
Listcontainers,ListOf<T>, have beenintroduced. When subsetting such containers, the return is assumedto be of type T, allowing code such asListOf<NumericVector> x; NumericVector y = x[0] + x[1] + x[2].In a number of instances, returned results are protected and/or castmore carefully.
Changes in Rcpp Attributes
Trailing line comments are now stripped by the attributesparser. This allows the parser to handle C++ source filescontaining comments inline with function arguments.
The
USE_CXX1Xenvironment variable is now defined bythe cpp11 plugin when R >= 3.1. Two additional plugins have beenadded for use with C++0x (eg when using g++ 4.6.* as on Windows)as well as C++1y for compilers beginning to support the nextrevision of the standard; additional fallback is provided forWindows.compileAttributes()now also considers Imports: whichmay suppress a warning when runningRcpp.package.skeleton().
Changes in Rcpp version 0.11.1 (2014-03-13)
Changes in Rcpp API:
Preserve backwards compatibility withRcpp 0.10.* byallowing
RObjectextraction from vectors (or lists) of RcppobjectsAdd missing default constructor to Reference class that wasomitted in the header-only rewrite
Fixes for
NAandNaNhandling of theIndexHashclass, as well as the vector.sort()method. These fixes ensure that sugar functions depending onIndexHash(i.e.unique(),sort_unique(),match()) will now properly handleNAandNaNvalues for numeric vectors.DataFrame::nrowsnow more accurately mimics R'sinternal behavior (checks the row.names attribute)Numerous changes to permit compilation on the Solaris OS
Rcpp vectors gain a subsetting method – it is now possibleto subset an Rcpp vector using
CharacterVectors (subsetby name),LogicalVectors (logical subsetting), andIntegerVectors (0-based index subsetting). Such subsettingwill also work with Rcpp sugar expressions, enabling expressionssuch asx[ x > 0].Comma initialization (e.g.
CharacterVector x = "a", "b", "c";, has been disabled, asit causes problems with the behavior of the=operator withRcpp::Lists. Users who want to re-enable this functionalitycan use#define RCPP_COMMA_INITIALIZATION, but be aware ofthe above caveat. The more verboseCharacterVector x = CharacterVector::create("a", "b", "c")is preferred.
Changes in Rcpp Attributes
Fix issue preventing packages with
Rcpp::interfacesattribute from compiling.Fix behavior with attributes parsing of
::createfor defaultarguments, and also allow constructors of a given size(e.g.NumericVector v = NumericVector(10))gives a defaultvalue ofnumeric(10)at the R level). Also make NAs preservetype when exported to R (e.g.NA_STRINGas a default argumentmaps toNA_character_at the R level)
Changes in Rcpp modules
Corrected the
un_pointerimplementation forobject
Changes in Rcpp version 0.11.0 (2014-02-02)
Changes in Rcpp API:
Functions provided/used byRcpp are now registeredwith R and instantiated by client package alleviating the new forexplicit linking against
libRcppwhich is therefore nolonger created.Updated the
Rcpp.package.skeleton()function accordingly.New class
StretchyListfor pair lists with fast addition ofelements at the front and back. This abstracts the 3 functionsNewList,GrowListandInsertused in variouspackages and in parsers in R.The function
dnt,pnt,qntsugarfunctions were incorrectly expanding to the no-degree-of-freedomsvariant.Unit tests for
pntwere added.The sugar table function did not handle NAs and NaNs properlyfor numeric vectors. Fixed and tests added.
The internal coercion mechanism mapping numerics to strings hasbeen updated to better matchR (specifically with
Inf,-Inf,andNaN.)Applied two bug fixes to Vector
sort()andRObjectdefinition spotted and corrected by Kevin UsheyNew
checkUserInterrupt()function that provides a C++ friendlyimplementation ofR_CheckUserInterrupt.
Changes in Rcpp attributes:
Embedded R code chunks in sourceCpp are now executed withinthe working directory of the C++ source file.
Embedded R code chunks in sourceCpp can now be disabled.
Changes in Rcpp documentation:
The Rcpp-FAQ and Rcpp-package vignettes have been updated and expanded.
Vignettes are now typeset with grey background for code boxes.
The bibtex reference file has been update to reflexctcurrent package versions.
Changes in Rcpp unit tests:
The file
tests/doRUnit.Rwas rewritten following thepattern deployed inRProtoBuf which is due to Murray StokelyThe function
test()was rewritten; it provides aneasy entry point to running unit tests of the installed package
Changes in Rcpp version 0.10.6 (2013-10-27)
Changes in Rcpp API:
The function
exposeClasstakes a description of theconstructors, fields and methods to be exposed from a C++class, and writes C++ and R files in the package. Inheritedclasses can be dealt with, but require data type information.This approach avoids hand-coding module files.Two missing
is<>()templates forCharacterVectorandCharacterMatrixhave been added,and some tests foris_na()andis_finite()have beencorrected thanks to Thomas Tse.
Changes in R code:
Export linking helper function
LdFlagsas well asRcppLdFlags.Function
Rcpp.package.skeleton()no longer passes anamespaceargument on topackage.skeleton()
Changes in R setup:
Raise requirement for R itself to be version 3.0.0 or lateras needed by the vignette processing
Changes in Rcpp attributes:
sourceCppnow correctly binds to Rtools 3.0 and 3.1
Changes in Rcpp version 0.10.5 (2013-09-28)
Changes in R code:
New R function
demanglethat calls theDEMANGLEmacro.New R function
sizeofto query the byte size of a type. Thisreturns an object of S3 classbytesthat has aprintmethodshowing bytes and bits.
Changes in Rcpp API:
Add
defined(__sun)to lists of operating systems totest for when checking for lack ofbacktrace()needed forstack traces.as<T*>,as<const T*>,as<T&>andas<const T&>are now supported, whenT is a class exposed by modules, i.e. withRCPP_EXPOSED_CLASSDoubleVectoras been added as an alias toNumericVectorNew template function
is<T>to identify if an R objectcan be seen as aT. For exampleis<DataFrame>(x).This is a building block for more expressive dispatch in various places(modules and attributes functions).wrapcan now handle more types, i.e. types that iterate overstd::pair<const KEY, VALUE>where KEY can be converted to aStringandVALUEis either a primitive type (int, double)or a type that wraps. Examples :std::map<int, double>: we can make a String from an int,and double is primitiveboost::unordered_map<double, std::vector<double> >: we can makea String from a double andstd::vector<double>can wrap itself
Other examples of this are included at the end of the
wrapunit testfile (runit.wrap.Randwrap.cpp).wrapnow handles containers of classes handled by modules. e.g.if you expose a classFoovia modules, then you can wrapvector<Foo>, ... An example is included in thewrapunit testfileRcppLdFlags(), often used inMakevarsfiles ofpackages usingRcpp, is now exported from the package namespace.
Changes in Attributes:
Objects exported by a module (i.e. by a
RCPP_MODULEcallin a file that is processed bysourceCpp) are now directlyavailable in the environment. We used to make the module objectavailable, which was less useful.A plugin for
openmphas been added to support use of OpenMP.Rcpp::exportnow takes advantage of the more flexibleas<>, handling constness and referenceness of the input types.For users, it means that for the parameters of function exported by modules,we can now use references, pointers and const versions of them.The fileModule.cppfile has an example.No longer call non-exported functions from the tools package
No longer search the inline package as a fallback when loadingplugins for the the
Rcpp::pluginsattribute.
Changes in Modules:
We can now expose functions and methods that take
T&orconst T&as arguments. In these situationsobjects are no longer copied as they used to be.
Changes in sugar:
is_nasupports classesDatetimeVectorandDateVector
Changes in Rcpp documentation:
The vignettes have been moved from
inst/doc/to thevignettesdirectory which is now preferred.The appearance of the vignettes has been refreshed byswitching to the Bistream Charter font, and microtype package.
Deprecation of
RCPP_FUNCTION_*:The macros from the
preprocessor_generated.hfilehave been deprecated. They are still available, but they print amessage in addition to their expected behavior.The macros will be permanently removed in the firstRcpprelease after July 2014.
Users of these macros should start replacing them with moreup-to-date code, such as using 'Rcpp attributes' or 'Rcpp modules'.
Changes in Rcpp version 0.10.4 (2013-06-23)
Changes in R code: None beyond those detailed for Rcpp Attributes
Changes in Rcpp attributes:
Fixed problem whereby the interaction between the gc and theRNGScope destructor could cause a crash.
Don't include package header file in generated C++ interfaceheader files.
Lookup plugins ininline package if they aren't foundwithin theRcpp package.
Disallow compilation for files that don't have extensionssupported by R CMD SHLIB
Changes in Rcpp API:
The
DataFrame::createset of functions has been reworkedto just useList::createand feed to theDataFrameconstructorThe
operator-()semantics forDateandDatetimeare now more inline with standard C++ behaviour;with thanks to Robin Girard for the report.RNGScope counter now uses unsigned long rather than int.
Vector<*>::erase(iterator, iterator)was fixed. Nowit does not remove the element pointed by last (similar to what isdone on stl types and what was intended initially). Reported onRcpp-devel by Toni Giorgino.Added equality operator between elements of
CharacterVectors.
Changes in Rcpp sugar:
New function
na_omitbased on a StackOverflow threadNew function
is_finiteandis_infinitethatreproduces the behavior of R'sis.finiteandis.infinitefunctions
Changes in Rcpp build tools:
Fix by Martyn Plummer for Solaris in handling of
SingleLogicalResult.The
src/Makevarsfile can now optionally override thepath for/usr/bin/install_name_toolwhich is used on OS X.Vignettes are trying harder not to be built in parallel.
Changes in Rcpp documentation:
Updated the bibliography in
Rcpp.bib(which is alsosourced by packages using Rcpp).Updated the
THANKSfile.
Planned Deprecation of
RCPP_FUNCTION_*:The set of macros
RCPP_FUNCTION_etc ... from thepreprocessor_generated.hfile will be deprecated in the next versionofRcpp, i.e they will still be available but will generate somewarning in addition to their expected behavior.In the first release that is at least 12 months after this announcement, themacros will be removed fromRcpp.
Users of these macros (if there are any) should start replacing themwith more up to date code, such as using Rcpp attributes or Rcppmodules.
Changes in Rcpp version 0.10.3 (2013-03-23)
Changes in R code:
Prevent build failures on Windowsn when Rcpp is installedin a library path with spaces (transform paths in the same mannerthat R does before passing them to the build system).
Changes in Rcpp attributes:
Rcpp modules can now be used with
sourceCppStandalone roxygen chunks (e.g. to document a class) are nowtransposed into RcppExports.R
Added
Rcpp::pluginsattribute for bindingdirectly to inline plugins. Plugins can be registered usingthe newregisterPluginfunction.Added built-in
cpp11plugin for specifyingthe use of C++11 in a translation unitMerge existing values of build related environmentvariables for sourceCpp
Add global package include file to RcppExports.cppif it exists
Stop with an error if the file name passed to
sourceCpphas spaces in itReturn invisibly from void functions
Ensure that line comments invalidate block comments whenparsing for attributes
Eliminated spurious empty hello world function definitionin Rcpp.package.skeleton
Changes in Rcpp API:
The very central use of R API R_PreserveObject andR_ReleaseObject has been replaced by a new system based on thefunctions Rcpp_PreserveObject, Rcpp_ReleaseObject and Rcpp_ReplaceObjectwhich shows better performance and is implemented using a generic vectortreated as a stack instead of a pairlist in the Rimplementation. However, as this preserve / release code is stilla little rough at the edges, a new #define is used (in config.h)to disable it for now.
Platform-dependent code in Timer.cpp now recognises a fewmore BSD variants thanks to contributed defined() test suggestions
Support for wide character strings has been added throughout theAPI. In particular String, CharacterVector, wrap and as are aware ofwide character strings
Changes in Rcpp version 0.10.2 (2012-12-21)
Changes in Rcpp API:
Source and header files were reorganized and consolidated sothat compile time are now significantly lower
Added additional check in
RstreambufdeletetionAdded support for
clang++when usinglibc++,and for ancicpcinstd=c++11mode, thanks to apatch by Yan ZhouNew class
Rcpp::Stringto facilitate working with a singleelement of a character vectorNew utility class sugar::IndexHash inspired from SimonUrbanek's fastmatch package
Implementation of the equality operator between two Rcomplex
RNGScopenow has an internal counter that enables itto be safely used multiple times in the same stack frame.New class
Rcpp::Timerfor benchmarking
Changes in Rcpp sugar:
More efficient version of
matchbased onIndexHashMore efficient version of
uniquebase onIndexHashMore efficient version of
inbase onIndexHashMore efficient version of
duplicatedbase onIndexHashMore efficient version of
self_matchbase onIndexHashNew function
collapsethat implements paste(., collapse= "" )
Changes in Rcpp attributes:
Use code generation rather than modules to implement
sourceCppandcompileAttributes(eliminatesproblem with exceptions not being able to cross shared libraryboundaries on Windows)Exported functions now automatically establish an
RNGScopeFunctions exported by
sourceCppnow directlyreference the external function pointer rather than rely ondynlib lookupOn Windows, Rtools is automatically added to the PATHduring
sourceCppcompilationsDiagnostics are printed to the console if
sourceCppfails and C++ development tools are not installedA warning is printed if when
compileAttributesdetectsRcpp::dependsattributes in source files that are notmatched by Depends/LinkingTo entries in the package DESCRIPTION
Changes in Rcpp version 0.10.1 (2012-11-26)
Changes in Rcpp sugar:
New functions:
setdiff,union_,intersectsetequal,in,min,max,range,match,table,duplicatedNew function:
clampwhich combines pmin and pmax, e.g.clamp( a, x, b) is the same as pmax( b, pmin(x, a) )New function:
self_matchwhich implements somethingsimilar tomatch( x, unique( x ) )
Changes in Rcpp API:
The
Vectortemplate class (henceNumericVector...) get theis_naand theget_nastatic methods.New helper class
no_initthat can be used tocreate a vector without initializing its data, e.g. :IntegerVector out = no_init(n) ;New exception constructor requiring only a message;
stopfunction to throw an exceptionDataFramegains anrowsmethod
Changes in Rcpp attributes:
Ability to embed R code chunks (via specially formattedblock comments) in C++ source files.
Allow specification of argument defaults for exported functions.
New scheme for more flexible mixing of generated and user composedC++ headers.
Print warning if no export attributes are found in source file.
Updated vignette with additional documentation on exposingC++ interfaces from packages and signaling errors.
Changes in Rcpp modules:
Enclose .External invocations in
BEGIN_RCPP/END_RCPP
Changes in R code :
New function
areMacrosDefinedAdditions to
Rcpp.package.skeleton:attributesparameter to generate a version ofrcpp_hello_worldthat usesRcpp::export.cpp_filesparameter to provide a list of C++files to include the in thesrcdirectory of the package.
Miscellaneous changes:
New example 'pi simulation' using R and C++ via Rcpp attributes
Changes in Rcpp version 0.10.0 (2012-11-13)
Support for C++11 style attributes (embedded in comments) to enableuse of C++ within interactive sessions and to automatically generate moduledeclarations for packages:
Rcpp::export attribute to export a C++ function to R
sourceCpp()function to source exported functions from a filecppFunction()andevalCpp()functions for inline declarationsand executioncompileAttribtes()function to generate Rcpp modules fromexported functions within a packageRcpp::depends attribute for specifying additional builddependencies for
sourceCpp()Rcpp::interfaces attribute to specify the external bindings
compileAttributes()should generate (defaults to R-only but aC++ include file using R_GetCCallable can also be generated)New vignette "Rcpp-attribute"
Rcpp modules feature set has been expanded:
Functions and methods can now return objects from classes thatare exposed through modules. This uses the make_new_object templateinternally. This feature requires that some class traits are declaredto indicate Rcpp's
wrap/assystem that these classes are coveredby modules. The macro RCPP_EXPOSED_CLASS and RCPP_EXPOSED_CLASS_NODECLcan be used to declared these type traits.Classes exposed through modules can also be used as parametersof exposed functions or methods.
Exposed classes can declare factories with ".factory". A factoryis a c++ function that returns a pointer to the target class. It isassumed that these objects are allocated with new on the factory. On theR side, factories are called just like other constructors, with the"new" function. This feature allows an alternative way to constructobjects.
"converter" can be used to declare a way to convert an objectof a type to another type. This gets translated to the appropriate"as" method on the R side.
Inheritance. A class can now declare that it inherits fromanother class with the .derives<Parent>( "Parent" ) notation. As a resultthe exposed class gains methods and properties (fields) from itsparent class.
New sugar functions:
which_minimplements which.min. Traversing the sugar expressionand returning the index of the first time the minimum value is found.which_maxidemuniqueuses unordered_set to find unique values. In particular,the version for CharacterVector is found to be more efficient thanR's versionsort_uniquecalculates unique values and then sorts them.
Improvements to output facilities:
Implemented
sync()so that flushing output streams worksAdded
Rcerroutput stream (forwarding toREprintf)
Provide a namespace 'R' for the standalone Rmath library sothat Rcpp users can access those functions too; also added unit tests
Development releases sets variable RunAllRcppTests to yes torun all tests (unless it was alredy set to 'no'); CRAN releases donot and still require setting – which helps with the desired CRANdefault of less testing at the CRAN server farm.
Changes in Rcpp version 0.9.15 (2012-10-13)
Untangling the clang++ build issue about the location of theexceptions header by directly checking for the include file – anapproach provided by Martin Morgan in a kindly contributed patchas unit tests for them.
The
DateandDatetimetypes now correctlyhandleNA,NaNandInfrepresentation; theDatetype switched to an internal representation viadoubleAdded
DateandDatetimeunit tests for the newfeaturesAn additional
PROTECTwas added for parsing exceptionmessages before returning them to R, following a report by Ben North
Changes in Rcpp version 0.9.14 (2012-09-30)
Added new Rcpp sugar functions trunc(), round() and signif(), as wellas unit tests for them
Be more conservative about where we support clang++ and the inclusionof exception_defines.h and prevent this from being attempted on OS Xwhere it failed for clang 3.1
Corrected a typo in Module.h which now again permits use of finalizers
Small correction for (unexported) bib() function (which provides a pathto the bibtex file that ships with Rcpp)
Converted NEWS to NEWS.Rd
Changes in Rcpp version 0.9.13 (2012-06-28)
Truly corrected Rcpp::Environment class by having default constructoruse the global environment, and removing the default argument ofglobal environment from the SEXP constructor
Added tests for clang++ version to include bits/exception_defines.hfor versions 3.0 or higher (similar to g++ 4.6.0 or later), needed toinclude one particular exceptions header
Made more regression tests conditional on the RunAllRcppTests to comecloser to the CRAN mandate of running tests in sixty seconds
Updated unit test wrapper tests/doRUnit.R as well as unitTests/runTests.R
Changes in Rcpp version 0.9.12 (2012-06-23)
Corrected Rcpp::Environment class by removing (empty) ctor followingrev3592 (on May 2) where default argument for ctor was moved
Unit testing now checks for environment variable RunAllRcppTests beingset to "yes"; otherwise some tests are skipped. This is arguably notthe right thing to do, but CRAN maintainers insist on faster tests.
Unit test wrapper script runTests.R has new option –allTests to setthe environment variable
The cleanup script now also considers inst/unitTests/testRcppClass/src
Changes in Rcpp version 0.9.11 (2012-06-22)
New member function for vectors (and lists etc) containsElementNamed()which returns a boolean indicating if the given element name is present
Updated the Rcpp.package.skeleton() support for Rcpp modules bycarrying functions already present from the corresponding unit testwhich was also slightly expanded; and added more comments to the code
Rcpp modules can now be loaded via loadRcppModules() from .onLoad(),or via loadModule("moduleName") from any R file
Extended functionality to let R modify C++ clases imported via modulesdocumented in help(setRcppClass)
Support compilation in Cygwin thanks to a patch by Dario Buttari
Extensions to the Rcpp-FAQ and the Rcpp-modules vignettes
The minium version of R is now 2.15.1 which is required for some ofthe Rcpp modules support
Changes in Rcpp version 0.9.10 (2012-02-16)
Rearrange headers so that Rcpp::Rcout can be used by RcppArmadillo et al
New Rcpp sugar function mapply (limited to two or three input vectors)
Added custom version of the Rcpp sugar diff function for numeric vectorsskipping unncesserry checks for NA
Some internal code changes to reflect changes and stricter requirementsin R CMD check in the current R-devel versions
Corrected fixed-value initialization for IntegerVector (with thanks toGregor Kastner for spotting this)
New Rcpp-FAQ entry on simple way to set compiler option for cxxfunction
Changes in Rcpp version 0.9.9 (2012-12-25)
Reverting the 'int64' changes from release 0.9.8 which adverselyaffect packages using Rcpp: We will re-apply the 'int64' changes in away which should cooperate more easily with 'long' and 'unsigned long'.
Unit test output directory fallback changed to use Rcpp.Rcheck
Conditioned two unit tests to not run on Windows where they now breakwhereas they passed before, and continue to pass on other OSs
Changes in Rcpp version 0.9.8 (2011-12-21)
wrap now handles 64 bit integers (int64_t, uint64_t) and containersof them, and Rcpp now depends on the int64 package (also on CRAN).This work has been sponsored by the Google Open Source ProgramsOffice.
Added setRcppClass() function to create extended reference classeswith an interface to a C++ class (typically via Rcpp Module) whichcan have R-based fields and methods in addition to those from the C++.
Applied patch by Jelmer Ypma which adds an output stream class'Rcout' not unlike std::cout, but implemented via Rprintf tocooperate with R and its output buffering.
New unit tests for pf(), pnf(), pchisq(), pnchisq() and pcauchy()
XPtr constructor now checks for corresponding type in SEXP
Updated vignettes for use with updated highlight package
Update linking command for older fastLm() example using externalArmadillo
Changes in Rcpp version 0.9.7 (2011-09-29)
Applied two patches kindly provided by Martyn Plummer which providesupport for compilation on Solaris using the SunPro compiler
Minor code reorganisation in which exception specifiers are removed;this effectively only implements a run-time (rather than compile-time)check and is generally seen as a somewhat depreated C++ idiom. Thanksto Darren Cook for alerting us to this issue.
New example 'OpenMPandInline.r' in the OpenMP/ directory, showing howeasily use OpenMP by modifying the RcppPlugin output
New example 'ifelseLooped.r' showing Rcpp can accelerate loops that maybe difficult to vectorise due to dependencies
New example directory examples/Misc/ regrouping the new example aswell as the fibonacci example added in Rcpp 0.9.6
New Rcpp-FAQ example warning of lossy conversion from 64-bit longinteger types into a 53-bit mantissa which has no clear fix yet.
New unit test for accessing a non-exported function from a namespace
Changes in Rcpp version 0.9.6 (2011-07-26)
Added helper traits to facilitate implementation of the RcppEigenpackage: The is_eigen_base traits identifies if a class derives fromEigenBase using SFINAE; and new dispatch layer was added to wrap() tohelp RcppEigen
XPtr now accepts a second template parameter, which is a functiontaking a pointer to the target class. This allows the developper tosupply his/her own finalizer. The template parameter has a defaultvalue which retains the original behaviour (calling delete on thepointer)
New example RcppGibbs, extending Sanjog Misra's Rcpp illustration ofDarren Wilkinson's comparison of MCMC Gibbs Sampler implementations;also added short timing on Normal and Gaussian RNG draws between Rcppand GSL as R's rgamma() is seen to significantly slower
New example on recursively computing a Fibonacci number using Rcpp andcomparing this to R and byte-compiled R for a significant speed gain
Changes in Rcpp version 0.9.5 (2011-07-05)
New Rcpp-FAQ examples on using the plugin maker for inline'scxxfunction(), and on setting row and column names for matrices
New sugar functions: mean, var, sd
Minor correction and extension to STL documentation in Rcpp-quickref
wrap() is now resilient to NULL pointers passed as in const char *
loadRcppModules() gains a "direct" argument to expose the module insteadof exposing what is inside it
Suppress a spurious warning from R CMD check on packages created withRcpp.package.skeleton(..., module=TRUE)
Some fixes and improvements for Rcpp sugar function 'rlnorm()'
Beginnings of new example using OpenMP and recognising user interrupts
Changes in Rcpp version 0.9.4 (2011-04-12)
New R function "loadRcppModules" to load Rcpp modules automaticallyfrom a package. This function must be called from the .onLoad functionand works with the "RcppModules" field of the package's DESCRIPTION file
The Modules example wrapped the STL std::vector received some editingto disambiguate some symbols the newer compilers did not like
Coercing of vectors of factors is now done with an explicit callbackto R's "as.character()" as Rf_coerceVector no longer plays along
A CITATION file for the published JSS paper has been added, andreferences were added to Rcpp-package.Rd and the different vignettes
Changes in Rcpp version 0.9.3 (2011-04-05)
Fixed a bug in which modules code was not behaving when compiledtwice as can easily happen with inline'ed version
Exceptions code includes exception_defines.h only when g++ is 4.5 oryounger as the file no longer exists with g++-4.6
The documentation Makefile now uses the $R_HOME environment variable
The documentation Makefile no longer calls clean in the all target
C++ conformance issue found by clang/llvm addressed by re-orderingdeclarations in grow.h as unqualified names must be declared beforethey are used, even when used within templates
The 'long long' typedef now depends on C++0x being enabled as thiswas not a feature in C++98; this suppresses a new g++-4.5 warning
The Rcpp-introduction vignette was updated to the forthcoming JSS paper
Changes in Rcpp version 0.9.2 (2011-02-23)
The unitTest runit.Module.client.package.R is now skipped on older OSX releases as it triggers a bug with g++ 4.2.1 or older; OS X 10.6 isfine but as it no longer support ppc we try to accomodate 10.5 tooThanks to Simon Urbanek for pinning this down and Baptiste Auguieand Ken Williams for additonal testing
RcppCommon.h now recognises the Intel Compiler thanks to a shortpatch by Alexey Stukalov; this turns off Cxx0x and TR1 features too
Three more setup questions were added to the Rcpp-FAQ vignette
One question about RcppArmadillo was added to the Rcpp-FAQ vignette
Changes in Rcpp version 0.9.1 (2011-02-14)
A number of internal changes to the memory allocation / protection oftemporary objects were made—with a heartfelt "Thank You!" to bothDoug Bates for very persistent debugging of Rcpp modules code, and toLuke Tierney who added additional memory allocation debugging toolsto R-devel (which will be in R 2.13.0 and may also be in R 2.12.2)
Removed another GNU Make-specific variable from src/Makevars in orderto make the build more portable; this was noticed on FreeBSD
On *BSD, do not try to compute a stack trace but provide file andline number (which is the same behaviour as implemented in Windows)
Fixed an int conversion bug reported by Daniel Sabanes Bove on r-devel,added unit test as well
Added unit tests for complex-typed vectors (thanks to Christian Gunning)
Expanded the Rcpp-quickref vignette (with thanks to Christian Gunning)
Additional examples were added to the Rcpp-FAQ vignette
Changes in Rcpp version 0.9.0 (2010-12-19)
The classic API was factored out into its own package RcppClassic whichis released concurrently with this version.
If an object is created but not initialized, attempting to useit now gives a more sensible error message (by forwarding anRcpp::not_initialized exception to R).
SubMatrix fixed, and Matrix types now have a nested ::Sub typedef.
New unexported function SHLIB() to aid in creating a shared library onthe command-line or in Makefile (similar to CxxFlags() / LdFlags()).
Module gets a seven-argument ctor thanks to a patch from Tama Ma.
The (still incomplete) QuickRef vignette has grown thanks to a patchby Christian Gunning.
Added a sprintf template intended for logging and error messages.
Date::getYear() corrected (where addition of 1900 was not called for);corresponding change in constructor from three ints made as well.
Date() and Datetime() constructors from string received a missingconversion to int and double following strptime. The default formatstring for the Datetime() strptime call was also corrected.
A few minor fixes throughout, see ChangeLog.
Changes in Rcpp version 0.8.9 (2010-11-27)
Many improvements were made in 'Rcpp modules':- exposing multiple constructors- overloaded methods- self-documentation of classes, methods, constructors, fields andfunctions.- new R function "populate" to facilitate working with modules inpackages.- formal argument specification of functions.- updated support for Rcpp.package.skeleton.- constructors can now take many more arguments.
The 'Rcpp-modules' vignette was updated as well and describe manyof the new features
New template class Rcpp::SubMatrix<RTYPE> and support syntax in Matrixto extract a submatrix:NumericMatrix x = ... ;// extract the first three columnsSubMatrix<REALSXP> y = x( _ , Range(0,2) ) ;// extract the first three rowsSubMatrix<REALSXP> y = x( Range(0,2), _ ) ;// extract the top 3x3 sub matrixSubMatrix<REALSXP> y = x( Range(0,2), Range(0,2) ) ;
Reference Classes no longer require a default constructor forsubclasses of C++ classes
Consistently revert to using backticks rather than shell expansionto compute library file location when building packages against Rcppon the default platforms; this has been applied to internal testpackages as well as CRAN/BioC packages using Rcpp
Changes in Rcpp version 0.8.8 (2010-11-01)
New syntactic shortcut to extract rows and columns of a Matrix.x(i,_) extracts the i-th row and x(_,i) extracts the i-th column.
Matrix indexing is more efficient. However, faster indexing isdisabled if g++ 4.5.0 or later is used.
A few new Rcpp operators such as cumsum, operator=(sugar)
Variety of bug fixes:- column indexing was incorrect in some cases- compilation using clang/llvm (thanks to Karl Millar for the patch)- instantation order of Module corrected- POSIXct, POSIXt now correctly ordered for R 2.12.0
Changes in Rcpp version 0.8.7 (2010-10-15)
As of this version, Rcpp depends on R 2.12 or greater as it interfacesthe new reference classes (see below) and also reflects the POSIXtclass reordering both of which appeared with R version 2.12.0
new Rcpp::Reference class, that allows internal manipulation of R2.12.0 reference classes. The class exposes a constructor that takesthe name of the target reference class and a field(string) methodthat implements the proxy pattern to get/set reference fields usingcallbacks to the R operators "$" and "$<-" in order to preserve theR-level encapsulation
the R side of the preceding item allows methods to be written in R asper ?ReferenceClasses, accessing fields by name and assigning themusing "<<-". Classes extracted from modules are R reference classes.They can be subclassed in R, and/or R methods can be defined usingthe $methods(...) mechanism.
internal performance improvements for Rcpp sugar as well as an added'noNA()' wrapper to omit tests for NA values – see the includedexamples in inst/examples/convolveBenchmarks for the speedups
more internal performance gains with Functions and Environments
Changes in Rcpp version 0.8.6 (2010-09-09)
new macro RCPP_VERSION and Rcpp_Version to allow conditional compilingbased on the version of Rcpp#if defined(RCPP_VERSION) && RCPP_VERSION >= Rcpp_Version(0,8,6)#endif
new sugar functions for statistical distributions (d-p-q-r functions)with distributions : unif, norm, gamma, chisq, lnorm, weibull, logis,f, pois, binom, t, beta.
new ctor for Vector taking size and function pointer so that for exampleNumericVector( 10, norm_rand )generates a N(0,1) vector of size 10
added binary operators for complex numbers, as well as sugar support
more sugar math functions: sqrt, log, log10, exp, sin, cos, ...
started new vignette Rcpp-quickref : quick reference guide of Rcpp API(still work in progress)
various patches to comply with solaris/suncc stricter standards
minor enhancements to ConvolutionBenchmark example
simplified src/Makefile to no longer require GNU make; packages usingRcpp still do for the compile-time test of library locations
Changes in Rcpp version 0.8.5 (2010-07-25)
speed improvements. Vector::names, RObject::slot have been improvedto take advantage of R API functions instead of callbacks to R
Some small updates to the Rd-based documentation which now points tocontent in the vignettes. Also a small formatting change to suppressa warning from the development version of R.
Minor changes to Date() code which may reenable SunStudio builds
Changes in Rcpp version 0.8.4 (2010-07-09)
new sugar vector functions: rep, rep_len, rep_each, rev, head, tail,diag
sugar has been extended to matrices: The Matrix class now extends theMatrix_Base template that implements CRTP. Currently sugar functionsfor matrices are: outer, col, row, lower_tri, upper_tri, diag
The unit tests have been reorganised into fewer files with one calleach to cxxfunction() (covering multiple tests) resulting in asignificant speedup
The Date class now uses the same mktime() replacement that R uses(based on original code from the timezone library by Arthur Olson)permitting wide date ranges on all operating systems
The FastLM example has been updated, a new benchmark based on thehistorical Longley data set has been added
RcppStringVector now uses std::vector<std::string> internally
setting the .Data slot of S4 objects did not work properly
Changes in Rcpp version 0.8.3 (2010-06-27)
This release adds Rcpp sugar which brings (a subset of) the R syntaxinto C++. This supports :- binary operators : <,>,<=,>=,==,!= between R vectors- arithmetic operators: +,-,*,/ between compatible R vectors- several functions that are similar to the R function of the same name:abs, all, any, ceiling, diff, exp, ifelse, is_na, lapply, pmin, pmax,pow, sapply, seq_along, seq_len, signSimple examples :// two numeric vector of the same sizeNumericVector x ;NumericVector y ;NumericVector res = ifelse( x < y, x*x, -(y*y) ) ;// sapply'ing a C++ functiondouble square( double x ){ return x*x ; }NumericVector res = sapply( x, square ) ;Rcpp sugar uses the technique of expression templates, pioneered by theBlitz++ library and used in many libraries (Boost::uBlas, Armadillo).Expression templates allow lazy evaluation of expressions, whichcoupled with inlining generates very efficient code, very closelyapproaching the performance of hand written loop code, and oftenmuch more efficient than the equivalent (vectorized) R code.Rcpp sugar is curently limited to vectors, future releases willinclude support for matrices with sugar functions such as outer, etc ...Rcpp sugar is documented in the Rcpp-sugar vignette, which containsimplementation details.
New helper function so that "Rcpp?something" brings up Rcpp help
Rcpp Modules can now expose public data members
New classes Date, Datetime, DateVector and DatetimeVector with proper'new' API integration such as as(), wrap(), iterators, ...
The so-called classic API headers have been moved to a subdirectoryclassic/ This should not affect client-code as only Rcpp.h was everincluded.
RcppDate now has a constructor from SEXP as well
RcppDateVector and RcppDatetimeVector get constructors from intand both const / non-const operator(int i) functions
New API class Rcpp::InternalFunction that can expose C++ functionsto R without modules. The function is exposed as an S4 object ofclass C++Function
Changes in Rcpp version 0.8.2 (2010-06-09)
Bug-fix release for suncc compiler with thanks to Brian Ripley foradditional testing.
Changes in Rcpp version 0.8.1 (2010-06-08)
This release adds Rcpp modules. An Rcpp module is a collection ofinternal (C++) functions and classes that are exposed to R. Thisfunctionality has been inspired by Boost.Python.Modules are created internally using the RCPP_MODULE macro andretrieved in the R side with the Module function. This is a previewrelease of the module functionality, which will keep improving untilthe Rcpp 0.9.0 release.The new vignette "Rcpp-modules" documents the current feature set ofRcpp modules.
The new vignette "Rcpp-package" details the steps involved in making apackage that uses Rcpp.
The new vignette "Rcpp-FAQ" collects a number of frequently askedquestions and answers about Rcpp.
The new vignette "Rcpp-extending" documents how to extend Rcppwith user defined types or types from third party libraries. Based onour experience with RcppArmadillo
Rcpp.package.skeleton has been improved to generate a package usingan Rcpp module, controlled by the "module" argument
Evaluating a call inside an environment did not work properly
cppfunction has been withdrawn since the introduction of the moreflexible cxxfunction in the inline package (0.3.5). Rcpp no longerdepends on inline since many uses of Rcpp do not require inline atall. We still use inline for unit tests but this is now handledlocally in the unit tests loader runTests.R.Users of the now-withdrawn function cppfunction can redefine it as:cppfunction <- function(...) cxxfunction( ..., plugin = "Rcpp" )
Support for std::complex was incomplete and has been enhanced.
The methods XPtr<T>::getTag and XPtr<T>::getProtected are deprecated,and will be removed in Rcpp 0.8.2. The methods tag() and prot() shouldbe used instead. tag() and prot() support both LHS and RHS use.
END_RCPP now returns the R Nil values; new macro VOID_END_RCPPreplicates prior behabiour
Changes in Rcpp version 0.8.0 (2010-05-17)
All Rcpp headers have been moved to the inst/include directory,allowing use of 'LinkingTo: Rcpp'. But the Makevars and Makevars.winare still needed to link against the user library.
Automatic exception forwarding has been withdrawn because ofportability issues (as it did not work on the Windows platform).Exception forwarding is still possible but is now based on explicitcode of the form:try {// user code} catch( std::exception& __ex__){forward_exception_to_r( __ex___ ) ;Alternatively, the macro BEGIN_RCPP and END_RCPP can use used to enclosecode so that it captures exceptions and forward them to R.BEGIN_RCPP// user codeEND_RCPP
new __experimental__ macrosThe macros RCPP_FUNCTION_0, ..., RCPP_FUNCTION_65 to help creating C++functions hiding some code repetition:RCPP_FUNCTION_2( int, foobar, int x, int y){return x + y ;The first argument is the output type, the second argument is thename of the function, and the other arguments are arguments of theC++ function. Behind the scenes, the RCPP_FUNCTION_2 macro creates anintermediate function compatible with the .Call interface and handlesexceptionsSimilarly, the macros RCPP_FUNCTION_VOID_0, ..., RCPP_FUNCTION_VOID_65can be used when the C++ function to create returns void. The generatedR function will return R_NilValue in this case.RCPP_FUNCTION_VOID_2( foobar, std::string foo ){// do something with fooThe macro RCPP_XP_FIELD_GET generates a .Call compatible function thatcan be used to access the value of a field of a class handled by anexternal pointer. For example with a class like this:class Foo{public:int bar ;RCPP_XP_FIELD_GET( Foo_bar_get, Foo, bar ) ;RCPP_XP_FIELD_GET will generate the .Call compatible function calledFoo_bar_get that can be used to retrieved the value of bar.The macro RCPP_FIELD_SET generates a .Call compatible function thatcan be used to set the value of a field. For example:RCPP_XP_FIELD_SET( Foo_bar_set, Foo, bar ) ;generates the .Call compatible function called "Foo_bar_set" thatcan be used to set the value of barThe macro RCPP_XP_FIELD generates both getter and setter. For exampleRCPP_XP_FIELD( Foo_bar, Foo, bar )generates the .Call compatible Foo_bar_get and Foo_bar_set using themacros RCPP_XP_FIELD_GET and RCPP_XP_FIELD_SET previously describedThe macros RCPP_XP_METHOD_0, ..., RCPP_XP_METHOD_65 faciliatecalling a method of an object that is stored in an external pointer. Forexample:RCPP_XP_METHOD_0( foobar, std::vector<int> , size )creates the .Call compatible function called foobar that calls thesize method of the std::vector<int> class. This uses the Rcpp::XPtr<std::vector<int> > class.The macros RCPP_XP_METHOD_CAST_0, ... is similar but the result ofthe method called is first passed to another function before beingwrapped to a SEXP. For example, if one wanted the result as a doubleRCPP_XP_METHOD_CAST_0( foobar, std::vector<int> , size, double )The macros RCPP_XP_METHOD_VOID_0, ... are used when calling themethod is only used for its side effect.RCPP_XP_METHOD_VOID_1( foobar, std::vector<int>, push_back )Assuming xp is an external pointer to a std::vector<int>, this couldbe called like this :.Call( "foobar", xp, 2L )
Rcpp now depends on inline (>= 0.3.4)
A new R function "cppfunction" was added which invokes cfunction frominline with focus on Rcpp usage (enforcing .Call, adding the Rcppnamespace, set up exception forwarding). cppfunction uses BEGIN_RCPPand END_RCPP macros to enclose the user code
new class Rcpp::Formula to help building formulae in C++
new class Rcpp::DataFrame to help building data frames in C++
Rcpp.package.skeleton gains an argument "example_code" and can now beused with an empty list, so that only the skeleton is generated. Ithas also been reworked to show how to use LinkingTo: Rcpp
wrap now supports containers of the following types: long, long double,unsigned long, short and unsigned short which are silently convertedto the most acceptable R type.
Revert to not double-quote protecting the path on Windows as thisbreaks backticks expansion used n Makevars.win etc
Exceptions classes have been moved out of Rcpp classes,e.g. Rcpp::RObject::not_a_matrix is now Rcpp::not_a_matrix
Changes in Rcpp version 0.7.12 (2010-04-16)
Undo shQuote() to protect Windows path names (which may containspaces) as backticks use is still broken; use of $(shell ...) works
Changes in Rcpp version 0.7.11 (2010-03-26)
Vector<> gains a set of templated factory methods "create" whichtakes up to 20 arguments and can create named or unnamed vectors.This greatly facilitates creating objects that are returned to R.
Matrix now has a diag() method to create diagonal matrices, anda new constructor using a single int to create square matrices
Vector now has a new fill() method to propagate a single value
Named is no more a class but a templated function. Both interfacesNamed(.,.) and Named(.)=. are preserved, and extended to work also onsimple vectors (through Vector<>::create)
Applied patch by Alistair Gee to make ColDatum more robust
Fixed a bug in Vector that caused random behavior due to the lack ofcopy constructor in the Vector template
Changes in Rcpp version 0.7.10 (2010-03-15)
new class Rcpp::S4 whose constructor checks if the object is an S4object
maximum number of templated arguments to the pairlist function, theDottedPair constructor, the Language constructor and the Pairlistconstructor has been updated to 20 (was 5) and a script has beenadded to the source tree should we want to change it again
use shQuote() to protect Windows path names (which may contain spaces)
Changes in Rcpp version 0.7.9 (2010-03-12)
Another small improvement to Windows build flags
bugfix on 64 bit platforms. The traits classes (wrap_type_traits, etc)used size_t when they needed to actually use unsigned int
fixed pre gcc 4.3 compatibility. The trait class that was used toidentify if a type is convertible to another had too many falsepositives on pre gcc 4.3 (no tr1 or c++0x features). fixed byimplementing the section 2.7 of "Modern C++ Design" book.
Changes in Rcpp version 0.7.8 (2010-03-09)
All vector classes are now generated from the same template classRcpp::Vector<int RTYPE> where RTYPE is one of LGLSXP, RAWSXP, STRSXP,INTSXP, REALSXP, CPLXSXP, VECSXP and EXPRSXP. typedef are stillavailable : IntegerVector, ... All vector classes gain methodsinspired from the std::vector template : push_back, push_front,erase, insert
New template class Rcpp::Matrix<RTYPE> deriving fromRcpp::Vector<RTYPE>. These classes have the same functionalityas Vector but have a different set of constructors which checksthat the input SEXP is a matrix. Matrix<> however does/can notguarantee that the object will allways be a matrix. typedefare defined for convenience: Matrix<INTSXP> is IntegerMatrix, etc...
New class Rcpp::Row<int RTYPE> that represents a row of a matrixof the same type. Row contains a reference to the underlyingVector and exposes a nested iterator type that allows use ofSTL algorithms on each element of a matrix row. The Vector classgains a row(int) method that returns a Row instance. Usageexamples are available in the runit.Row.R unit test file
New class Rcpp::Column<int RTYPE> that represents a column of amatrix. (similar to Rcpp::Row<int RTYPE>). Usage examples areavailable in the runit.Column.R unit test file
The Rcpp::as template function has been reworked to be moregeneric. It now handles more STL containers, such as deque andlist, and the genericity can be used to implement as for moretypes. The package RcppArmadillo has examples of this
new template class Rcpp::fixed_call that can be used in STL algorithmssuch as std::generate.
RcppExample et al have been moved to a new package RcppExamples;src/Makevars and src/Makevars.win simplified accordingly
New class Rcpp::StringTransformer and helper functionRcpp::make_string_transformer that can be used to create a functionthat transforms a string character by character. For exampleRcpp::make_string_transformer(tolower) transforms each characterusing tolower. The RcppExamples package has an example of this.
Improved src/Makevars.win thanks to Brian Ripley
New examples for 'fast lm' using compiled code:- using GNU GSL and a C interface- using Armadillo (http://arma.sf.net) and a C++ interfaceArmadillo is seen as faster for lack of extra copying
A new package RcppArmadillo (to be released shortly) now servesas a concrete example on how to extend Rcpp to work with a modernC++ library such as the heavily-templated Armadillo library
Added a new vignette 'Rcpp-introduction' based on a just-submittedoverview article on Rcpp
Changes in Rcpp version 0.7.7 (2010-02-14)
new template classes Rcpp::unary_call and Rcpp::binary_callthat facilitates using R language calls togetherwith STL algorithms.
fixed a bug in Language constructors taking a string as theirfirst argument. The created call was wrong.
Changes in Rcpp version 0.7.6 (2010-02-12)
SEXP_Vector (and ExpressionVector and GenericVector, a.k.a List) nowhave methods push_front, push_back and insert that are templated
SEXP_Vector now has int- and range-valued erase() members
Environment class has a default constructor (for RInside)
SEXP_Vector_Base factored out of SEXP_Vector (Effect. C++ #44)
SEXP_Vector_Base::iterator added as well as begin() and end()so that STL algorithms can be applied to Rcpp objects
CharacterVector gains a random access iterator, begin() and end() tosupport STL algorithms; iterator dereferences to a StringProxy
Restore Windows build; successfully tested on 32 and 64 bit;
Small fixes to inst/skeleton files for bootstrapping a package
RObject::asFoo deprecated in favour of Rcpp::as<Foo>
Changes in Rcpp version 0.7.5 (2010-02-08)
wrap has been much improved. wrappable types now are :- primitive types : int, double, Rbyte, Rcomplex, float, bool- std::string- STL containers which have iterators over wrappable types:(e.g. std::vector<T>, std::deque<T>, std::list<T>, etc ...).- STL maps keyed by std::string, e.g std::map<std::string,T>- classes that have implicit conversion to SEXP- classes for which the wrap template if fully or partly specializedThis allows composition, so for example this class is wrappable:std::vector< std::map<std::string,T> > (if T is wrappable)
The range based version of wrap is now exposed at the Rcpp::level with the following interface :Rcpp::wrap( InputIterator first, InputIterator last )This is dispatched internally to the most appropriate implementationusing traits
a new namespace Rcpp::traits has been added to host the varioustype traits used by wrap
The doxygen documentation now shows the examples
A new file inst/THANKS acknowledges the kind help we got from others
The RcppSexp has been removed from the library.
The methods RObject::asFoo are deprecated and will be removedin the next version. The alternative is to use as<Foo>.
The method RObject::slot can now be used to get or set theassociated slot. This is one more example of the proxy pattern
Rcpp::VectorBase gains a names() method that allows getting/settingthe names of a vector. This is yet another example of theproxy pattern.
Rcpp::DottedPair gains templated operator<< and operator>> thatallow wrap and push_back or wrap and push_front of an object
Rcpp::DottedPair, Rcpp::Language, Rcpp::Pairlist are lessdependent on C++0x features. They gain constructors with upto 5 templated arguments. 5 was choosed arbitrarily and mightbe updated upon request.
function calls by the Rcpp::Function class is less dependenton C++0x. It is now possible to call a function with up to5 templated arguments (candidate for implicit wrap)
added support for 64-bit Windows (thanks to Brian Ripley and Uwe Ligges)
Changes in Rcpp version 0.7.4 (2010-01-30)
matrix-like indexing using operator() for all vectortypes : IntegerVector, NumericVector, RawVector, CharacterVectorLogicalVector, GenericVector and ExpressionVector.
new class Rcpp::Dimension to support creation of vectors withdimensions. All vector classes gain a constructor taking aDimension reference.
an intermediate template class "SimpleVector" has been added. Allsimple vector classes are now generated from the SimpleVectortemplate : IntegerVector, NumericVector, RawVector, CharacterVectorLogicalVector.
an intermediate template class "SEXP_Vector" has been added togenerate GenericVector and ExpressionVector.
the clone template function was introduced to explicitelyclone an RObject by duplicating the SEXP it encapsulates.
even smarter wrap programming using traits and templatemeta-programming using a private header to be include onlyRcppCommon.h
the as template is now smarter. The template now attempts tobuild an object of the requested template parameter T by using theconstructor for the type taking a SEXP. This allows third party codeto create a class Foo with a constructor Foo(SEXP) to haveas<Foo> for free.
wrap becomes a template. For an object of type T, wrap<T> usesimplicit conversion to SEXP to first convert the object to a SEXPand then uses the wrap(SEXP) function. This allows third partycode creating a class Bar with an operator SEXP() to havewrap for free.
all specializations of wrap : wrap<double>, wrap< vector<double> >use coercion to deal with missing values (NA) appropriately.
configure has been withdrawn. C++0x features can now be activatedby setting the RCPP_CXX0X environment variable to "yes".
new template r_cast<int> to facilitate conversion of one SEXPtype to another. This is mostly intended for internal use andis used on all vector classes
Environment now takes advantage of the augmented smartnessof as and wrap templates. If as<Foo> makes sense, one candirectly extract a Foo from the environment. If wrap<Bar> makessense then one can insert a Bar directly into the environment.Foo foo = env["x"] ; /* as<Foo> is used */Bar bar ;env["y"] = bar ; /* wrap<Bar> is used */
Environment::assign becomes a template and also uses wrap tocreate a suitable SEXP
Many more unit tests for the new features; also added unit testsfor older API
Changes in Rcpp version 0.7.3 (2010-01-21)
New R function Rcpp.package.skeleton, modelled afterutils::package.skeleton to help creating a package with supportfor Rcpp use.
indexing is now faster for simple vectors due to inlining ofthe operator[] and caching the array pointer
The class Rcpp::VectorBase was introduced. All vector classesderive from it. The class handles behaviour that is commonto all vector types: length, names, etc ...
exception forwarding is extended to compilers other than GCCbut default values are used for the exception classand the exception message, because we don't know how to do it.
Improved detection of C++0x capabilities
Rcpp::Pairlist gains a default constructor
Rcpp::Environment gains a new_child method to create a newenvironment whose parent is this
Rcpp::Environment::Binding gains a templated implicitconversion operator
Rcpp::ExpressionVector gains an eval method to evaluate itself
Rcpp::ExpressionVector gains a constructor taking a std::stringrepresenting some R code to parse.
Rcpp::GenericVector::Proxy gains an assignment operator to dealwith Environment::Proxy objects
Rcpp::LdFlags() now defaults to static linking OS X, as it alreadydid on Windows; this default can be overridden.
Changes in Rcpp version 0.7.2 (2010-01-12)
a new benchmark was added to the examples directoryaround the classic convolution example fromWriting R extensions to compare C and C++ implementations
Rcpp::CharacterVector::StringProxy gains a += operator
Rcpp::Environment gains an operator[](string) to get/setobjects from the environment. operator[] returns an objectof class Rcpp::Environment::Binding which implements the proxypattern. Inspired from Item 30 of 'More Effective C++'
Rcpp::Pairlist and Rcpp::Language gain an operator[](int)also using the proxy pattern
Rcpp::RObject.attr can now be used on the rhs or the lhs, to getor set an attribute. This also uses the proxy pattern
Rcpp::Pairlist and Rcpp::Language gain new methods push_backreplace, length, size, remove, insert
wrap now returns an object of a suitable class, not just RObjectanymore. For example wrap( bool ) returns a LogicalVector
Rcpp::RObject gains methods to deal with S4 objects : isS4,slot and hasSlot
new class Rcpp::ComplexVector to manage complex vectors (CPLXSXP)
new class Rcpp::Promise to manage promises (PROMSXP)
new class Rcpp::ExpressionVector to manage expression vectors(EXPRSXP)
new class Rcpp::GenericVector to manage generic vectors, a.k.alists (VECSXP)
new class Rcpp::IntegerVector to manage integer vectors (INTSXP)
new class Rcpp::NumericVector to manage numeric vectors (REALSXP)
new class Rcpp::RawVector to manage raw vectors (RAWSXP)
new class Rcpp::CharacterVector to manage character vectors (STRSXP)
new class Rcpp::Function to manage functions(CLOSXP, SPECIALSXP, BUILTINSXP)
new class Rcpp::Pairlist to manage pair lists (LISTSXP)
new class Rcpp::Language to manage calls (LANGSXP)
new specializations of wrap to deal with std::initializer listsonly available with GCC >= 4.4
new R function Rcpp:::capabilities that can query if variousfeatures are available : exception handling, variadic templatesinitializer lists
new set of functions wrap(T) converting from T to RObject
new template function as<T> that can be used to convert a SEXPto type T. Many specializations implemented to deal withC++ builtin and stl types. Factored out of RObject
new class Rcpp::Named to deal with named with named objectsin a pairlist, or a call
new class Rcpp::Symbol to manage symbols (SYMSXP)
The garbage collection has been improved and is now automaticand hidden. The user needs not to worry about it at all.
Rcpp::Environment(SEXP) uses the as.environment R function
Doxygen-generated documentation is no longer included as it is bothtoo large and too volatile. Zipfiles are provided on the website.
Changes in Rcpp version 0.7.1 (2010-01-02)
Romain is now a co-author of Rcpp
New base class Rcpp::RObject replace RcppSexp (which is provided forbackwards compatibility)
RObject has simple wrappers for object creation and conversion to SEXP
New classes Rcpp::Evaluator and Rcpp::Environment for expressionevaluation and environment access, respectively
New class Rcpp::XPtr for external pointers
Enhanced exception handling allows for trapping of exceptions outsideof try/catch blocks
Namespace support with a new namespace 'Rcpp'
Unit tests for most of the new classes, based on the RUnit package
Inline support now provided by the update inline package, so a newDepends on 'inline (>= 0.3.4)' replaces the code in that wastemporarily in Rcpp
Changes in Rcpp version 0.7.0 (2009-12-19)
Inline support via a modified version of 'cfunction' from OlegSklyar's 'inline' package: simple C++ programs can now be compiled,linked and loaded automagically from the R prompt, including supportfor external packages. Also works on Windows (with R-tools installed)
New examples for the inline support based on 'Intro to HPC' tutorials
New type RcppSexp for simple int, double, std::string scalars and vectors
Every class is now in its own header and source file
Fix to RcppParams.Rd thanks to Frank S. Thomas
RcppVersion.R removed as redundant given DESCRIPTION and read.dcf()
Switched to R_PreserveObject and R_ReleaseObject for RcppSexp withthanks to Romain
Licensing changed from LGPL 2.1 (or later) to GPL 2 (or later), fileCOPYING updated
Changes in Rcpp version 0.6.8 (2009-11-19)
Several classes now split off into their own header and source files
New header file RcppCommon.h regrouping common defines and includes
Makevars{,.win} updated to reflect src/ reorg
Changes in Rcpp version 0.6.7 (2009-11-08)
New class RcppList for simple lists and data structures of differenttypes and dimensions, useful for RProtoBuf project on R-Forge
Started to split classes into their own header and source files
Added short README file about history and status
Small documentation markup fix thanks to Kurt; updated doxygen docs
New examples directory functionCallback/ for R function passed to C++and being called
Changes in Rcpp version 0.6.6 (2009-08-03)
Updated Doxygen documentation
RcppParams class gains a new exists() member function
Changes in Rcpp version 0.6.5 (2009-04-01)
Small OS X build correction using R_ARCH variable
Include LGPL license as file COPYING
Changes in Rcpp version 0.6.4 (2009-03-01)
Use std:: namespace throughout instead of 'using namespace std'
Define R_NO_REMAP so that R provides Rf_length() etc in lieu of length()to minimise clashes with other projects having similar functions
Include Doxygen documentation, and Doxygen configuration file
Minor Windows build fix (with thanks to Uwe and Simon)
Changes in Rcpp version 0.6.3 (2009-01-09)
OS X build fix with thanks to Simon
Added 'view-only' classes for int and double vector and matrix clasesas well as string vector classses, kindly suggsted / provided byDavid Reiss
Add two shorter helper functions Rcpp:::CxxFlags() andRcpp:::LdFlags() for compilation and linker flags
Changes in Rcpp version 0.6.2 (2008-12-02)
Small but important fix for Linux builds in Rcpp:::RcppLdFlags()
Changes in Rcpp version 0.6.1 (2008-11-30)
Now src/Makevars replaces src/Makefile, this brings proper OS Xmulti-arch support with thanks to Simon
Old #ifdef statements related to QuantLib removed; Rcpp is nowdecoupled from QuantLib headers yet be used by RQuantLib
Added RcppLdPath() to return the lib. directory patch and on Linuxthe rpath settings
Added new RcppVectorExample()
Augmented documentation on usage in Rcpp-package.Rd
Changes in Rcpp version 0.6.0 (2008-11-05)
New maintainer, taking over RcppTemplate (which has been without anupdate since Nov 2006) under its initial name Rcpp
New files src/Makefile{,.win} including functionality from bothconfigure and RcppSrc/Makefile; we now build two libraries, one foruse by the package which also runs the example, and one for users tolink against, and removed src/Makevars.in
Files src/Rcpp.{cpp,h} moved in from ../RcppSrc
Added new class RcppDatetime corresponding to POSIXct in with fullsupport for microsecond time resolution between R and C++
Several new manual pages added
Removed configure{,.in,.win} as src/Makefile* can handle this moreeasily
Minor cleanup and reformatting for DESCRIPTION, Date: now usessvn:keyword Date property
Renamed RcppTemplateVersion to RcppVersion, deleted RcppDemo
Directory demo/ removed as vignette("RcppAPI") is easier and morereliable to show vignette documentation
RcppTemplateDemo() removed from R/zzz.R, vignette("RcppAPI") is easier;man/RcppTemplateDemo.Rd removed as well
Some more code reindentation and formatting to R default arguments,some renamed from RcppTemplate* to Rcpp*
Added footnote onto titlepage of inst/doc/RcppAPI.{Rnw,pdf} about howthis document has not (yet) been updated along with the channges made