5.2.3
  - evaluate/compile the input parsing table once instead of each keystroke.
      - https://github.com/coreyoconnor/vty/pull/59
      - Thanks ethercrow!

5.2.2
  - When looking at input for an event, don't look too deep.
      - https://github.com/coreyoconnor/vty/pull/57
      - Thanks ethercrow!

5.2.1
  - Bump upper version bound for lens to 4.5. Thanks markus1189!

5.2.0
  - Config structure now specifies file descriptor to use. The default is stdInput and stdOutput
    file descriptors. Previously Vty used stdInput for input and the follow code for output:
      - hDuplicate stdout >>= handleToFd >>= (`hSetBuffering` NoBuffering)
      - the difference was required by Vty.Inline. Now, Vty.Inline uses the Config structure options
        to acheive the same effect.
  - removed: derivedVtime, derivedVmin, inputForCurrentTerminal, inputForNameAndIO,
    outputForCurrentTerminal, outputForNameAndIO
  - added: inputForConfig, outputForConfig
  - updates to vty-rogue from jtdaugherty. Thanks! 
  - the oldest version of GHC tested to support vty is 7.6.2.
  - the oldest version of GHC that vty compiles under is 7.4.2

5.1.4
  - merged https://github.com/coreyoconnor/vty/pull/51 thanks trofi!

5.1.1
  - merged https://github.com/coreyoconnor/vty/pull/48 thanks sjmielke!
  - jtdaugherty resolved a number of compiler warnings. Thanks!

5.1.0
  - vmin and vtime can be specified however the application requires. See Graphics.Vty.Config.
  - fixed the processing of input when vmin is set > 1.

5.0.0
  - The naming convention now matches:
    - http://www.haskell.org/haskellwiki/Programming_guidelines#Naming_Conventions
  - all projects using vty for input must be compiled with -threaded. Please notify vty author if
    this is not acceptable.
  - mkVtyEscDelay has been removed. Use "mkVty def". Which initialized vty with the default
    configuration.
  - input handling changes
    - KASCII is now KChar
    - KPN5 is now KCenter
    - tests exist.
    - Applications can add to the input tables by setting inputMap of the Config.
      See Graphics.Vty.Config
    - Users can define input table extensions that will apply to all vty applications.
      See Graphics.Vty.Config
    - terminal timing is now handled by selecting an appropriate VTIME. Previously this was
      implemented within Vty itself. This reduced complexity in vty but provides a different meta
      key behavior and implies a requirement on -threaded.
    - The time vty will wait to verify an ESC byte means a single ESC key is the
      singleEscPeriod of the Input Config structure.
  - removed the typeclass based terminal and display context interface in favor of a data
    structure of properties interface.
  - renamed the Terminal interface to Output
  - The default picture for an image now uses the "clear" background. This background fills
    background spans with spaces or just ends the line.
    - Previously the background defaulted to the space character. This causes issues copying
      text from a text editor. The text would end up with extra spaces at the end of the line.
  - Layer support
    - Each layer is an image.
    - The layers for a picture are a list of images.
    - The first image is the top-most layer. The images are ordered from top to bottom.
    - The transparent areas for a layer are the backgroundFill areas. backgroundFill is
      added to pad images when images of different sizes are joined.
    - If the background is clear there is no background layer.
    - If there is a background character then the bottom layer is the background layer.
    - emptyPicture is a Picture with no layers and no cursor
    - addToTop and addToBottom add a layer to the top and bottom of the given Picture.
  - compatibility improvements:
    - terminfo based terminals with no cursor support are silently accepted. The cursor
      visibility changes in the Picture will have no effect.
    - alternate (setf/setb) color maps supported. Though colors beyond the first 8 are just a
      guess.
    - added "rgbColor" for easy support of RGB specified colors.
    - Both applications and users can add to the mapping used to translate from input bytes to
      events.
  - Additional information about input and output process can be appended to a debug log
    - Set environment variable VTY_DEBUG_LOG to path of debug log
    - Or use "debugLog <path>" config directive
    - Or set 'debugLog' property of the Config provided to mkVty.
  - examples moved to vty-examples package. See test directory for cabal file.
    - vty-interactive-terminal-test
      - interactive test. Useful for building a bug report for vty's author.
      - test/interactive_terminal_test.hs
    - vty-event-echo
      - view a input event log for vty. Example of interacting with user.
      - test/EventEcho.hs
    - vty-rogue
      - The start of a rogue-like game. Example of layers and image build operations.
      - test/Rogue.hs
    - vty-benchmark
      - benchmarks vty. A series of tests that push random pictures to the terminal. The
        random pictures are generated using QuickCheck. The same generators used in the
        automated tests.
      - test/benchmark.hs

