• simonmar's avatar
    [project @ 2001-01-11 17:25:56 by simonmar] · efa88123
    simonmar 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
    - 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
    - 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
    - PrelPosixTypes defines a few POSIX types (CMode == mode_t,
    - 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
    - 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.
RtsAPI.c 8.75 KB