[Cython] Utility Codes and templates
stefan_ml at behnel.de
Tue Jul 26 11:26:28 CEST 2011
mark florisson, 26.07.2011 10:57:
> On 26 July 2011 08:46, Robert Bradshaw<robertwb at math.washington.edu> wrote:
>> On Mon, Jul 25, 2011 at 11:39 PM, Stefan Behnel<stefan_ml at behnel.de> wrote:
>>> Robert Bradshaw, 26.07.2011 06:29:
>>>> On Mon, Jul 25, 2011 at 3:07 AM, mark florisson
>>>>> It's now 'MyUtility' and
>>>>> 'MyUtility.proto'. If there's no objection to the ini-style header
>>>>> (with requirements and other metadata possibly), then I'll implement
>>>>> that one of these days.
>>>> One drawback with the ini style is that it detaches the metadata from
>>>> the code block itself (and require duplicating their names).
>>> The names are duplicated in the file already, since impl and proto are
>>> separated and can be anywhere in the file (e.g., you could put all protos at
>>> the top and all implementation parts further down). The advantages of
>>> putting in a header is that
>>> a) it's immediately visible from the top of the file what it contains
>>> b) the dependencies on other files are explicit and clearly visible, again,
>>> from the top of the file
>>> c) the metadata is easy and quick to parse, as the header is trivially
>>> separated from the rest
>>> d) only the header needs to be parsed in order to know what can be found in
>>> it or what other files are required to compile it
>>> e) we don't need to write our own parser, and the overall file format is
>>> trivial to parse
>> I prefer keeping the metadata close, but perhaps that's just a matter
>> of opinion. Slurping in the entire file and parsing the block headers
>> is pretty trivial as well, and with pre-fetching (on so many levels) I
>> don't think there's a technical advantage for files so small. For
>> those (likely common) cases where no metadata is required, I'm -1 on
>> having to manually keep a "table of contents."
> Right, you woud only list metadata if there is something worthwhile to
> list. Otherwise you just omit it. (Perhaps that was not what Stefan
> had in mind though, I'm not sure).
I don't care so much here, but I consider the file header an interface
description. I.e. you could also include utility code in a file that is
only available as dependencies to other utility code, simply by not listing
it in the header. Allowing to skip the header makes the semantics a bit
more ugly here.
But as I said, I wouldn't mind if the header was optional, as long as
that's easy enough to handle.
More information about the cython-devel