4.7.0.0
    - API changes:
       - Added Graphics.Vty.Image.crop: Ensure an image is no larger than the specified size.
       - Added Graphics.Vty.Image.pad: Ensure an image is no smaller than the specified size.
       - Added Graphics.Vty.Image.translate: Offset an image.
    - Thanks Ben Boeckel <MathStuf@gmail.com> for these features.

4.3.0.0

4.2.1.0
    - API changes:
        - Attr record accessor fore_color changed to attr_fore_color
        - Attr record accessor back_color changed to attr_back_color
        - Attr record accessor style changed to attr_style
        - Added an "inline" display attribute changing DSL:
            - put_attr_change applies a display attribute change immediately to a terminal
            - For instance, can be used to change the display attrbiutes of text output via putStrLn
              and putStr. EX: "put_attr_change $ back_color red" will set the
              background color to red. 
            - Changes do not apply to a Picture output via output_picture. 
            - See Graphics.Vty.Inline
        - Moved all IO actions into any monad an instance of MonadIO

4.0.0.1
    - binding for mk_wcswidth was incorrect. Most platforms just magically worked due to
      coincidence.

4.0.0
    - API changes:
        - "getSize" has been removed. Use "terminal vty >>= display_bounds" where "vty" is an
          instance of the Vty data structure.
        - added a "terminal" field to the Vty data structure. Accesses the TerminalHandle associated
          with the Vty instance.
        - Graphics.Vty.Types has undergone a number of changes. Summary:
          - Partitioned into Graphics.Vty.Attributes for display attributes. Graphics.Vty.Image for
            image combinators. Graphics.Vty.Picture for final picture construction.
        - Graphics.Vty.Attributes:
          - "setFG" and "setBG" are now "with_fore_color" and "with_back_color"
          - All other "set.." equations similarly replaced.
          - "attr" is now "def_attr", short for "default display attributes" Also added a
            "current_attr" for "currently applied display attributes"
        - Graphics.Vty.Image:
          - "horzcat" is now "horiz_cat"
          - "vertcat" is now "vert_cat"
          - "renderBS" is now "utf8_bytestring"
          - "renderChar" is now "char"
          - "renderFill" is now "char_fill"
          - added a "utf8_string" and "string" (AKA "iso_10464_string") for UTF-8 encoded Strings
            and ISO-10464 encoded Strings. String literals in GHC have an ISO-10464 runtime
            representation.
        - Graphics.Vty.Picture:
          - exports Graphics.Vty.Image
          - "pic" is now "pic_for_image"
          - added API for setting background fill pattern.
    - Completely rewritten output backend.
        - Efficient, scanline style output span generator. Has not been fully optimized, but good
          enough.
        - The details required to display the desired picture on a terminal are well encapsulated.
        - Terminfo based display terminal implementation. With specialized derivitives for xterm,
          Terminal.app, and iTerm.app. 
            - Attempts to robustly handle even terminals that don't support all display attributes.
            - I've tested the following terminals with success: iTerm.app, Terminal.app, xterm,
              rxvt, mlterm, Eterm, gnome-terminal, konsole, screen, linux vty. Hopefully you will be
              as successfull. 
        - Improved unicode support. Double wide characters will display as expected.
    - 256 color support. See Graphics.Vty.Attributes.Color240. The actual output color is adjusted
      according to the number of colors the terminal supports.
    - The Graphics.Vty.Image combinators no longer require matching dimensions to arguments.
      Unspecified areas are filled in with a user-customizable background pattern. See
      Graphics.Vty.Picture.
    - output images are always cropped to display size.
    - Significant code coverage by QuickCheck tests. An interactive test for those final properties
      that couldn't be automatically verified.

    issues resolved:
        - "gnome terminal displays non-basic attributes as strikethrough"
            - http://trac.haskell.org/vty/ticket/14
        - "Multi-byte characters are not displayed correctly on update"
            - http://trac.haskell.org/vty/ticket/10
        - "Redraw does not handle rendering a line that extends beyond screen width characters" 
            - http://trac.haskell.org/vty/ticket/13
        - "The <|> and <-> combinators should be more forgiving of mismatched dimensions" 
            - http://trac.haskell.org/vty/ticket/9
        - "256-color support" 
            - http://trac.haskell.org/vty/ticket/19

