Changelog

v2.3.0 (2024-10-06)

New

  • Better object constructors. [xXenvy]

    Adding a constructor to each syntactic element that allows you to set all of its parameters in one function call instead of using setter. Quality of life change.

  • Attribute parser. [JhnW]

    Beta release of a C++ attribute parser that allows creating attribute signatures with the expected types - with basic support for numbers and strings for now. The API may still change slightly. This is a preview before the full release of the preprocessor module.

  • Preprocessing - add extractor for comments. [xXenvy]

  • Example of generating setters and getters. [xXenvy]

  • Three-way comparison support from C++20. [Miłosz]

    Both parsing and printer

  • C++23 standard flag in configuration. [JhnW]

  • Update libcxx. [JhnW]

  • Noexcept support. [Miłosz]

    Added missing indent in return return statement in typeexpression.py, FunctionModification as FakeEnum, Noexcept value

Fix

  • Adaptation of “dragon case” for template parsing. [JhnW]

    Custom compiler flags are now supported for this very special case

  • Some simple fixes for printing and parsing the noexcept attribute. [JhnW]

Other

  • Pkg: chg: Version up. [JhnW]

  • Pkg: Global CI/CD update. [JhnW]

  • Test: Update Github actions for test. [JhnW]

  • Test: Fix path in test to avoid clang dizzy retun paths. [JhnW]

v2.2.1 (2023-11-01)

New

  • Support for constinit and costeval. [Miłosz]

Fix

  • Improved type recognition for array variables. [JhnW]

Other

  • Pkg: chg: Version up. [JhnW]

v2.2.0 (2023-09-23)

New

  • Basic preparations for a code processing framework. [JhnW]

    Creation of basic interfaces, first sample implementation, general corrections of syntactic types.

Changes

  • Update libclang to 16.0.6. [JhnW]

Fix

  • Removed indent for access specifiers. [Miłosz]

  • Meta enum example fixed for newer python and devana generators. [JhnW]

Other

  • Pkg: chg: Version up. [JhnW]

  • Doc: Code of conduct. [JhnW]

  • Test: Run code quality on branchces. [JhnW]

v2.1.0 (2023-06-03)

New

  • Check attribute in the same line as function. [JhnW]

    Important for common usages, for example nodiscard

  • Inline variables parsing and code generation. [JhnW]

Changes

  • New: Reducing the need for RAM. [JhnW]

    A new file-by-file parsing option has been introduced, which allows you to quickly implement parsing of large projects without manually dividing them into modules at the expense of slightly slower work. For this reason, the interface of the files property has been changed to suit the new capabilities.

Other

  • Pkg: chg: Version up. [JhnW]

  • Pkg: Add new version of python to pkg details. [JhnW]

  • Test: Adjust tox to new test flow. [JhnW]

  • Test: Fix Ut python version to 3.8. [JhnW]

    Test on both 3.8 and 3.9 is inessesary

v2.0.0 (2023-03-03)

New

  • Added possibility to use arbitrary parsing arguments. [JhnW]

    Any clang command line argument its posibble to use.

  • First version of parsing external code. [JhnW]

    It is now possible (to a limited extent) to parse non-lexic items. This functionality was introduced mainly to parse the standard library. Fixed several namespace parsing bugs and other necessary adjustments.

  • Configuration for use libcxx. [JhnW]

    For now Devana provide libcxx for all parsing targets.

  • Support C++11 attributes printing. [JhnW]

    Attributes are printed by code generator. Code generation configuration can filter out non-standard atribiutes from printing. Such attributes can be used as a source of information on how to generate code during parsing, but there is no need to include them in the resulting artifacts.

  • Support for parsing C++11 standard attributes. [JhnW]

    Attributes of classes, functions, namespaces, enums, function arguments, and class members are now recognized. Any attributes, even customs.

  • Add noexcept function mod for code printer. [JhnW]

  • Add noexcept function mods to parsing. [JhnW]

