Skip to content

v0.0.1

Compare
Choose a tag to compare
@alandefreitas alandefreitas released this 01 Dec 23:12
· 408 commits to master since this release

Changelog

πŸš€ Features

New features and additions

  • ✨ RangeFor. c916310
  • πŸ’« Formatter. 21988cf
  • 🌟 Handlebars API. 7a218f4
  • ✨ Add Path APIs. 66aedd6
  • πŸ’« JavaScript api. e12c78d
  • 🌟 Addons directory. 9582ac1
  • ✨ String support algorithms. ae14717
  • πŸ’« Doc::Heading. 9094337
  • 🌟 More doc node types. 6806796
  • ✨ Add MRDOX_GENERATE_REFERENCE cmake option. 6e67eb4
  • πŸ’« Error refactoring. 1982508
  • 🌟 Stack trace on exception. fcb2d60
  • ✨ Links in doc. 0578675
  • πŸ’« Dom. ec7344e
  • 🌟 Adoc support for templates. (close #328) 1a89402
  • ✨ Interface for records. 1138867
  • πŸ’« Enum dom and adoc work. 2b90a02
  • 🌟 Dom is lazy. a2613b8
  • ✨ Better Expected. 5b2fa54
  • πŸ’« SharedPtr. e2d0f73
  • 🌟 Lua integration. 940033e
  • ✨ Recursive TypeInfo structure. (closes #209, closes #343) af254c3
  • πŸ’« New Dom. 8ccb12a
  • 🌟 Add IsMutable for FieldInfo. (closes #177) 9798204
  • ✨ Add support for bitfields. (closes #212) 8c82517
  • πŸ’« Add ConstexprKind and isConstinit to VariableInfo. (closes #325, closes #205) a864552
  • 🌟 Add isThreadLocal to VariableInfo. b1a5896
  • ✨ Add isInline and isAnonymous to NamespaceInfo. (closes #199) c85c48e
  • πŸ’« DomCorpus. 345358d
  • 🌟 Classify functions by kind. 5aa45a6
  • ✨ Info name improvements. (closes #352) a3389a2
  • πŸ’« Diagnostics. 668e4e9
  • 🌟 Array::emplace_back. e92e988
  • ✨ Dom::String. (fix #361, fix #372) 735ef37
  • πŸ’« Use std::unordered_set<std::unique_ptr> during AST traversal. 8a376f2
  • 🌟 Tests have configs. c59ef02
  • ✨ C++ Handlebars library. 81a5b88
  • πŸ’« Improved reporting with levels. 9a64659
  • 🌟 --report switch. 843f5a2
  • ✨ Info reporting in test runner. caf0347
  • πŸ’« Improved declaration resolution. e4947d8
  • 🌟 TArg stores types. c0fd3fc
  • ✨ Improved clang and llvm natvis. cb7d069
  • πŸ’« HTML generator. a57def6
  • 🌟 Add Info::Implicit flag. 2a21b06
  • ✨ Dom::Function and major refactor. a45679c
  • πŸ’« Duktape uses native dom. a3d6bbd
  • 🌟 Whitespace control specs. 7e5250e
  • ✨ Partials specs. 5a0409a
  • πŸ’« Block specs. 95210f8
  • 🌟 Subexpression specs. f3e6861
  • ✨ Builtin specs. 7510558
  • πŸ’« Private data specs. c1223af
  • 🌟 Helpers specs. 8f674d5
  • ✨ Track-ids specs. 517d4d4
  • πŸ’« Strict specs. deaa47c
  • 🌟 Util specs. d10a921
  • ✨ Mustache specs. f63df18
  • πŸ’« Safe names. 3aecfc0
  • 🌟 Support dom::Function. 93a1bf9
  • ✨ Handlebars error handling. 2e554c8
  • πŸ’« Symbol filtering. 090db2a
  • 🌟 Dependency extraction improvements. c3a18a5
  • ✨ ExtractOptions. 7a1e1dd
  • πŸ’« Minimal safenames. 7360cd4
  • 🌟 Support basic filtering of inaccessible members. 66ba585
  • ✨ Add find/index_of container helpers. c6ccde2
  • πŸ’« Find helper supports strings, arrays, and objects. 60d79ff
  • 🌟 Symbol name lookup. 9141ad1
  • ✨ Add EnumeratorInfo and FriendInfo. 22ac9ec
  • πŸ’« Overload sets. bbc08f1
  • 🌟 C++/JS proxy functions.1 58e4cec
  • ✨ Configurable extraction of inaccessible bases. a77752e
  • πŸ’« C++/JS proxy objects. 339f7da
  • 🌟 Tranches & overload sets for namespaces. a7a7330
  • ✨ C++/JS proxy arrays. 5230768
  • πŸ’« Complete JavaScript helpers support.2 1a1b510
  • 🌟 Template context includes config. 186db21
  • ✨ BaseURL config option. 86609ec

πŸ› Fixes

Bug fixes and error corrections

  • Linux build. fab205d
  • Added addons folder copy. ea602c2
  • Runtime errors. (close #284, close #285) 90668f3
  • Fix Source/Error.hpp include. 8bf0395
  • Missing Field in visit. 4c2f8c5
  • Missing info kind tags. be131f1
  • Mrdox.cmake. 03bcc0a
  • Add CMakePresets.json to gitignore. 8a0bb97
  • Add back brief-1.cpp. 9fe16c8
  • Invert Value::getBool. bb6a6d3
  • Constexpr. 181ac6b
  • CI warnings. 5c7120b
  • Don't lookup bases that use SymbolID::zero. bf5ffde
  • Source_location. 262846a
  • Expressions of different signedness are casted. 66b3d3b
  • No reference temporaries. 353fe98
  • Lua ignored warnings include GCC. 828560c
  • Change FieldFlags::isNodiscard to FieldFlags::isMaybeUnused. db42b86
  • DomCorpus warning. 4db0c96
  • Hack to make test pass regardless of line endings. 45d69f7
  • Invalid assert in parseJavadoc. 09854bc
  • Doc::Overview. f8e72bb
  • Concurrency is a command line argument. (fix #392) 3e5f660
  • Fixup clang natvis. fda33b1
  • Inverse blocks with no helpers expand expressions. 68491d0
  • Single-thread pool. a55a87c
  • Info::Namespace uses SymbolID::zero for global namespace. cbc7d55
  • Handle substituted template parameter types. d2990a8
  • Fallback to TemplateName::print for qualified template names. 80f9eae
  • Multipage links work in adoc. 9914bbb
  • Make_format_args requires lvalue references. 53273a0
  • Asciidoc demos. fa02ec5
  • Safename disambiguation. a2e033b
  • Workaround for msvc 14.5 bug. 0448745
  • Global namespace safename. 2bd8576
  • Remove expression trim.3 bf64028
  • [object Object] shown in adoc output. bb41cf0
  • Create generator output directory if it doesn't exist. 581bc90
  • Adoc shows declarations and definitions. bb96013
  • Qualified lookup for transparent contexts. 2b5c5c8
  • Compute pseudo-access for friends. 3401014
  • GetInstantiatedFrom returns templated declaration for templates. 1579d95
  • Use string_view data. 71dd9f5
  • Tranche partial requires no whitespace. 7d689c9
  • Report handlebars errors from Builder. cf2d10a
  • AccessKind::None is zero. 633a686

♻️ Refactor

Code refactoring and restructuring

  • Move source files to src. 04f75dd
  • MrDox uses C++ handlebars.4 63ac382
  • Store dom::String as a single pointer. (closes #413) ba19bdf
  • Project name is mrdocs. (🚨 BREAKING) 12c027f
  • Rename format option to generate and move it to the config. bfe1ae3
  • Promote adoc section levels. a7afbe1
  • Group namespace members by kind. 76998f4
  • Invert source and synopsis. 7c1f0ea
  • Namespace members are sorted. d788ed8
  • Source partial refers to headers. 6e00120
  • Replicate function and record sections. a0c9d1d
  • Tool uses Expected. 3e1c279
  • Template headers link to repo. 866f727

πŸ“– Documentation

Documentation updates and improvements

  • Antora setup. 744eaee
  • SafeString javadoc. (fix #388) 2f9fe70
  • Installation instructions are relative to enclosing directory. 3491224
  • Antora playbooks refer to mrdocs repo.5 4e59401
  • LLVM version is 29b20829.6 (fix #462) 6c6d641
  • JavaScript.hpp javadoc. da84105
  • JavaScript capitalization is consistent. ef24d66

πŸ“¦οΈ Build

Build system and configuration changes

πŸ§ͺ Tests

Test cases and testing-related changes

  • Integrate handlebars and boost.url test suite.10 (fix #390, #384) e14fe08
  • Handlebars basic spec. 74fd1f3
  • Improve decomposer integral comparison operators. 831a691
  • Clang::mrdox::dom unit tests. cc9e397
  • JavaScript unit tests.11 d5b7b3d

🚦 Continuous Integration

Changes related to continuous integration

πŸ—οΈ Chores

Routine tasks, maintenance, and housekeeping

  • Tidy up include guard names. 1c398cb
  • Error is in Support. f3a848e
  • Refactor error handling and reporting. b81ac4a
  • Config has workingDir. f3694e3
  • Absolute compilation database. d226f3a
  • Add Execution. 21b6df1
  • Add parallelFor. 8460e1f
  • ParallelFor tidy. 028a460
  • Path public API work. 8c5c0fc
  • Use new path routines. 5ccf929
  • Fix absolute path algorithms. 9c0f220
  • ThreadPool. e396dbf
  • Only 1 each of msvc, clang, gcc CI targets. bdc9864
  • Refactor thread facilities. 9121bef
  • Config uses ThreadPool. c740a9a
  • Tidy up config construction. 993bfa1
  • NamespaceInfo member refs are just symbol IDs. 3205784
  • RecordInfo member refs are just symbol IDs. 1b6bb13
  • Executor group. 5915bef
  • No source files in source/. d1a37ee
  • Refactor thread support sources. f19a27a
  • Tidy up command line arguments. 5c90ac2
  • Support fixes. 8ce8894
  • Add traverse and visit. 85b20d4
  • JS array objects. 9dcc342
  • Refactor Javadoc. 6600fe7
  • Reverse compare direction in diffs for failed tests. d9ad26f
  • Rename VarInfo to VariableInfo. 711baf4
  • Rename SymbolInfo to SourceInfo, move Location into Source.hpp. 77729b0
  • Debug and error streams are unbuffered. 5b92bfb
  • Remove llvm/clang includes from public headers. 0264f5e
  • Remove debug_outs. a31ae91
  • Relative paths during visit. 971dcd1
  • Corpus visit fix. 0e960f2
  • Better bitcoding for doc nodes. 87d0752
  • Asserts for ExecutorGroup. 68ccbfe
  • Fix data race in executor group. d49dcb1
  • Define FMT_CONSTEVAL. e89a07a
  • Error is an exception. 5d78642
  • Refactor ExecutorGroup. 65b5279
  • ExecutorGroup returns errors. a09e7af
  • ThreadPool returns errors. b7e2443
  • Visitor helpers are not anonymous. e4ab713
  • Add OptionalLocation. (fix #316) 23b8911
  • Normalize outputPath. 6c436c2
  • Dom work. 395be0f
  • Source symbols are exported. f7aaad9
  • Adoc multipage visitor. 118c1b7
  • Tidy up Pointer. 1d4a429
  • Empty dom Array, Object. ef5af06
  • Dom and asciidoc work. 75cd2dd
  • Generate symbol IDs for type by looking through pointers/references etc. 072f43c
  • BaseInfo stores type using TypeInfo. c2abb69
  • Move TagTypeKind conversion to ASTVisitorHelpers. 7246747
  • Add toString for InfoKind and RecordKeyKind. e0a82fb
  • Dom::create spelling. 2e4b285
  • DefaultAccess for bases. 88146bd
  • Enum and adoc template work. 246cd12
  • Dom for fields. ad536a0
  • Dom for variables. a07082a
  • Data is fields. 9744bf6
  • Make ASTVisitor::traverse overloads easier to find. 13d2513
  • Refactor DomTemplate. cbd7c14
  • Tidy. fbb8f09
  • Function specifiers in the dom are flat. 917d2cb
  • Flatten source dirs. 2e9e713
  • Value::copy. efe3d17
  • Dom tidy. 31c99f4
  • Refactor Error. 1d22799
  • Tidy include guards. a97f568 1f9bf64
  • Error improvement and tidy. 740569c
  • Dom diagnostics and tidy. f1f8ee0
  • Javascript fixes. 9634364
  • Disabled version header generation. 4174ba5
  • Mrdox.rng generation uses .rnc as dependency. 5e9e1d2
  • SharedPtr api. 0ce939f
  • Xml generator support for new types + cleanup. d1c44c4
  • Update schema. 648699d
  • Cleanup. d15a3e5
  • JavaScript uses Proxy. 609b5da
  • MakeInterface does not share. a7024b8
  • Visit replaces Visitor. c98b4de
  • Rename EnumInfo::BaseType to UnderlyingType, TypedefInfo::Underlying to Type. a121fb4
  • StringLiteral. f523dd3
  • Std::shared_ptr is standard. a9db251
  • Generators render javadocs. 535aef1
  • Refactor dom Object and JavaScript. 365f798
  • Update rnc schema. d6f37a6
  • Expected is in Error.hpp. (fix #362) 31c366e
  • Add Exception. 39b0e52
  • Use Exception. 7373604
  • Use mrdox::ToolExecutor. f5db91d
  • ToolExecutor uses Config. d1b0340
  • ToolExecutor refactoring. 4fb586d
  • Clean up catch sites. 22ea97a
  • Reporting is in Error.hpp. (close #363, fix #365) 1eda403
  • Diagnostics for warnings and errors. 2226e3c
  • Squelch diagnostic totals per config. ecf237e
  • Javadoc::makeOverview. f53619d
  • Javadoc preserves order. e29bd89
  • Array, Object special members. ca3fda4
  • Refactor project structure. bd8b0e0
  • Remove duplicate cmake code. fc51870
  • Simplified glob expressions. 0158830
  • Config::Settings. b39afbd
  • New config from base config. 19f25ef
  • Separate ASTVisitor from SemaConsumer. 1b80f11
  • Merge FrontendAction.cpp with ASTVisitor.cpp. 8cfd15d
  • Add clang natvis, update llvm natvis. 123a575
  • Natvis renders SymbolIDs. 0365b23
  • Refactor error reporting. 4d12651
  • Refactor reporting call sites. d3fd9e6
  • Diagnostics in parseJavadoc. dd79d58
  • Length for dom::String literals. 04fc1dd
  • Add test Doxyfile. 6c6a621
  • Tidy up config settings. 6a0a540
  • Tidy up unhandled exceptions. 2b8a861
  • Update llvm and clang natvis. ce7844f
  • Refactor TParam. (closes #223) 2cc093d
  • Add TParamKeyKind, use TArg to store default template arguments. (closes #196) 21ec7ae
  • Tidy up test source structure. 4f6ca64
  • Remove unused code in ASTVisitor. 48ecec8
  • Implement FrontendAction::ExecuteAction & call ParseAST directly. 5fa524d
  • Tidy up test source tree. 534e3bb
  • Run all suites. 8a232b1
  • Rename some report functions. 96e7c9a
  • Factor out llvm ostreams. da279c1
  • Fewer falsy properties. 47b0c01
  • Javadoc work. 0df0e02
  • Better assertions. d921878
  • Adoc generator improvements. 055fac3
  • Files::createDirectory. 193e060
  • Adoc uses safe names by default. 7382609
  • Cleanup ToolExecutor and ExecutionContext. 7e112c3
  • Eliminate ToolExecutor, replace Corpus::index with iterator access, add ExecutionContext which skips bitcode. 01835f4
  • Bitcode cleanup. 221d69a
  • Natvis improvements. dddfeed 1509e20
  • Remove PackTypeInfo. 8dcf6b3
  • Cleanups. e5b8d31
  • Extract dependencies after primary AST traversal. 143c947
  • Update llvm version. 7f3d4ae
  • Make extract options private. 3a223ab
  • Docs for dependency extraction options. 0673c9b
  • Delete old demos before upload. 036f501
  • Hide inaccessible members in demos. d7c0c4e
  • Adoc and html generators use native handlebars helpers. 634ea5d
  • Improve asciidoc templates. 17d5da6
  • Move safename enable logic into SafeNames. 2d3aa0b
  • SymbolID zero is invalid. df33bd6
  • Remove OptionalSymbolID. 573fc11
  • Update tests. 5ffc7de 954f69f
  • ASTVisitor cleanup. 592e196
  • Add DecltypeTypeInfo. 1b486b7
  • Improved file paths. 8788300
  • Indicate whether declaration location had documentation. 7086f2c
  • Merge function parameters. 3ca3356
  • Refer to global namespace as such in asciidoc templates. 6f0fdf7
  • Support partials in subdirectories. a9b6774
  • Move generators to src/lib/Gen. c777320
  • Fix Wparentheses warning. 4ae56c0
  • Adoc template improvements. 57238d7
  • Remove handlebars.js.12 b8b6880
  • Sort members alphabetically. 0b04f75

πŸ’¬ Other

Other changes not covered by specific categories

  1. Define JS proxy types for functions to allow complete interoperability between C++ and JS functions.When accessing a JS function in C++, the dom::Function contains a reference to the Scope variable with the JS function. The JS execution context will evaluate this function in JS and convert the result back to dom::Value.When accessing a C++ function in JS, the JS object will contain a hidden buffer to store a copy of the original dom::Function. When JS executes the function, it will get the original dom::Function from this hidden buffer, convert all arguments to dom::Value, call the original dom::Function, and push the dom::Value result to the stack. When the function is garbage collected, the object finalization callback destroys the function stored in the buffer. ↩

  2. This commit uses proxy objects to offer complete support for JavaScript helpers that return reference types. Previously, JavaScript reference types returned by these functions were deep-copied or not handled at all. Now, proxy objects in both directions are used while helpers create a scope that's kept alive as long as necessary by the Handlebars engine.As the objects don't need to be deep copied, this change improves performance and allows objects with circular references, which are common in MrDocs. Additionally, JavaScript helpers receive a proxy object equivalent to the handlebars options object, and helper function registration was also simplified and improved to remove redundant code.This commit provides new test cases to validate the current code without counting on MrDocs. ↩

  3. The unnecessary trim_spaces(expression) was removed from Handlebars.cpp as it's not required in the current context and could potentially remove intentional characters from literal string. ↩

  4. This PR refactors the generators to use the C++ implementation of handlebars. Javascript helpers are loaded with duktape. ↩

  5. The previously had to still refer to the mrdox repository. ↩

  6. The old instructions referred to 731264b0 version of LLVM. The binaries on the website provided for users were updated to 29b20829 and the install instructions were updated to reflect the preset examples. ↩

  7. LLVM unfortunately defines global compile flags that are inherited by all other targets in the project, including fetched dependencies. Warning flags, with are functionally unnecessary, can cause conflicts with other targets. ↩

  8. Variable-based paths make results more replicable by users. This commit also sets the preset version to 3, as it's the highest version supported by the build process, which relies on CMake 3.22 from Ubuntu 22.04. ↩

  9. This commit changes the Duktape setup to use the CMake find_package command to locate and configure the Duktape library. Direct access to source files through DUKTAPE_SOURCE_ROOT has been removed in order to respond to Duktape providing its own CMake integration scripts via vcpkg.Additionally, installation instructions for Duktape and references to DUKTAPE_SOURCE_ROOT have been removed from relevant files and examples. Instead, the Duktape dependency is now managed by vcpkg in CI. This simplifies the setup of the development environment. ↩

  10. This change integrates the test suite library developed for handlebars with the test suite library from boost.url that is being used for other tests.With this integration, Handlebars tests are listed among any other tests in the library.The features used for handlebars, such as the expression decomposer and the diff algorithm for golden master tests, have been integrated into the test library from Boost.URL. ↩

  11. Implements unit tests for the Javascript bindings based on duktape. All errors found are fixed in the same commit.This commit also includes the complete implementation for classes that were only placeholders, including conversions to dom::Value and related wrapper classes for objects, arrays, and functions.The changes are only related to bindings from Javascript to C++. Bindings from C++ to Javascript will be addressed in a later commit. ↩

  12. Removed handlebars since the project has completely transitioned to C++ handlebars. ↩

  13. That makes it work with preinstalled clang libs on fedora 37. ↩

  14. Always canonicalize on the ID. This is simple,fast, and always correct. We do it always, whenthe corpus is built. ↩

  15. And a big refactor of ASTVisitor. ↩

  16. Close 132, close 136. ↩

  17. This reverts commit 0458f28. ↩

  18. Add --config Release to the build command. ↩