Skip to content

Core Technologies and Attributions

The following software projects are the core dependencies used by the XFELPP packages. For specific information on where and how they are used, refer to each package’s individual documentation.

  • AsmJit - A fantastic project for machine code generation. This underpins the host compiler implementation in ncarray.
  • cpp-httplib - For setting up HTTP clients.
    • Brotli - A lossless compression algorithm used by cpp-httplib.
  • CUDA Toolkit - GPU support.
  • GoogleTest - For test generation.
  • HDF5 - HDF5 file support.
  • Meson - The primary build system.
  • Ninja - Underlying Meson.
  • Various MPI Implementations for Parallelization:
  • hwloc - Used for resource determination independently of MPI suqpport.
  • pybind11 - Building Python bindings.
  • RapidJSON - JSON parsing (particularly when interfacing with web APIs).
  • SPDLog - Various logging utilities.
    • fmt - Used for formatting.
    • zlib - For compression.

While not used directly, a number of projects have also served as major inspirations for various pieces and components of the XFELPP stack.

The XFELPP packages could not be distributed without the availability of:

  • cibuildwheel - The cibuildwheel wheel infrastructure makes it possible to create all the wheel variants.
  • GitHub Actions - For running CI builds on all platforms (particularly Windows and macOS support).

Documentation and Website Building and Hosting

Section titled “Documentation and Website Building and Hosting”

This website was constructed using:

It is hosted using various Cloudflare technologies.

Documentation is built using:

Some small node.js scripts tie it all together at the end.