Skip to content

develop

Choose a tag to compare

@github-actions github-actions released this 24 Oct 14:38
· 686 commits to develop since this release

πŸš€ Features

New features and additions

  • ✨ Templates receive config via reflection. d178804
  • πŸ’« Quick reference index page. (fix #575) 68e029c
  • 🌟 ASTVisitor extracts the full introduced name. 249c73a
  • ✨ Namespace tranches include using declarations. 69e1c3b
  • πŸ’« Overload sets as shadow declarations. 2b59269
  • 🌟 sort-members-by option. f0ba28d
  • ✨ sort-namespace-members-by option. (fix #988) a0f694d
  • πŸ’« Unnamed records are implementation-defined. 9508933
  • 🌟 Missing include options. b5c1635
  • ✨ Conditionally explicit clauses in templated methods. 2bff4e2
  • πŸ’« Destructor overloads in class templates. 336ad31
  • 🌟 MrDocsSettings compilation database.1 9afeded
  • ✨ Io.h stub. c70dfdc
  • πŸ’« Add close button to docs nav (#1033). 940c33f
  • 🌟 Show-enum-constants option.2 07b69e1
  • handlebars:
    • ✨ handlebars: Using declaration page includes shadows and briefs. d722b7d
    • πŸ’« handlebars: Final specifier. (fix #963.) d5a28a8
  • 🌟 LLDB data formatters. 069bd8f
  • lib:
    • ✨ lib: Optional nullable traits. c9f9ba1
    • πŸ’« lib: Optional references.3 8ef3ffa
    • 🌟 lib: Expected references.4 1da73f8
    • ✨ lib: All base classes implement node kind inc pattern.5 1fed5e5
  • Corpus:
    • πŸ’« Corpus: Location objects include column number. c7219fa
    • 🌟 Corpus: Render source line and caret in warning output.6 c3d8145
  • ✨ Support recursive inline elements in documentation. 51e2b65

πŸ› Fixes

Bug fixes and error corrections

  • using synopsis uses the nameinfo only. 6878c19
  • Symbol shadows table has a single column. b10b8aa
  • Std::formatter for clang::mrdocs::SymbolID. 21ce3e7
  • Bootstrap uses lastest clang include directory. f936346
  • Using decl shadows do not contain excluded symbols. 2dcfe68
  • Clang helpers tracing print class header only. 142e639
  • Remove an unused else if in record.hbs. 2da2081
  • Simplify the logic about base classes in record.hbs. b528ae1
  • GetParent supports transparent namespaces. dcd8d10
  • Reorder dependency extraction mode as more specific. 683829b
  • Overloads finalizer preemptively emplaces members.7 8a81156
  • Legible names handle using declarations as shadow. 3ff3744
  • StartsWith function respects path separators. d348e51
  • ExtractSFINAEInfo filters expressions. 9144ddb
  • Use a distinct include guard in MrDocsSettingsDB.hpp. a1f289d
  • Don't mark unnamed classes as implementation defined.8 e2c8aac
  • Minor UI styling improvements (#1050).9 cf169e6
  • handlebars:
    • handlebars: Html code blocks start on the first line. d66da79
    • handlebars: Recursively traversed namespaces do not include description. 5234b67
    • handlebars: Starts_with helper validates arguments. ec8daa1
    • handlebars: Records include protected base classes. 5e879b1
  • lldb:
    • lldb: Only handle Info types directly in mrdocs namespace. f83eca1
    • lldb: Clang ast formatters. 1b39fdd
    • lldb: Consistent clang summary. aefc53c
  • Do not attempt to format logs without parameters.10 c8816a5
  • Setup C++ when building releases (#1041). (Co-authored-by: Matheus Izvekov mizvekov@gmail.com) 13e9230
  • Update Open Graph and Twitter meta tags for improved sharing (#1075). (Co-authored-by: Alan de Freitas alandefreitas@gmail.com) 5a9b1d2

♻️ Refactor

Code refactoring and restructuring

  • Reimplement ADT/Polymorphic.11 b2e623c
  • UsingInfo uses introduced NameInfo. 67fe17e
  • Xml generator use config values directly. 482c0be
  • Split base and derived classes.12 f3d43cb
  • Metadata base classes do not expose constructors. 8834acb
  • Nullable_traits null() is only used as implementation detail.13 ba7f6e5
  • Refactor clang trace helpers use std::string. 2a4cef0
  • Config dom object update function. 3bd94cf
  • lib:
    • lib: Polymorphic is value-type.14 479d1e7
    • lib: Use mrdocs::Optional in public API.15 bd3e121
    • lib: Info contains SourceInfo as composition.16 948e269
    • lib: Consistent metadata class family hierarchy pattern.17 6d49549
    • lib: Lua is external dependency. 7715528
  • Corpus:
    • Corpus: Enforce non-optional polymorphic types.18 afa558a
    • Corpus: Valueless_after_move is asserted.19 6ba8ef6

πŸ“– Documentation

Documentation updates and improvements

  • Exposition uses "Mr.Docs". 02d81dc
  • WCAG 2.2 Level AA accessibility improvements. e354410
  • Remove incorrect list from commands table. 42ba51e
  • Further accessibility improvements. 9b7d498
  • Invert config file and commands section. e94c2d5
  • Mrdocs self-reference doc comments. 8811ecc
  • Icons. 04d128e
  • Demo page includes adoc-asciidoc. 05b6ac8
  • Extension sorts demos by release. 177fae4
  • Mrdocs release links have no emoji. 0be4bad
  • Chmod bash scripts. 95e68ed
  • Update antora extension icons. eb22089
  • Landing page has a more professional tone. 1ef4e72
  • Nlohmann.json demo. c18be83
  • Fmt demo. 1b930b8 cfa9eb7
  • Replace icons in design notes page. f7fc156
  • Mrdocs build generates headers at configure time. f555ee1
  • Include library reference. 1ea3e3d
  • Style guide. 08b5707

🎨 Style

Code style and formatting changes

  • Comprehensive UI refresh for landing page and docs.20 (WIP: Major design update with modern styling.) 251173b
  • Update docs UI styles for improved contrast and clarity (#994).21 4a24503
  • Hide close button on larger screens in docs nav (#1040). 3197a59
  • Version printer mimics clang. d947525

πŸ“¦οΈ Build

Build system and configuration changes

  • bootstrap:
    • bootstrap: Find_tool also looks at prefixes. 3eec9a4
    • bootstrap: Run configurations create paths with path.join. 71afb87
    • bootstrap: Remove dependency build directories after installation. 94a5b79
    • bootstrap: Visual studio run configurations and tasks. 524e792
    • bootstrap: Probe vcvarsall environment. 4b79ef4
    • bootstrap: Ensure git symlinks. 4d705c9
    • bootstrap: Include pretty printers configuration. fc98559
    • bootstrap: Boost documentation run configuration folder. 7d27204
    • bootstrap: Config info for docs. 988e9eb
  • Remove_bad_files script does not rely on mapfile. 469f41e
  • Quote genexp for target_include_directories.22 629f184
  • Custom target to test all generators. 5aa714b
  • Presets use optimizeddebug to match bootstrap. be7332c
  • MRDOCS_DOCUMENTATION_BUILD for self-reference. cb0c57f
  • Bootstrap enables libcxx hardening mode. f48bbd2

πŸ§ͺ Tests

Test cases and testing-related changes

  • Using declaration fixtures layout by info type. 3327505
  • Test cases for all using declaration variants. 88a1ceb
  • Using declaration shadows only include previous declarations. 9253fd8
  • Using declaration with mixed shadows. a7d5cf6
  • In-class using-declaration permutations. 4887496
  • Refs to parent contexts. 8f98077

🚦 Continuous Integration

Changes related to continuous integration

  • Add asan clang Linux job. 6257c74
  • Antora workflow uses full clone. 2f0dd8c
  • Debug level for antora generation and copy. acf7c10
  • Mrdocs self-reference demo. 8652eee
  • Demos use generator option. c4a7fa6
  • Run asciidoctor on adoc demos. aecc1e6
  • Asciidoctor rendering mirrors adoc dir layout. 4cf42ee
  • Beman.Optional demo. 275b9f8
  • Mp-units demo. c9c1434
  • Add msan Linux job. 88954d7
  • Improve the 'Publish website' step (#1046).23 (Fixes #1039) ffc2762
  • Enable coverage validation for PRs. bf19575
  • Treat warnings as errors. ba0dcfd

πŸ—οΈ Chores

Routine tasks, maintenance, and housekeeping

  • Update to llvm 22 at a1b6e7ff39.24 fa3a347
  • Git ignore landing page artifact. 63a97a5
  • Git ignore IDE config files. 56bbc38

πŸ’¬ Other

Other changes not covered by specific categories

Parent release: v0.0.4 f2ebf09

  1. Generate compile commands according to the glob patterns defined in the configuration file. ↩

  2. Since an EnumConstant is a regular information type according to the Clang AST, it supports all Javadoc features. For consistency, we create an option analogous to 'show-namespaces' for 'enum-constants', so the user has the ability to render their own doc comments instead of discarding them. The logic is also important because it opens the possibility of conditionally rendering enum constants. ↩

  3. Support Optional for references and replace usages of Optional with reference wrappers in the codebase. ↩

  4. Support Expected for references and replace usages of Expected with reference wrappers in the codebase. As with Optional references, expected references provide a safer interface that always rebinds values. Syntax is also more convenient both to declare variables without std::reference_wrapper and to access values without requiring the get function. ↩

  5. This pattern defines a single source of truth for all derived types in a family of classes. Thus, conversions with the as_ and is_ functions are limited to valid derived classes. ↩

  6. Warnings now include a snippet of the source file similar to GCC and Clang diagnostics. Each warning prints the file path, line, and column, followed by the line of source textand a caret marker pointing to the column. This makes it easier to identify and fix issues directly in context without having to open the file manually. ↩

  7. This avoids infinite recursion between using directives and namespaces. ↩

  8. These classes can appear as user written code and needs to be documented, as show in the new test case.In general, for implementation defined declarations, we can detect them as the clang AST exposes them as 'implicit', but this is possible for any declaration, and can be handled more generally.The new included exposes a different bug, where we don't attach the documentation provided for each member in a declarator, which clang does expose in the AST, but we seem to be ignoring it. ↩

    • Update doc layout and typography styles- Refine header navigation appearance- Adjust main table content responsive behavior.
    ↩
  9. This leads to segmentation faults when the string contains reserved sequences. ↩

  10. This is a simpler design, with less differences in API wrt tostd::polymorphic, though still with some differences, includindingnullability, and some unused features which are not important to usare left out.This avoids memory leaks facilitated by the previous design, and isa step towards making the project pass the LeakSanitizer. ↩

  11. Split base and derived classes into their own headers to remove circular dependencies in the code. ↩

  12. This ensures there are no disengaged versions of value-types. ↩

  13. This commit adjusts the Polymorphic class so that it becomes a value-type that matches the standard std::polymorphic. It also implements an implementation detail shared with Optional, allowing the private nullable state to be used for storage optimization.The semantics become less convenient in the case of optional polymorphic objects, but the application becomes much safer because non-nullable objects are never in an invalid state. After adapting all objects, most polymorphic objects are, in fact, not nullable.As future work, we can define a custom type for nullable polymorphic objects that has simpler semantics. ↩

  14. Use mrdocs::Optional throughout the public API for consistency and extensibility, including the optional reference return types. ↩

  15. Info objects contain Source information rather than being source information. ↩

  16. Apply a consistent pattern for the class families in the metadata. Class names match their name in all places (such as Symbol instead of Info, and Type instead of TypeInfo), and the clang namespace is described explicitly to avoid name conflicts. The Javadoc hierarchy for blocks and inlines is also well defined. ↩

  17. Ensure optional polymorphic types are only used for members that are really optional in terms of application logic. Otherwise, we only make them polymorphic objects that cannot be empty and give them reasonable defaults among the derived types in that type family. ↩

  18. Only use MRDOCS_ASSERT for valueless_after_move(). Since polymorphic objects are no longer nullable, and using moved-from objects is invalid, we should never check valueless_after_move() to determine conditional application logic. ↩

  19. Landing page:- Added gradient backgrounds with RGBA color system- Updated header and navigation layout- Improved feature panels and mobile responsiveness- Udated logos and graphicsDocumentation UI:- Enhanced Antora theme with blurred, gradient, backgrounds- Restructured CSS architecture (vars.css, base.css, site.css)- Better typography and color system- Improved overall readability. ↩

    • style: update UI styles for improved contrast and clarity* style: remove background-blend-mode from base.css* style: update docs nav download button colors* fix: adjust scroll position calculation for toolbar* style: remove height from snippet-image class* fix: anchor scroll positioning & TOC highlighting bugs* style: remove unused alignment helper classes* style: update button styles and navbar links for landing page* style: improve logo contrast and clean up nav styles* style: refactor dark theme styles and button colors for landing page* style: improve UI contrast and navbar interactions* style: add primary color variables and backdrop filter* style: update nav colors and background styles* feat: add static documentation generation script* style: flip ui illustrations horizontally* chore: add generated index.html for Netlify deployment* style: enhance documentation panel typography and layout* style: refine documentation panel font colors and sizes* style: remove contrast class from footer links* style: enhance table icons and add new color variable* style: add box-shadow to table icons for depth* style: update table border color and selector specificity* style: center-align table cells with images* style: make selected bottom border transparent* chore: remove index.html and update .gitignore for merging* style: add background color to first row of tables* style: update first tr background-color only* style: set first row (tbody) background to transparent* style: refine table row background color selectors* style: ensure landing page navbar matches docs.
    ↩
  20. LLVM_INCLUDE_DIRS can be a list of directories with more than one entry.Quote the generator expressions so that list expansion doesn't happenbefore it is parsed. ↩

  21. This makes that step use rsync to upload the website and demos.Besides supporting compression, rsync also only sends the changesover the wire.This improves the performance of that step by a wide margin, reducingnormal upload times from almost 9 minutes down to about 20s for the mostcommon changes.This uses rsync's ability to also remove stale files, to make surewe don't leave old files behind. (This ignores the directories which arehandled separately, like llvm+clang and demos).There were some pretty stale things left behind that this now removes,such as a sitemap.xml which was generated last year. ↩

  22. This brings our llvm to current development head. ↩

    • fix: copy website assets properly in CI* chore: remove unnecessary footer content* style: update doc link colors in vars.css for better contrast* style: refine color variables and update styles for better contrast* style: update pagination colors for improved visibility* style: update code highlight and toc colors for contrast* style: change stroke color in home-o.svg to white.
    ↩
    • style: enhance navbar and footer link styles* style: refine link styles in navbar and footer* style: adjust box dimensions for responsive design* style: enhance header layout and improve responsiveness* style: refactor inner-box styles for rotation and scaling* style: remove background styles from article and nav.
    ↩