Please read How to Contribute.
See Compilation to compile the C code under c/.
Under r/ or python/, the commands make build and make install will build and install the R and Python packages.
The C code and the Python and R packages have their own testsuites. See C testsuite to setup and run the C testsuite.
The Python and R testsuites are run automatically via Github Actions for every push and pull request. You can run then manually by running make test under r/ or python/.
You can run all testsuites at once by executing at the top-level:
make test
moocore consists of C code called by R and Python. In both cases, the C code is compiled into a dynamic shared library.
Python uses CFFI to call the C code: https://github.com/multi-objective/moocore/blob/main/python/src/moocore/_ffi_build.py
CFFI is fast and makes very easy to extend the C API. Just add the declaration of the function you want to export to a libmoocore.h.
Extending the R API requires adding a C wrapper function that converts from R types to C types and export that C function to R. See Rmoocore.c and init.h
Important
The documentation of the R and Python packages should be as consistent as possible.
A major difference is that Python has top-level pages that describe common functionality, Python example, and documentation for individual functions such as igd_plus(), whereas R has the option to describe multiple related functions in the same page R example.
In Python, one must decide where the documentation should be placed (in the common page or in the page of an individual function). In any case, the goals are to avoid duplicating the same text in different parts of the Python documentation and that the text is as similar as possible between Python and R.
Important
moocore provides accurate references to the original sources of mathematical concepts and algorithms.
Bibliographic entries should be taken from the IRIDIA BibTeX Repository.
If the BibTeX entry does not exist, contribute it.
If the entry already exists, you just need to add its label to the file
bibkeys.txt and run update_bib.sh.
-
make clean -
./release.py -
git ci -a -m "Prepare to release v${PACKAGEVERSION}" -
R release (within
r/):make releasebuildand check which files are included in the package.make releasecheck- Check reverse dependencies
- Update
cran-comments.md - Submit to CRAN:
make submit - While waiting, run benchmarks
make benchmarks
-
Publish a release in github to automatically submit to PyPi.
-
./release.py --dev NEW_VERSION -
git ci -a -m "Start development of v{NEW_VERSION}"