.. _glossary:

Glossary
--------

.. glossary::
    ABI
      | Short for Application Binary Interface.
      | In this context applies to conventions adopted by `xo-jit`.

    c.foo
      | llvm typename for automatically-generated closure type for a lambda
      | with name `foo`.

    e.foo
      | llvm typename for automatically-generated local environment for a
      | lambda with name `foo`.

    w.foo
      | llvm typename for automatically-generated wrapper function for a
      | primitive function `foo`.  The wrapper function accepts and ignores
      | an extra initial argument supplying an environment pointer.
      |
      | We apply this practice so that lambdas and primitives support the
      | same ABI,  so that we can support pointers to abstract functions
      | that might at runtime turn out to be either primitives or lambdas

    lambda
      | Common use is for lambda to refer to an anonymous function.
      | In llvm we need all functions to be named, and those names
      | have to be unique.
      |
      | Since all functions have to be named, we cheerfully adopt
      | the oxymoron 'named lambda'
      |
      | Practices:
      | 1. Automatically generate unique names for anonymous lambdas.
      | 2. Incorporate user-provided names for convenience, when provided.
      | 3. Still have to uniqueify names for user-provided nested lambdas.

    localenv
      | Shorthand for local environment.
      | Represents an explicit runtime repsentation for a struct that
      | holds captured function arguments with the ability to be persisted
      | (for example, moved to the the heap).
      |
      | Note that library `xo-expression` also uses the term environment, but differently.
      | In that context describes all function arguments.

    lvtype
      | Shorthand for `llvm::Type`:
      | llvm-owned representation for a datatype

    xsession
      | Shorthand for `llvm::orc::ExecutionSession`.
      | Manages running JIT-generated machine code in the host process

    td
      | Short for `xo::reflect::TypeDescr`.

    XO
      A set of integrated c++ libraries for complex event processing, with browser and python integration.
      `xo documentation here`_

.. _xo documentation here: https://rconybea.github.io/web/sw/xo.html

.. toctree::