Fix

  • Skip MacOs std lib tests and tests cleanup. [JhnW]

  • Update dev deps. [JhnW]

  • Include property in SourceFiles now return right list. [JhnW]

    The previous implementation could lose header files if they were already included in the dependencies listed above: if we parased file X that contained include A and B, A contained include B, B was missing in the include list. The new implementation uses regular expressions and clang’s include list. Unfortunately, clang presents different levels of include nesting, removing those that have already appeared in the hierarchy.

  • Minimal file and module fixes. [JhnW]

    SorceFile force absolute paths in the path attribute. Better __repr__ SorceFile. SorceModule Lexicon instance clean up. Minor Lexicin clean - no more None in sources.

Other

  • Pkg: chg: Version up. [JhnW]

  • Doc: Cleanup roadmap. [JhnW]

    EXternal types now is aible to parsing so we need to delete this point.

  • Pkg: fix: Additional guard for release action flow. [JhnW]

  • Dev: fix: Minor whitespaces refactor. [JhnW]

  • Dev: new: Code quality on CI. [JhnW]

  • Dev: chg: Add pylint configuration. [JhnW]

    Pylint configuration and a bit code refactor - but minor and safe

v1.0.0 (2022-08-11)

New

  • Add prefix for functions and class. [JhnW]

    Code generation may use it for print compiler attribiutes

  • Parsing error policy in conent level. [JhnW]

    For now devana can use restricted mode or only log parsing errors.

  • Configurable version of the language standard. [JhnW]

  • Basic __rep__ implementation for syntax types. [JhnW]

    From now on, using Devan in interactive mode should be much more convenient. Quality of life change.

  • New high-level API for creating objects. [JhnW]

    From now on, classes representing code elements implement interfaces that define a unified way of creating their instances. Except in a few cases, you don’t need to use constructors directly, instead you can call from_cursor, create_default, and is_cursor_valid.

  • Using syntax - printer and parser support. [JhnW]

    For now only using UsingName = Type is supported as type alias. No using without “=” in all cases.

  • Function pointer - printing support. [JhnW]

  • Function pointer - parsing support. [JhnW]

  • Static Array type - printing support. [JhnW]

  • Static array type- parsing support. [JhnW]

    From now on, devana understands int a [16] [32].

Changes

  • Update roadmap. [JhnW]

    Removal of ready-made points, adding new ones, changing priorities to reflect my current plans

Fix

  • Fix printing fuction body from parsed information. [JhnW]

    Old printing function may print double bracket

  • Add section printer to default printers. [JhnW]

  • Add missing default printer for class sections. [JhnW]

  • Remove redudant module. [JhnW]

Other

  • Pkg: chg: Version up. [JhnW]

  • Pkg: chg: Upgrade MacOS CI environment. [JhnW]

  • Revert “pkg: chg: Add Python 3.10 tests to build flow” [JhnW]

    This reverts commit de143576b236b4bf63eb2cacdb55f4892448e077.

  • Pkg: chg: Add Python 3.10 tests to build flow. [JhnW]

v0.3.0 (2022-04-16)

New

  • Parsing and code generation for mutable fields. [JhnW]

  • Roadmap update and description of common user problems. [JhnW]

  • Code generators support for printing associated comments. [JhnW]

  • Parsing comments in code. [JhnW]

    It is possible to extract comments relating to the declarations of types, functions and class components. Additionality, it is possibile to obtain the file preambule (if present), i.e. the first comment not related to the code elements.

  • Extern C syntax code generator. [JhnW]

  • Extern C syntax parsing. [JhnW]

    Only a set of declarations / definitions of functions specified as extern “C” is supported.

