Roadmap

Devana is still under development. Two main functional modules are planned: a parser and a code generator. For now, parser is mostly done and basic functionality of the code generator is working. Many additional functionalities, not assigned to these modules, are also missing.

Parser

The main purpose of this part is to ensure correct translation of the C++17 headers code to python objects representing types and declarations. Standard preprocessor is not supported: code is parsed after preprocessor transformation.

If some parser functionality (in the context of C++ and headers) does not work in the current version of the project and is not included in the list of future functionalities, then most likely it should be treated as a bug.

In addition to the properties listed below, the most important thing at the moment is to prepare tests for unsupported language features to ensure that valid exceptions are thrown.

  • Parsing types and types traits
    • Make external types parsing better: low priority, already mostly done

  • Other code
    • Auto keyword: extreme low priority

    • Decltype: extreme low priority

    • Function declaration as trailing-return-type: extreme low priority

    • Noexcept and throw function declaration: medium priority

    • GCC attributes: medium priority

    • Except destructor: extreme low priority

    • C++20 modules: low priority

  • Other
    • Prevent re-parsing unchanged files: low priority

Code generator

Currently, core code generation functionality is working. Current work is focused on improving the convenience of using code generation. The main goal is to be able to edit and represent C ++ headers using Python code representations and to make it easy to generate implementations (as text based). Code generation is now the main focus of the project.

Each element present in the parser module should be available for editing and creation for generation purposes.

  • Code generator
    • High level code generation rules as framework: medium priority

    • Low level code generation rules as in code directives: medium priority

    • Context aware preprocessor: high priority

    • Possibility to verify the correctness of manually created code: low priority

    • New example/tutorial: medium priority

    • Lexicon automatic update for code generation: medium priority

Utility

Devana is young project, a wide range of minor elements needs to be refined.

  • Utility
    • Speed up parsing code: low priority

    • More examples: low priority

    • Build-in preprocessor: low priority

    • Serialize code representation: low priority

    • Better documentation: medium priority