Skip to content
Hannes Hauswedell edited this page Feb 24, 2017 · 1 revision

General Design of SeqAn3

Goals (same as SeqAn2)

  • high performance
  • generality
  • extensibility
  • blabla

Paradigms (not the same as SeqAn2)

  • Modern C++17
  • Generic programming & polymorphism/polytypism via Concepts
  • Extensibility of existing types via traits
  • weak object-orientation with member variables, member functions, and access restrictions
  • but without without virtual inheritance (specialization through concepts!)
  • don't reinvent the wheel, use STL, SDSL, cereal, boost

Reasons

  • code is easier to read and maintain
  • code is easier to write (after some training!)
  • less code is required for the same outcome
  • some things we don't have to do at all, because other people have already β†’ less time spent on FOO, more time for adding features and writing great applications

Structural changes

While we are at it, we also:

  • switch our syntax to be more like STL, SDSL...: snake_case
  • switch to a third-party documentation system
  • switch to a third-party test framework
  • reorganize the git repositories

Quality control

SeqAn3 will have much stronger quality control from the start:

  • continuous integration, continuous deployment
  • automated style check and static code analysis
  • stricter development policies, e.g.
    • all functions must provide documentation of data races, exception safety, asymptotic run-time

What this means in practice

TODO

Clone this wiki locally