Skip to content
  • Simon Marlow's avatar
    [project @ 2001-01-11 17:25:56 by simonmar] · efa88123
    Simon Marlow authored
    Re-organisation of ghc/lib/std and hslibs/lang
    ----------------------------------------------
    
    In brief: move deprecated features out of ghc/lib/std and into
    hslibs/lang, move new FFI libraries into ghc/lib/std and start
    using them.
    
    - foreign import may now return an unboxed type (this was
      advertised to work before, but in fact didn't).  Subsequent
      cleanups in PrelInt/PrelWord.
    
    - Ptr is now defined in ghc/lib/std/PrelPtr.lhs.  Ptr is no
      longer a newtype of Addr, it is defined directly in terms of
      Addr#.
    
    - PrelAddr has disappeared from ghc/lib/std, all uses of Addr in
      ghc/lib/std have been replaced with Ptr.  The definitions of
      Addr has been moved to hslibs/lang/Addr.lhs, as has
      lots of other Addr-related stuff.
    
    - ForeignObj has been removed from ghc/lib/std, and replaced with
      ForeignPtr.  The definition of ForeignObj has been moved to
      hslibs/lang/ForeignObj.lhs.
    
    - Most of the new FFI has been moved into ghc/lib/std in the form
      of modules PrelMarshalAlloc, PrelCString, PrelCError,
      PrelMarshalError, PrelMarshalArray, PrelMarshalUtils,
      PrelCTypes, PrelCTypesISO, and PrelStorable.  The corresponding
      modules in hslibs/lang simply re-export the contents of these
      modules.
    
    - PrelPosixTypes defines a few POSIX types (CMode == mode_t,
      etc.)
    
    - PrelCError changed to access errno using foreign label and peek
      (the POSIX book I have says that errno is guaranteed to be an
      extern int, so this should be OK until I get around to making
      errno thread-safe).
    
    - Hacked the macros that generate the code for CTypes and
      CTypesISO to generate much less code
      (ghc/lib/std/cbits/CTypes.h).
    
    - RtsAPI is now a bit more honest when it comes to building heap
      objects (it uses the correct constructors).
    
    - the Bits class and related stuff has been moved to ghc/lib/std
      (it was simpler this way).
    
    - Directory and System have been converted to use the new FFI.
    efa88123