Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Core / Utility Split #160

Closed
15 of 23 tasks
marehr opened this issue Jul 13, 2020 · 4 comments
Closed
15 of 23 tasks

Core / Utility Split #160

marehr opened this issue Jul 13, 2020 · 4 comments
Labels
ready to tackle This story was discussed and can be immidietly tackled
Milestone

Comments

@marehr
Copy link
Member

marehr commented Jul 13, 2020

We split the core module into core module and utility module: (Card)

  • core is everything strongly coupled with our library, required by > 1 module, and is not stand-alone.
  • utility contains features not related to biological use cases and could potentially live as stand-alone libraries outside of SeqAn.
  • Here is a gist with an overview of the current state of core and the possible split.

https://gist.github.com/rrahn/f6b09ad67bebd14bd9c58f77c53e0450

for extracting core into utility; e.g. tuple etc, type_traits into utility.

@marehr


09.12.2019


We will split all files into either utility or core. see the protocol for further details

https://github.com/seqan/seqan3/wiki/Core-Meeting-notes#2019-12-09-rrahn


Acceptance criteria

  • Including the old header should not break the current code.
  • Including the old header should raise a deprecation warning and output the new header that needs to be included.

Tasks per header

  • copy the header to the correct place
  • shortly check if all header includes are correct: remove unused, order alphabetically, put seqan3/std/* headers to the top
  • possibly rename the header
  • deprecate old header with header deprecation macro:
    SEQAN3_DEPRECATED_HEADER(
       "This header is deprecated and will be removed in SeqAn-3.1.0; Please #include <seqan3/alphabet/aminoacid/translation_new.hpp> instead.")
  • deprecate old header doxygen file section: add [DEPRECATED] at begin of brief and add \deprecated This header is deprecated and will be removed in SeqAn-3.1.0; Please \#include <new header> instead. tag.
  • move all related tests, snippets etc to match new folder structure
  • run all tests to see if nothing depends on old header anymore
  • live happily ever after

submodule/header assignment (please see gist https://gist.github.com/rrahn/f6b09ad67bebd14bd9c58f77c53e0450)

@marehr marehr transferred this issue from seqan/seqan3 Jul 13, 2020
@marehr marehr added Epic spike and removed Epic labels Jul 13, 2020
@rrahn
Copy link
Contributor

rrahn commented Nov 10, 2020

Core meeting 2020-11-10

How to split the modules on a technical level.

Requirements:

  • Including the old header should not break the current code.
  • Including the old header should raise a deprecation warning and output the new header that needs to be included.

Open questions:

  • What happens with the header-tests?
    • We will use some deprecation macro that allows us to deprecate an unused header.
    • This macro will be disabled when running the header tests.
  • Should we, and if so how, also deprecate the header documentation?

@rrahn
Copy link
Contributor

rrahn commented Nov 23, 2020

Resolution - Core meeting 2020-11-23

  • We will remove detail/all.hpp headers and public all.hpp should not include detail headers.

  • We remove them without any deprecation notice.

  • If an existing all header includes partially from deprecated headers we add a

    #if SEQAN3_VERSION_MAJOR == 3 && SEQAN3_VERSION_MAJOR >= 1
         #pragma warning "DEV NOTICE: Remove the deprecated header #include <deprecated_header>."
    #endif

@smehringer
Copy link
Member

smehringer commented Dec 14, 2020

Resolution 14-12-2020

  • pipeable_config_element should be moved into detail (@rrahn will tackle this)

    • Move file to core/configuration/detail
    • Move to seqan3::detail namespace
    • Rename to configuration_element_base
    • Make sure that the documentation of the configuration class does not refer any detail stuff (regarding the detail::pipeable_config_element).
    • Follow up: Check if interface documentation of "pipeability" could be put into pipeable_config_element and every config element can pull in this documentation.
    • See follow-up ticket pipeable_config_element should be moved into detail #288
  • Move core/concept/core_language.hpp -> utility/detail/exposition_only_concept.hpp
    (Later we might discuss if we should remove some of the concept completely)

  • Move core/simd/simd_algorithm -> utility/simd/algorithm.hpp (@marehr )

@marehr
Copy link
Member Author

marehr commented Feb 15, 2021

I close this now, because it is mainly done. We have one follow-up ticket #288

@marehr marehr closed this as completed Feb 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready to tackle This story was discussed and can be immidietly tackled
Projects
None yet
Development

No branches or pull requests

3 participants