Fix

  • One additional comment pairings improvement for windows platform. [JhnW]

  • Windows newline format (CRLF) fixed for comments parsing. [JhnW]

  • Improved header guard detection. [JhnW]

    From now on, the header guard syntax idiom allows any text to appear before and after it (it doesn’t have to be at the beginning and end of the file). To avoid confusing this idiom with normal preprocessor macros, there must be no valid C ++ code outside of the header guard.

  • Improved lookup of types in the lexicon. [JhnW]

    In some cases, it was possible to find a type incorrectly in the lexicon if it was in a different source file than the syntax element that uses it. Additionally, a minor bug in ClassInfo has been fixed.

  • Improved detection of types. [JhnW]

    Improved detection of types with the same names in different namespaces.

  • Text: Fix Fixed a hidden syntax error in one of the C ++ files. [JhnW]

Other

  • Pkg: chg: Version up. [JhnW]

v0.2.1 (2021-11-08)

New

  • StubType create. [JhnW]

    Stub Type will make easy and fast creating string-stub outside types like std::string for code generation, without import and parsing a lot of headers.

  • Header guard now is generated in SourceFile. [JhnW]

  • Header guard idiom parsing. [JhnW]

Fix

  • Include printers change inlude to right include. [JhnW]

  • Default printers list fix. [JhnW]

Other

  • Pkg: chg: Version up. [JhnW]

  • Doc: Example for code generation - meta enum. [JhnW]

  • Doc: New example: create meta information for enums. [JhnW]

v0.2.0 (2021-10-10)

New

  • Core of code generation functionality. [JhnW]

    A lot of minor changes, fixes in parsing module, possibility of multiple pointers type modification (finally!) and writing code generator. Delivered framework for printing syntax abstraction elements along with the default implementation of printing all items. The Python code representation has been improved to allow manual code changes (setters are fixed) and always correctly create new class instances without source files. Lexicon still need to be updated manually in no-parsing code case.

Changes

  • Disable automatic doc generation for every commit. [JhnW]

    It was messy idea.

  • Build doc after every test. [JhnW]

Fix

  • Change log will not print automated doc gen. [JhnW]

  • Release doc gen reparired. [JhnW]

  • Fix checkout and no-tag doc build. [JhnW]

v0.1.5 (2021-08-15)

Fix

  • Pointer order no longer confused class fields with instance fields. [JhnW]

    First version of pointer order write value to class fields (globa value). Now FakeEnum metaclass is provided.

Other

  • Pkg: chg: Version up. [JhnW]

  • Doc: fix: Update docs. [JhnW]

v0.1.4 (2021-08-08)

New

  • Pointer order basic API for nested pointers. [JhnW]

    Nested pointer parsing only for basic cases, without parsing nested type modification.

Other

  • Pkg: chg: Version up. [JhnW]

  • Doc: fix: Changelog will be generated right. [JhnW]

  • Test: fix: Fix test runner for Windows platform. [JhnW]

v0.1.3 (2021-07-22)

Fix

  • Better doc, add literally the specific C++17 version in clang. [JhnW]

  • CI will automatic push doc. [JhnW]

v0.1.2 (2021-07-21)

New

  • Add badges. [JhnW]

  • Setup standard CI test. [JhnW]

  • Beta documentation generated by hand. [JhnW]

Fix

  • Fix autdoc generate and update. [JhnW]

  • Version 0.1.1. [JhnW]

  • Fix delete repository. [JhnW]

  • Use provider to pip upload. [JhnW]

  • GithubAction name change. [JhnW]

  • Make test os independent. [JhnW]

  • Raw file encoding make better. [JhnW]

  • Delete comments. [JhnW]

  • Enum expected type adjusted to win and unix platforms. [JhnW]

  • Skip test with system STD lib in other platforms than linux. [JhnW]

  • First part of fixing Windows tests. [JhnW]

  • Next try to fix MacOS tets. [JhnW]

  • Next try to fix MacOS tets. [JhnW]

  • Try to fix MacOS tets. [JhnW]

  • Fix os env in CI. [JhnW]

Other

  • Merge remote-tracking branch ‘origin/main’ into main. [JhnW]

  • Update tests.yml. [JhnW]

  • Genesis. [JohanW]

  • Initial commit. [JhnW]