I have put Release Candidate 3 up at

  http://www.cse.unsw.edu.au/~chak/haskell/ffi/

Changes wrt to the last version are the following:

* 3.2: Clarified the description of foreign types; so far, `IO ()' was
    strictly speaking not included as a valid return type.
* 4.1.5: New section discussing the traps & pitfalls of type promotion with
    C bindings.
* 5.8: Clarified documentation for `MarshalAlloc.free'.
* 5.8: Added `MarshalAlloc.realloc'.

Moreover, I would like to draw your attention to the
following points, which we should solve before I post the
next version to `[EMAIL PROTECTED]':

* Olaf Chitil has pointed out some unclear points wrt to ()
  and IO () as a result type in foreign declarations in the
  previous version of the Addendum.  I have edited Section
  3.2 to improve this, but you may want to check out that
  the new version meets your expectations.

* I have added Section 4.1.5 as a consequence of the recent
  discussion on argument type promotion on this list.  It
  seemed that everybody agreed what the FFI should do, but
  that a detailed explanation in the specification is
  needed, so I have added one.  Please check whether you
  find it sufficient.

* I think, for reasons of orthogonality `MarshalAlloc'
  should include

    realloc :: Storable b => Ptr a -> IO (Ptr b)

  I have added this in the document.  Let me know if anybody
  disagrees with this.

* There is the open question, raised by SPJ, of whether we
  like to have something like

    import_entity -> [String]
    export_entity -> [String]

  See my message from yesterday.

* Sigbjorn, while adding support for OS threads to GHC, has
  introduced a new safety mode `threadsafe'.  It seems
  worthwhile to include this into the Addendum.  On systems
  that don't support OS threads, `threadsafe' might behave
  like `safe', but at least code that uses `threadsafe'
  would still be valid on other systems.  The semantics is
  as follows:

   unsafe       must not call back
 
   safe         may call back; if it blocks outside Haskell,
                the whole Haskell system blocks
 
   threadsafe   on systems supporting OS threads, the
                Haskell runtime will not block, even if the
                call blocks;
                must call an OS-thread safe procedure
 
  ('safe' remains the default.)

If there are no objections, I will add the latter two
changes to the FFI Addendum.

Cheers,
Manuel
_______________________________________________
FFI mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/ffi

Reply via email to