Skip to contents

Returns the compiler and package build metadata that was baked into the currently loaded EDI shared object at compile time (via preprocessor macros defined in edi_build_flags.h, generated by the package's build tooling), not anything queried live from the running system. This is intended for benchmark reports and reproducibility audits where the exact compiler, flags, and build environment used to produce the installed binary matter (e.g. explaining performance differences between two installations of the same package version, or confirming a binary was built with a particular optimization/vectorization configuration).

Usage

edi_build_info_cpp()

Value

A named list with the following fields, all length-1 character strings unless noted otherwise:

capture_method

How the build metadata below was captured by the package's build tooling (EDI_BUILD_CAPTURE_METHOD).

build_timestamp

Timestamp of compilation (EDI_BUILD_TIMESTAMP).

build_host

Hostname of the machine that compiled this binary (EDI_BUILD_HOST).

r_home

R_HOME of the R installation used to build the package.

r_version

R version string used to build the package.

r_cxx20

The C++20 compiler command R's build configuration reported.

r_cxx20std

The C++ standard flag (e.g. -std=gnu++20) used.

r_cxx20flags

Additional C++20 compiler flags from R's configuration.

r_shlib_openmp_cxxflags

OpenMP C++ flags R's configuration supplies for shared-library builds (empty if OpenMP support was not available/enabled).

env_edi_portable, env_edi_disable_vectorization, env_edi_native_speed, env_edi_native_lto

The values (or default/unset indicator) of the corresponding EDI_* environment variables that were set at build time to control portable-vs-native code generation, vectorization, and link-time optimization; see the package's build documentation for what each controls.

pkg_cppflags, pkg_cxxflags, pkg_libs

The package-level PKG_CPPFLAGS/ PKG_CXXFLAGS/PKG_LIBS used when compiling/linking EDI's C++ sources.

compiler

The compiler identification string (__VERSION__).

compiler_optimize_macro

Logical; TRUE iff the compiler defined __OPTIMIZE__ (i.e. optimizations were enabled) when this translation unit was compiled.

compiler_fast_math_macro

Logical; TRUE iff __FAST_MATH__ was defined (i.e. non-IEEE-compliant fast-math optimizations were enabled), which can affect floating-point reproducibility/edge-case behavior (NaN/Inf handling, exact rounding) relative to a standard-compliant build.

eigen_dont_vectorize_macro

Logical; TRUE iff EIGEN_DONT_VECTORIZE was defined, disabling Eigen's SIMD vectorization for this build (e.g. for portability to CPUs lacking the vector instructions a native build would target).

Details

Every field is a fixed string or boolean baked in when the C++ source was compiled (via preprocessor macro substitution); calling this function multiple times within the same R session always returns identical values, and the values reflect the build environment, not the environment the function happens to be called from. If EDI is reinstalled/recompiled, existing R sessions that already loaded the old shared object continue to report the old build's metadata until they restart and load the new one.

Examples

info = edi_build_info_cpp()
info$pkg_cxxflags
#> [1] "$(SHLIB_OPENMP_CXXFLAGS) -DNDEBUG -DEIGEN_NO_DEBUG"