π Features
New features and additions
- β¨
warn-as-error
option. ca8bbbe - π« UndocumentedInfoSet stores InfoKind. 82eaeec
- π Copydetails command copies unambiguous metadata. 43973cb
- β¨ Ordered warnings. bc51965
- π«
extract-private-virtual
option. 7e99c39 - π
extract-static
option. c69f121 - β¨
extract-local-classes
option. da038da - π«
warn-unnamed-param
option. 37786fd - π Overloads javadoc. 0e8b79f
- β¨
extract-empty-namespaces
option. 99bf927 - π« Javadoc ref parser supports function parameters. 2f73713
- π Best match corpus lookup algorithm. c824c82
- β¨ Overloads support return type. 52c934d
- π« Support multiword refs. 7d65be3
- π Refs match conversion operators. b76c8ba
- β¨ Javadoc parser extracts ref qualifiers. 2e61695
- π« Ref parameter match supports arbitrarily qualified names. 4a40e18
- π TypeInfo identifies fundamental types. f5e3421
- β¨ Refs match fundamental type variants. 7263e51
- π« Ref parser supports template arguments. fcffff5
- π Corpus lookup matches template arguments. 8fe596e
- β¨ Merge function parameter names from multiple declarations. 3497b03
- π« Javadoc mapping traits. 2e64221
- π Preprocess related symbols. f069410
- β¨
auto-relates
option. bd9d684 - π«
extract-implicit-specializations
option. b1d3f24 - π Inherit base class overload sets. 4550326
- β¨ Support implicit templates. (fix #868) 572a465
- π« Templates include base classes. d59c28f
- π
auto-function-metadata
option. 01c5e15 - β¨ Records store friends as relationships. 5ee5c49
- π« Friend table templates include qualified name. 76bc993
- π Support @relates (#698). (closes #243) d448757 (thanks @betterqualityassuranceuser)
- β¨ Print external commands. (fix #914) 5aa5691 (thanks @betterqualityassuranceuser, @gennaroprota)
- π«
extract-friends
option. (fix #910) 3e9c1aa (thanks @anarthal) - π Multipage title uses breadcrumbs symbol format. 6a406a8
π Fixes
Bug fixes and error corrections
- Logical operator precedence. eb431cf
- Unique_lock is not CTAD. 541d80c
- Preemptively identify detail parents. 54f2118
- Inherit-base only applies to regular symbols. 65cdf3e
- Inherit-base skips special functions. b29ba25
- Info merging uses derived classes. 1e8d691 (thanks @betterqualityassuranceuser)
- Group overloads per access level. 287e588 (thanks @betterqualityassuranceuser)
- Specialization title links wrap correct components. 99d0dd2
- Asciidoc anchors cannot start with numbers. b8dacc3
- Handle constructor from reference to array. 31f7d46 (thanks @betterqualityassuranceuser)
- Use after free returning string_view bound to local string. be24cfe (thanks @betterqualityassuranceuser)
- Warning message about missing return description. b7917af (thanks @betterqualityassuranceuser)
- Move an include of to where it belongs.1 1a5b15a (thanks @betterqualityassuranceuser)
- Pass unsigned chars to the cctype functions.2 becda0c (thanks @betterqualityassuranceuser)
- Destructors cannot have overload sets. 00b56e9 (thanks @betterqualityassuranceuser)
- Replace uses of deprecated has_formatter. 26d4c50 (thanks @betterqualityassuranceuser)
- Repopulating TArg doesn't push back. 474032d
- Populating RecordInfo identifies duplicate friend IDs. (fix #925) e4a4a15
- Record friends exclude implementation defined symbols. (fix #924) 5372fdf
- Explicit object member functions have no qualifiers. 502bf32
- Update symbol name log level. 9cbaca5
- CMake uses adjusted output dir. e2474cd
- Detect base member qualified overloads. d6b2970
- Redundant Decls use least specific extraction mode. 1cbeee6
- SpecializationInfo is unused. e0a9479
- Adoc anchors use link macro.3 747e6a7
- No breadcrumbs in signature declarators. (fix #827) 3606a89 (thanks @anarthal)
β‘οΈ Performance
Performance optimizations and enhancements
β»οΈ Refactor
Code refactoring and restructuring
- GetPrimaryLocation depends on InfoKind. 113a57e
- Option name is
extract-private
. 7c0c618 - Option name is
extract-private-bases
. cee3fbe - Option name is
extract-anonymous-namespaces
. e5f0bd3 - Source is constexpr. b2bafb8
- IsDefinition and isDocumented are clang helpers. 887c332
- Sorting operators last includes stream operators. 3fe5287
- Modularize error header. b1676a5
- Single InfoNodes.inc. 1548967
- Remove unused MetadataFwd.hpp. 78a4394
- Relocate Lib files. 8e2dbdd
π Documentation
Documentation updates and improvements
- Option key conventions. f843cc2
- Remove c processor extension. 9eec331
- Documentation glitches. 7a4e1c3 (thanks @betterqualityassuranceuser)
- One-liner installation instructions. 1a9de28
- Set up @asciidoctor/tabs in UI bundle. c8095b5
- Update manual installation instructions. c71a28d
- Documentation for Polymorphic default deleter. 77cea7c (thanks @betterqualityassuranceuser)
- Define missing callout. b3e522e
- Describe dependency refresh. 61d6e7b
π¨ Style
Code style and formatting changes
- Source warnings are numbered. 0719850
π¦οΈ Build
Build system and configuration changes
- Bootstrap script.4 521cc70
- Bootstrap uses another path for mrdocs source when not already called from source directory. e32bb36
- Bootstrap build options list valid types. e7e3ef5
- Bootstrap prompts use colors. 75c28e4
- Bootstrap removes redundant flags. c156a05
- Bootstrap runs tests in parallel. c14f071
- Unused cli option is not a warning. (build: unused cli option is not a warning) 994dd25
- Llvm build dir is in llvm-project root. 52e4fe4
- Bootstrap paths use cmake relative path shortcuts. 76611f9
- Use new CMP0111 policy. 111926d
- Duktape default package name is lowercase. a805e12
- Remove dependency on fmt library, using std::format instead (#929).5 5e97515 (thanks @betterqualityassuranceuser)
- Remove fmt from bootstrap.py. 6e12444
- Bootstrap generates debug configurations. 502cfbd
- Bootstrap dependency refresh run configurations. b546c26
- Bootstrap documentation run configurations. 83525d3
- Bootstrap remove bad test files run configuration. ee1b7da
- Bootstrap website run configurations. 2cfdd19
- Bootstrap MrDocs self-reference run configuration. ca4b04d
- Bootstrap XML lint run configurations. b5f53bd
- Bootstrap supports custom compilers. 0a751ac
- Require libc++ and clang headers.6 6e5f80c
- LLVM runtimes come from presets. ff62919
- Bootstrap debug presets with release dependencies. 2b757fa
- Installation workflow uses Ninja for all projects. 0d179e8
- Installation workflow supports sanitizers. 3d8fa85
- Installation workflow supports homebrew clang. 26cec9d
- External include directories are relocatable. fc2aa2d
- Bootstrap vscode run configurations. 21c206b
- Visual Studio run configurations. d2f9c20 (thanks @betterqualityassuranceuser)
- Run configurations include a refresh-all target. cae365e
- Bootstrap supports custom python path. d97c381
- Bootstrap supports default Visual Studio tool paths on Windows. 0ca523e
- Windows presets include git_path. 51c82ba
π§ͺ Tests
Test cases and testing-related changes
- Independent copydetails tests. 352cd77
- Modularize symbol tests. f5cf9d8
- Friend tests are record tests. 9ccf054
- Copydoc param types. da3305b
π¦ Continuous Integration
Changes related to continuous integration
- Add newer compilers to the matrix.7 bf3f56b
- Remove extra git install step. bc01ac0
- Libxml2 build mode is static. 7fbe9f2
- Enable permissive coverage consistency check. 5df9834
- Disable check_data_consistancy when generating coverage reports.8 ebad2f7
- Add .run to gitignore. c3c6759
- Enable ubsan for clang and GCC. 3fd05bb
- Add clang UBSan and ASan to apple-clang job.9 73fadd7
- LLVM_ENABLE_RTTI is already set in presets. b997dec
- Antora forces git fetch. 21a3e30
ποΈ Chores
Routine tasks, maintenance, and housekeeping
- Version is 0.0.4. f2ebf09
π οΈ Improvement
General improvements and enhancements
- ASTVisitor handles source info independently from javadoc. 9decbdb
- Corpus lookup returns Expected. fb7e59f
extract-private-bases
default isfalse
. f6686c0- Corpus lookup returns references. 040b99d
- Namespace using directive is name.10 11df305
- Empty enum template has no members table. 2de0c4f
- Lazy decayed type comparison. e8c5b5a
- Parse support header. 1b3227b
- Javadoc visitor uses ref parser. 03d1917
- ScopedTempDirectory stores error type. fd2709b
- No unused template linebreaks. 37b782e
- Reserved legible names are automatically generated. 82ac48e
- Report symbol types. b055f05
- Merge mutually exclusive field and variable symbol types. ac00578
π¬ Other
Other changes not covered by specific categories
- Correctly handle files included through symlinks. ff33c4b (thanks @betterqualityassuranceuser)
-
The header was included in String.hpp, but that file doesn't use any ofits functions. However, ParseJavadoc.cpp does, so we add the includethere. β©
-
Differently from their counterparts, the functions in and <ctype.h> have undefined behavior if their argument is notrepresentable as an unsigned char and is not equal to EOF. β©
-
Asciidoc implementations of <<>> for anchors fail when the anchor text contains ">>", even when properly escaped. β©
-
The bootstrap script provides a single source of truth for the installation steps described in install.adoc. β©
-
This bumps the standard version to C++23, so that the
formattable
concept becomes available.This removes the color support fromdiff.cpp
, since that is notavailable in std::format. β© -
Make CMakeLists.txt enforce the requirement for libc++ and the clangheaders.Otherwise, it's possible for configuration to succeed but producea non-functional mrdocs, where the tests fail in non-obvious ways. β©
-
This also:* Makes sure the ubuntu clang builds have libstdc++-14 installed, which is our minumum.* Bumps cpp-actions to v1.8.10* Use the newest Xcode for MacOS. β©
-
This works around a post-merge-only CI failure. β©
-
Also fixes sanitizer variable usage on llvm-basenameThe setting for LLVM_ENABLE_RTTI was also redundant, as it is always setby the cmake profiles. β©
-
This allows using directives to dependencies. β©