packages feed

mueval-0.3.1: mueval.cabal

name:                mueval
version:             0.3.1

license:             BSD3
license-file:        LICENSE
author:              Gwern
maintainer:          Gwern <gwern0@gmail.com>

category:            Development, Language
synopsis:            Safely evaluate Haskell expressions
description:         Mueval is a Haskell interpreter. It
                     uses the GHC API to evaluate arbitrary Haskell expressions.
                     Importantly, mueval takes many precautions to defang and avoid "evil"
                     code.  It uses resource limits, whitelisted modules,
                     special Show instances for IO, threads, changes of directory, and so
                     on to sandbox the Haskell code. (It is much like Lambdabot's famous
                     evaluation functionality.)
                     .
                     Currently there is a major hole in Mueval: it is possible use a function
                     without importing it, which allows the module whitelisting to be bypassed,
                     and hence, unsafePerformIO and its various type-breaking friends can be used
                     to do arbitrary things. Mueval uses a blacklist to avoid the most naive and obvious
                     dangerous function imports, but this is a very weak mechanism and cannot be relied
                     upon.
                     .
                     Until this hole is fixed, Mueval should *not* be used on potentially hostile input.
                     .
                     Mueval is currently POSIX-only.
homepage:            http://code.haskell.org/mubot/

build-type:          Simple
Cabal-Version:       >= 1.2
Tested-with:         GHC==6.8.2

Extra-source-files:  build.sh, tests.sh

Library
        exposed-modules:     Mueval.Context, Mueval.Interpreter,
                             Mueval.ParseArgs, Mueval.Resources
        build-Depends:       base, directory, mtl, unix, hint>=0.2.2, show
        ghc-options:         -Wall -static

Executable mueval
           main-is:       mueval.hs
           build-depends: base
           ghc-options:   -Wall -threaded -static