diff --git a/.clang-tidy b/.clang-tidy deleted file mode 100644 index 57b9c31f0..000000000 --- a/.clang-tidy +++ /dev/null @@ -1 +0,0 @@ -Checks: 'performance-*, modernize-*, misc-*, -misc-definitions-in-headers, -misc-non-private-member-variables-in-classes, -misc-no-recursion, -misc-include-cleaner, -misc-use-anonymous-namespace, -modernize-use-trailing-return-type, -modernize-use-nodiscard, -modernize-use-emplace, -modernize-loop-convert, -modernize-pass-by-value, -modernize-use-equals-delete, -modernize-use-equals-default, -modernize-use-override, -modernize-avoid-c-arrays, -modernize-raw-string-literal, -modernize-concat-nested-namespaces, -performance-inefficient-string-concatenation' diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 400ec131e..000000000 --- a/.gitattributes +++ /dev/null @@ -1,5 +0,0 @@ -* text=auto - -# Text files to always be normalized and converted to native line endings on checkout -*.output text -*.execution text diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index b94a5569a..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: "[BUG] " -labels: bug -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Sample code - distilled down to minimal essentials please -2. Command lines including which C++ compiler you are using -2. Expected result - what you expected to happen -3. Actual result/error - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/suggestion.md b/.github/ISSUE_TEMPLATE/suggestion.md deleted file mode 100644 index 11c92992d..000000000 --- a/.github/ISSUE_TEMPLATE/suggestion.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Suggestion -about: Suggest an idea for this project -title: "[SUGGESTION] " -labels: suggestion -assignees: '' - ---- - -**DISCLAIMERS TO SET EXPECTATIONS:** I'm generally against language feature requests/changes unless they can be shown to improve simplicity, safety, or toolability in a quantifiable way. So: -- _Please limit suggestions to quantifiable improvements to C++ simplicity, safety, or toolability._ Quantifiable means that there is some kind of measurable data that helps motivate the change and measure success. Two of the big ones that will get my attention are eliminating vulnerabilities and eliminating guidance, so use those below please. -- _Please do not suggest syntax changes._ I accept there are hundreds of opinions and everyone will prefer something a little different. Syntax isn't the big thing, fixing semantics is -- reducing concept count, increasing toolability, are the big payoff. -- _Please do not suggest things that amount to personal taste._ I accept there are hundreds of personal tastes and everyone will prefer something a little different. For example, established stakes in the ground include that this declaration syntax is going to be left-to-right, and it's going to use `:` for every declaration and only for declarations. - -**Will your feature suggestion eliminate X% of security vulnerabilities of a given kind in current C++ code?** If yes, please be specific about the classes of bugs that would go away, with an example or two (especially a link to a real CVE or two). - -**Will your feature suggestion _automate or eliminate_ X% of current C++ guidance literature?** If yes, please be specific about what current good guidance this helps make the default, and/or what guidelines we would no longer need to teach/learn or that would be simplified and how, with an example or two (especially a link to a real "Effective C++" or "C++ Core Guidelines" guideline or two). For ideas, you can refer to [my CppCon 2020 talk starting at 10:31](https://youtu.be/6lurOCdaj0Y?t=631) where I summarize a categorized breakdown based on over 600 C++ guidance literature rules I cataloged and analyzed. - -**Describe alternatives you've considered.** -There's nearly always more than one way to improve something. What other options did you consider? Why is the one you're suggesting better than those? diff --git a/.github/workflows/build-cppfront.yaml b/.github/workflows/build-cppfront.yaml deleted file mode 100644 index be4f9045f..000000000 --- a/.github/workflows/build-cppfront.yaml +++ /dev/null @@ -1,86 +0,0 @@ -name: Multi-platform Build of cppfront - -on: - pull_request: - paths-ignore: - - 'docs/**' - push: - paths-ignore: - - 'docs/**' - workflow_dispatch: - -permissions: - # Restrict permissions to read-only for security - contents: read - -concurrency: - # Specific group name to cancel in-progress builds for the same PR/ref - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - # Comment out the Windows build until it is fixed - # build-windows: - # runs-on: windows-latest - # steps: - # - uses: actions/checkout@v4 - # - uses: ilammy/msvc-dev-cmd@v1 - # - name: Compiler name & version - # run: cl.exe - # - name: Build - # run: cl.exe source/cppfront.cpp -std:c++latest -MD -EHsc -W4 -WX - - build-unix-like: - strategy: - fail-fast: false - matrix: - runs-on: [ubuntu-22.04] - compiler: [g++-10, g++-11, g++-12, clang++-12, clang++-14] - cxx-std: ['c++20', 'c++2b'] - exclude: - # GCC 10 doesn't have support for c++23 - - compiler: g++-10 - cxx-std: 'c++2b' - # Clang 12 and 14 do not compile on 'c++2b' due to llvm/llvm-project#58206 - - compiler: clang++-12 - cxx-std: 'c++2b' - - compiler: clang++-14 - cxx-std: 'c++2b' - include: - - runs-on: macos-14 - compiler: clang++ - cxx-std: 'c++20' - - runs-on: macos-15 - compiler: clang++ - cxx-std: 'c++20' - - runs-on: ubuntu-22.04 - compiler: clang++-15 - cxx-std: 'c++20' - - runs-on: ubuntu-24.04 - compiler: clang++-16 - cxx-std: 'c++20' - - runs-on: ubuntu-24.04 - compiler: clang++-17 - cxx-std: 'c++20' - - runs-on: ubuntu-24.04 - compiler: clang++-18 - cxx-std: 'c++20' - - runs-on: ubuntu-24.04 - compiler: clang++-18 - cxx-std: 'c++23' - - runs-on: ubuntu-24.04 - compiler: g++-14 - cxx-std: 'c++2b' - runs-on: ${{ matrix.runs-on }} - env: - CXX: ${{ matrix.compiler }} - CXXFLAGS: -std=${{ matrix.cxx-std }} -Wall -Wextra -Wold-style-cast -Wunused-parameter -Wpedantic -Werror -pthread -Wno-unknown-warning -Wno-unknown-warning-option - steps: - - uses: actions/checkout@v4 - - name: Install compiler - if: startsWith(matrix.runs-on, 'ubuntu') - run: sudo apt-get install -y $CXX - - name: Compiler name & version - run: $CXX --version - - name: Build - run: $CXX source/cppfront.cpp $CXXFLAGS -o cppfront diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 7dd2f48a9..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: docs -on: - push: - branches: - - main -permissions: - contents: write -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: 3.x - - uses: actions/cache@v4 - with: - key: ${{ github.ref }} - path: .cache - - run: pip install mkdocs-material - - run: mkdocs gh-deploy --force \ No newline at end of file diff --git a/.github/workflows/regression-tests.yaml b/.github/workflows/regression-tests.yaml deleted file mode 100644 index 45a114854..000000000 --- a/.github/workflows/regression-tests.yaml +++ /dev/null @@ -1,136 +0,0 @@ -name: Regression tests - -on: - pull_request: - paths-ignore: - - 'docs/**' - push: - paths-ignore: - - 'docs/**' - workflow_dispatch: - -permissions: - # Restrict permissions to read-only for security - contents: read - -concurrency: - # Specific group name to cancel in-progress builds for the same PR/ref - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - regression-tests: - name: ${{ matrix.shortosname }} | ${{ matrix.compiler }} | ${{ matrix.cxx_std }} | ${{ matrix.stdlib }} | ${{ matrix.os }} - runs-on: ${{ matrix.os }} - env: - CXX: ${{ matrix.compiler }} - - strategy: - fail-fast: false - matrix: - os: [ubuntu-24.04] - shortosname: [ubu-24] - compiler: [g++-14, g++-13] - cxx_std: [c++2b] - stdlib: [libstdc++] - include: - - os: ubuntu-24.04 - shortosname: ubu-24 - compiler: clang++-19 - cxx_std: c++20 - stdlib: libstdc++ - - os: ubuntu-24.04 - shortosname: ubu-24 - compiler: clang++-19 - cxx_std: c++23 - stdlib: libc++-18-dev - - os: ubuntu-22.04 - shortosname: ubu-22 - compiler: clang++-15 - cxx_std: c++20 - stdlib: libstdc++ - - os: ubuntu-22.04 - shortosname: ubu-22 - compiler: clang++-15 - cxx_std: c++20 - stdlib: libc++-15-dev - - os: macos-14 - shortosname: mac-14 - compiler: clang++ - cxx_std: c++2b - stdlib: default - # Comment out Windows tests until build on Windows is fixed - # - os: windows-2025 - # shortosname: win-25 - # compiler: cl.exe - # cxx_std: c++latest - # stdlib: default - # - os: windows-2025 - # shortosname: win-25 - # compiler: cl.exe - # cxx_std: c++20 - # stdlib: default - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - - name: Prepare compilers - macOS - if: matrix.os == 'macos-13' - run: | - sudo xcode-select --switch /Applications/Xcode_14.3.1.app - sudo ln -s "$(brew --prefix llvm@15)/bin/clang" /usr/local/bin/clang++-15 - - - name: Prepare compilers - Ubuntu 24.04 - if: matrix.os == 'ubuntu-24.04' - run: | - sudo sudo apt-get install clang-19 - - - name: Run regression tests - Linux and macOS version - if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos') - run: | - cd regression-tests - bash run-tests.sh -c ${{ matrix.compiler }} -s ${{ matrix.cxx_std }} -d ${{ matrix.stdlib }} -l ${{ matrix.os }} - - - name: Run regression tests - Windows version - if: startsWith(matrix.os, 'windows') - run: | - "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && ^ - git config --local core.autocrlf false && ^ - cd regression-tests && ^ - bash run-tests.sh -c ${{ matrix.compiler }} -s ${{ matrix.cxx_std }} -d ${{ matrix.stdlib }} -l ${{ matrix.os }} - shell: cmd - - - name: Upload patch - if: success() || failure() - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.os }}-${{ matrix.compiler }}-${{ matrix.cxx_std }}-${{ matrix.stdlib }}.patch - path: regression-tests/${{ matrix.os }}-${{ matrix.compiler }}-${{ matrix.cxx_std }}-${{ matrix.stdlib }}.patch - if-no-files-found: ignore - - aggregate-results: - needs: regression-tests - if: success() || failure() - runs-on: ubuntu-latest - steps: - - name: Download all patches - uses: actions/download-artifact@v4 - with: - path: downloaded-results - - - name: Prepare result files - id: prepare_files - run: | - mkdir aggregated-results - echo "Flattening file hierarchy" - find . -type f -wholename "./downloaded-results*" -exec mv {} aggregated-results \; - patch_count=$(ls aggregated-results 2>/dev/null | wc -l) - echo "patch_count=${patch_count}" >> $GITHUB_OUTPUT - - - name: Upload aggregated results - if: steps.prepare_files.outputs.patch_count != '0' - uses: actions/upload-artifact@v4 - with: - name: aggregated-results - path: aggregated-results - if-no-files-found: ignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 4ed68fa53..000000000 --- a/.gitignore +++ /dev/null @@ -1,48 +0,0 @@ - -*.vcxproj -*.filters -*.recipe -*.user -*.ilk -*.log -*.enc -*.tlog -*.idb -*.obj -*.ifc -*.pdb -*.suo -*.db -*.ipch -*.sln -*.txt -*.db-shm -*.db-wal -*.opendb -*.vsidx -*.lock -.editorconfig -*.xml -*.sarif -*.bin -*.exe -source/gen_version.bat -build*/ -venv/* -*.ifc - -# Visual Studio cache directory -.vs/ - -# VSCode workspace directory -.vscode/ -buildh2.bat -gen_version.bat -mkdocs_serve.sh -experimental/a.out -cppfront/x64/Debug/microsoft/STL/std.compat.ixx.ifc.dt.d.json -cppfront/x64/Debug/microsoft/STL/std.compat.ixx.ifc.dt.module.json -cppfront/x64/Debug/microsoft/STL/std.compat.ixx.ifc.dt.module.json.command -cppfront/x64/Debug/microsoft/STL/std.ixx.ifc.dt.d.json -cppfront/x64/Debug/microsoft/STL/std.ixx.ifc.dt.module.json -cppfront/x64/Debug/microsoft/STL/std.ixx.ifc.dt.module.json.command diff --git a/regression-tests/test-results/cpp2_post_build.sh b/.nojekyll similarity index 100% rename from regression-tests/test-results/cpp2_post_build.sh rename to .nojekyll diff --git a/404.html b/404.html new file mode 100644 index 000000000..32a1ccd89 --- /dev/null +++ b/404.html @@ -0,0 +1,1002 @@ + + + +
+ + + + + + + + + + + + + + + + + +0&&i[i.length-1])&&(p[0]===6||p[0]===2)){r=0;continue}if(p[0]===3&&(!i||p[1]>i[0]&&p[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function K(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],s;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(s)throw s.error}}return i}function B(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o