I have updated my package, rbedrock [1-2], to remove a bundled
library's calls to abort() and stderr when compiled with -DNDEBUG
(which is the default). This has mostly worked; however, I have
uncovered that libc++ contains inline functions that call abort() if
exceptions are disabled.

My bundled library is a C++ library and is compiled with exceptions
turned off. I use its C-level interface in my package, so its C++ code
is mostly hidden from my package. When compiled on a platform with
libc++, libc++ introduces abort calls into the compiled package. This
is causing `R CMD check` to warn about abort() usage on those
platforms.

I am wondering what people on this list think I should do?

Should I enable exceptions in the bundled library and keep using the
C-level interface? (It doesn't throw any exceptions itself, but std
library calls might.)

If there is any other strategy that I should try, please let me know.

Thanks,
Reed

[1] https://github.com/reedacartwright/rbedrock
[2] https://cran.r-project.org/package=rbedrock
[3] 
https://github.com/llvm/llvm-project/blob/release/12.x/libcxx/include/any#L107-L116

--
Reed A. Cartwright, PhD
Associate Professor of Life Sciences
TEACh Representative - Evolution and Computational Courses
School of Life Sciences and The Biodesign Institute
Arizona State University
==================
Address: The Biodesign Institute, PO Box 876401, Tempe, AZ 85287-6401 USA
Packages: The Biodesign Institute, 1001 S. McAllister Ave, Tempe, AZ
85287-6401 USA
Office: Biodesign B-220C, 1-480-965-9949
Website: http://cartwrig.ht/

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to