Request: withArrayLength

Simon Marlow simonmar at
Tue Mar 23 04:04:35 EST 2004

> I think we need to decide how the further development of the FFI will
> proceed.  Given that Version 1.0 of the Addendum is frozen, I 
> am not in
> favour of changing the Addendum anytime soon and certainly 
> not for small
> matters, such as a convenience function.
> We might want to accumulate extra useful functions in the 
> implementation
> in an *extra* module and once there is enough interesting 
> functionality
> in there, we can start talking about Version 1.1 of the Addendum.
> Does this sound like a sensible approach?

We certainly want to be able to add new stuff to the FFI over time.
There are several ways we might do this:

  (1) Just extend the existing interfaces (don't change semantics
      of existing functions, though).

  (2) Add new modules only (not re-exported by Foreign)

  (3) Add new stuff to the hierarchical Foreign.XXX modules, but
      not the non-hierarchical variants (and Foreign keeps the
      same interface as the FFI spec).

  (4) Wait until we have versioned packages, and have separate 
      ffi-1.0 and ffi-1.1 packages.

I like (4) the best, but we can't do that yet - we know how to, but
there's a fair bit of work to get there.  Of the other options, I'm
tempted by (1).  (2) is unattractive because some of the new interfaces
will morally belong in existing modules (eg. withArrayLength clearly
belongs in Foreign.Marshal.Array).  (3) is unattractive because the
Foreign module overlaps, so we can't keep the hierarchical and
non-hierarchical versions separate.  (1) is unattractive because it
might break code that works with the FFI 1.0 spec (unlikely, though).


More information about the FFI mailing list