Hello,
I have some questions about which part of the actual headers are
internal, which ones are for embedders and which ones are for
extenders.

  AFAIR nothing but Parrot sources should #include parrot/parrot.h.
The public interface is available through parrot/embed.h and
parrot/extend.h. Correct?

* types
  parrot/embed.h uses Parrot_Interp, Parrot_String, ...
  parrot/extend.h uses Parrot_INTERP, Parrot_STRING. I like the
  former more (metched Parrot_Int, Parrot_Float), but the two
  interfaces must at least agree on type names, whatever they
  are.

* ParrotIO
  It is currently not available. I think that API functions
  (PIO_open, PIO_read, ...) should be available for embedders
  (maybe not all af them, but at least some ought to), while
  the layer stuff should be available to extenders. Correct?
  Should they be available as PIO_* or as Parrot_io_*/Parrot_IO_*?

* custom PMC and vtables
  I assume custom PMC are for extenders. If this is correct,
  the vtable structure needs to be available to extenders,
  together with APIs for accessing PMCs flags, data pointer, etc
  (shoud that use macros as in Parrot-provided PMCs (PMC_data),
  or function calls?)

* Various functions:
  accessing globals, Parrot_runops_fromc*, mem_sys_*, Parrot_load_bytecode and
  registering IMCC compilers are some examples of functions that (I think)
  ought to be available in one form or the other, but aren't. Should they
  be?

Thanks!
Mattia

Reply via email to