Peter Bex wrote:

> On Wed, Aug 14, 2019 at 08:23:51AM +0200, Marco Maggi wrote:
>>   I see  there is  no declaration  specifier for  "-emit-types-file", is
>> there   a   reason?    I   would   appreciate   something   similar   to
>> "emit-import-library".

> I don't know, but it might be just a matter of nobody having had a use
> case yet.  I've made a ticket for this: https://bugs.call-cc.org/ticket/1644

Thanks!

>>   Also: how do  you handle types files for shared  libraries composed by
>> multiple modules?   Should I generate a  types file for each  module and
>> install all of them along the shared library?  I doubt this is correct.

> No, as far as I know you simply load the types database using -types or
> -consult-types-file and that accepts any filename.  The core types
> database (types.db) also contains type information for several modules.
> So when you emit the types file you can just write it to a single file.

> Actually, I don't think there's even functionality in place to separate
> out the types per module.  So what you're trying to do sounds perfectly
> fine.

I  see that  the type  specifications in  the ".types"  files are  fully
qualified with the module name.  So there is a form of module-awareness.

>>   I have shared  libraries with multiple modules compiled  in.  Only one
>> module is the "public" one (exporting the public API), the others export
>> some "public" syntactic bindings  and some "private" syntactic bindings.
>> Is this case currently supported by CHICKEN?

> That should be fine.  It's not completely standard, so you might need to
> do a few things here and there to make it work, but I don't see any
> problem with it.  If you're running into specific problems, let us know
> and we'll try to find out what's going wrong.

Generation and use of these ".so"  shared libraries works fine.  I meant
this  relative  to the  types  declarations.   I  want to  exploit  this
documented behaviour (from "chicken type"):

   If library code is used with `import` and a `.types` file of the same
   name  exists   in  the   extension  repository   path,  then   it  is
   automatically consulted.  This allows  code using these  libraries to
   take advantage of type-information for library definitions.

  So,  for  now I  will:  generate  a  ".types"  file for  each  module;
concatenate  them  into  a  single ".types"  file;  install  the  global
resulting file along with the shared library.  Two questions:

1. Is  there a  way to print  to stderr the  list of  consulted ".types"
files?  I do not see such an option in:

   http://wiki.call-cc.org/man/5/Using%20the%20compiler

2.   Let's assume  the  relevant  ".types" files  are  loaded; with  the
following pseudo code:  is the type specification of  "the-func" used by
the program?

(module (the-sub-module)
    ()
  (import (scheme) (chicken type))
  (: the-func (fixnum -> fixnum))
  (define (the-func N)
    N)) 

(module (the-module)
    ()
  (import (only (chicken module) reexport))
  (reexport (the-sub-module)))

(module (the-program)
    ()
  (import (the-module))
  (the-func 123))

TIA
-- 
Marco Maggi

_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to