|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [MirageOS-devel] mirage configure & dynlink (was: V1 vs V2 mirage-types)
On 18 Nov 2014, at 19:03, Nicolas Ojeda Bar <no263@xxxxxxxxxxxxxxx> wrote:
> Hi list,
>
> Very much related to the ongoing thread of V1 vs V2 is the tool
> `mirage configure`.
> Its role is to generate code to match particular implementations to
> signatures. Right now this tool requires global knowledge of all the
> mirage libraries and needs to be updated in concert with any change in
> the set of exported signatures.
>
> It seems to me that it would be better for each mirage library to
> manage its own code generation. In this world, `mirage configure`
> would be a library of combinators used to write these code generators
> and the individual code generators would be loaded dynamically (using
> dynlink & findlib) at configure time.
>
> I haven't thought through this idea, but I was wondering what other
> people thought about it.
not really a module/ocaml expert but my two penn'orth anyway: it does seem
attractive to disperse the code generation to the libraries rather than
centralising it in the mirage tool. this seems a good way to elide the whole
V1/V2 thing entirely.
the question that occurs to me is: is there enough commonality in the code
currently being generated that some kind of standard protocol can be defined?
(i guess this is the set of combinators?) after a quick glance through a
sample main.ml it seems this might be possible, though i might easily be
missing something. the kind of generated code in there appears to be of four
forms:
let vn () = Vn.connect "n"
module M = Server.Main(V1)(V2)...(Vn)
module D = Dd.Make(Dm1)...(Dmn)
let d () =
v1 () >>= function `Error e -> fail (Failure "v1") | `Ok v1 ->
v2 () >>= function ... ->
... ->
return (`Ok (v1, v2, ..., vn))
which looks like everything should knows what it depends on so you could
specify the way things get built up in the config.ml and then call the
per-library code generators.
--
Cheers,
R.
Attachment:
signature.asc _______________________________________________ MirageOS-devel mailing list MirageOS-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |