    -- |
    -- Module      :  GHC.StaticPtr
    -- Copyright   :  (C) 2014 I/O Tweag
    -- License     :  see libraries/base/LICENSE
    --
    -- Maintainer  :  ghc-devs@haskell.org
    -- Stability   :  internal
    -- Portability :  non-portable (GHC Extensions)
    --
    -- Symbolic references to values.
    --
    -- References to values are usually implemented with memory addresses, and this
    -- is practical when communicating values between the different pieces of a
    -- single process.
    --
    -- When values are communicated across different processes running in possibly
    -- different machines, though, addresses are no longer useful since each
    -- process may use different addresses to store a given value.
    --
    -- To solve such concern, the references provided by this module offer a key
    -- that can be used to locate the values on each process. Each process maintains
    -- a global table of references which can be looked up with a given key. This
    -- table is known as the Static Pointer Table. The reference can then be
    -- dereferenced to obtain the value.
    --
    -- The various communicating processes need to agree on the keys used to refer
    -- to the values in the Static Pointer Table, or lookups will fail. Only
    -- processes launched from the same program binary are guaranteed to use the
    -- same set of keys.
    --

    module GHC.StaticPtr
      ( StaticPtr
      , deRefStaticPtr
      , StaticKey
      , staticKey
      , unsafeLookupStaticPtr
      , StaticPtrInfo(..)
      , staticPtrInfo
      , staticPtrKeys
      , IsStatic(..)
      ) where

    import GHC.Internal.StaticPtr