Skip to content

Discussion points

Hannes Hauswedell edited this page Dec 10, 2021 · 7 revisions

A list of things we should discuss before a 1.0 release (create individual pages with details if more than a paragraph is needed):

  1. Should all bio::field enum entries be distinct for simplicity?
  2. "Deep records":
  • Shallow records are default and recommended.
  • Deep records are required sometimes, e.g. in combination with `views::async_input_buffer
  • Currently, one can select deep records via template parameter and the options. This means all formats need to implement it (not that much work actually) and that the options and dynamic_type are more complicated (a little annoying).
  • An alternative design would be to have the formats always output shallow records and offer a generic .make_deep_copy() on the record that returns a self-contained record (this would automatically turn views into vectors...).
  • PRO: the overall design becomes easiert to understand; a little less work for format input handlers
  • CON: you cannot specify the specific "deep" types anymore, the record always picks e.g. vector for views; certain optimisations are no longer possible (e.g. deep FASTA reading into std::string can currently avoid a copy by swapping buffers with output strings; this wouldn't be possible in the changed design)
Clone this wiki locally