-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathfortran-C-python.Rmd
More file actions
54 lines (38 loc) · 2.22 KB
/
fortran-C-python.Rmd
File metadata and controls
54 lines (38 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Fortran / C / C++ / Python / Third-Party Code {#other-than-Rcode}
If the package contains C or Fortran code, it should adhere to the standards and
methods described in the [System and foreign language interfaces][CRAN foreign]
section of the [Writing R Extensions][] manual.
## Makevars
Make judicious use of the `Makevars` and `Makefile` files within a package.
These are often not required at all (See the [Configure and cleanup][CRAN
config] section of the [Writing R Extensions][] manual).
## Fortran {#fortran}
Consider utilizing the [dotCall64][] CRAN package.
## C / C++ {#ccode}
The [Rcpp][] CRAN package allows seamless integration of C++ with `R`, and is
cross-platform. The package affords many of the same benefits for the
`R` C interface that make C++ so appealing as a language, while
eliminating many of the pitfalls of programming to the `R` interface.
The package is well documented, and has an extensive repository of
working examples for many tasks: the [Rcpp Gallery][].
## Python {#python}
The `r BiocStyle::Biocpkg("basilisk")` package uses `conda` to configure an
appropriate Python environment on the user's machine. It is strongly
recommended if the routine operation of a Bioconductor package relies on
Python, as users should not be asked to manually install Python packages.
The use of [reticulate][] for the R/Python interaction is left to the
discretion of the developer.
## CMake {#cmake}
The `r BiocStyle::Biocpkg("biocmake")` package guarantees that a certain
minimal version of CMake is available on the user machine, either by using an
existing CMake installation or by installing its own from the official website.
This should be used whenever a package relies on CMake during its build.
## Other {#third-party-code}
Use of external libraries whose functionality is redundant with libraries
already supported is strongly discouraged. In cases where the external library
is complex, the author may need to supply pre-built binary versions for some
platforms.
By including third-party code a package maintainer assumes responsibility for
maintenance of that code. Part of the maintenance responsibility includes
keeping the code up to date as bug fixes and updates are released for the
mainline third-party project.