{"id":23853664,"url":"https://github.com/bobsteagall/wg21","last_synced_at":"2025-06-21T06:06:21.418Z","repository":{"id":47149712,"uuid":"169437259","full_name":"BobSteagall/wg21","owner":"BobSteagall","description":"Various documents and code related to proposals for WG21","archived":false,"fork":false,"pushed_at":"2024-08-05T15:05:54.000Z","size":4797,"stargazers_count":66,"open_issues_count":13,"forks_count":11,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-04-27T05:38:45.033Z","etag":null,"topics":["cplusplus","cplusplus-20","cplusplus-23"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"ncsa","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BobSteagall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-06T16:27:59.000Z","updated_at":"2025-04-12T21:01:57.000Z","dependencies_parsed_at":"2024-04-09T10:30:57.052Z","dependency_job_id":"6bcb48ef-9718-4d7d-993e-9524ad0cb3e3","html_url":"https://github.com/BobSteagall/wg21","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/BobSteagall/wg21","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BobSteagall%2Fwg21","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BobSteagall%2Fwg21/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BobSteagall%2Fwg21/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BobSteagall%2Fwg21/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BobSteagall","download_url":"https://codeload.github.com/BobSteagall/wg21/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BobSteagall%2Fwg21/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261073405,"owners_count":23105643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cplusplus","cplusplus-20","cplusplus-23"],"created_at":"2025-01-02T23:18:56.173Z","updated_at":"2025-06-21T06:06:16.408Z","avatar_url":"https://github.com/BobSteagall.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## wg21\n[![CMake Build](https://img.shields.io/github/workflow/status/BobSteagall/wg21/Conan/master?label=CMake)](https://github.com/BobSteagall/wg21/actions?query=workflow%3A%22CMake%22+branch%3Amaster)\n\nWork on revision R7  of linear algebra proposal P1385 is currently underway in the `r7y` branch.  We are targeting C++26.\n\n## Support\n\nThis reference implementation requires several C++20 capabilities which are only available in newer compiler releases.  \n\nCurrent compiler support is as follows, but will change as new compilers become available and catch up with implementing new language features for C++20.  Builds and unit testing have been successful on the following combinations of operating system and compiler:\n\n* Windows 10\n  * Visual Studio 2019, Version 16.5.4 and higher\n\n* Linux (written and tested on RHEL 8.X)\n  * GCC 12.x\n\n## Cloning the Repo\n\nAfter ensuring that git is in your executable path, open a terminal window on Linux, or a Command Prompt on Windows 10, and then:\n\n```bash\ncd \u003crepo_root\u003e\ngit clone --recurse-submodules https://github.com/BobSteagall/wg21.git \u003cproject_root\u003e\n```\n\nIf you do not specify `\u003cproject_root\u003e`, it will default to `wg21`.\n\n## Building with the Visual Studio Solution\n\nOpen the `lin_alg_test.sln` solution file in the `\u003crepo_root\u003e/\u003cproject_root\u003e` directory.  Click **Build..Build Solution** to build the unit test program.  (Note: This build method uses the NuGet package manager to download and install Google Test in the `\u003cproject_root\u003e/packages` directory, so you'll need to ensure NuGet is installed.)\n\n\n## Building Manually Via CMake on Windows 10\n\nThe unit test program can be built via CMake on Windows 10 by proceeding as follows.  First, generate the Visual Studio project files:\n\n```bash\ncd \u003cproject_root\u003e\nmkdir build-win\ncd build-win\ncmake -G \"Visual Studio 16 2019\" ..\n```\n\nNext, build the `Debug` configuration and run the unit test:\n\n```bash\ncmake --build . --config Debug\nctest -C Debug\n```\n\nFinally, build the `Release` configuration and run the unit test:\n\n```bash\ncmake --build . --config Release\nctest -C Release\n```\n\n\u003e Note: CMake uses a multi-configuration generator for Visual Studio, so there is no need to specify a CMake build type;  in fact, CMake will ignore `CMAKE_BUILD_TYPE` when using the Visual Studio generator.  \n\nThe following CMake configuration options are available on Windows:\n\n| Name                     | Possible Values                      | Description                          | Default Value |\n|--------------------------|--------------------------------------|--------------------------------------|---------------|\n| `BUILD_TESTING`          | `ON`, `OFF`                          | Build the test suite                 | `ON`          |\n| `LA_BUILD_USING_PCH`     | `ON`, `OFF`                          | Build using precompiled headers      | `OFF`         |\n\n\n## Building Manually Via CMake on Linux\n\nThe project can be built via CMake on Linux as follows:\n\n```bash\ncd \u003cproject_root\u003e\nmkdir build-dir\ncd build-dir\ncmake [-G \u003cgenerator\u003e] [configuration options] ..\ncmake --build . [--config \u003cbuild_type\u003e]\nctest [--config \u003cbuild_type\u003e]\n```\n\nFor example, to build and test the `Debug` configuration, you could do the following:\n\n```bash\ncd \u003cproject_root\u003e\nmkdir build-debug\ncd build-debug\ncmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Debug ..\ncmake --build .\nctest\n```\n\nLikewise, for the `Release` configuration, you could do this:\n\n```bash\ncd \u003cproject_root\u003e\nmkdir build-release\ncd build-release\ncmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release ..\ncmake --build .\nctest\n```\n\n\u003e Note: CMake uses a single-configuration generator when generating makefiles, so there is no need to use the `--config` flag with CMake or the `-C` flag with CTest.  When using CMake on Linux, a good practice is to create a separate build directory for each CMake build type.\n\nThe following configuration options are available on Linux:\n\n| Name                     | Possible Values                      | Description                          | Default Value |\n|--------------------------|--------------------------------------|--------------------------------------|---------------|\n| `BUILD_TESTING`          | `ON`, `OFF`                          | Build the test suite                 | `ON`          |\n| `CMAKE_BUILD_TYPE`       | `Debug`, `Release`, `RelWithDebInfo` | Build type                           | `Debug`       |\n| `LA_BUILD_USING_PCH`     | `ON`, `OFF`                          | Build using precompiled headers      | `OFF`         |\n| `LA_ENABLE_SANITIZERS`   | `ON`, `OFF`                          | Build with address and UB sanitizers | `OFF`         |\n| `LA_VERBOSE_TEST_OUTPUT` | `ON`, `OFF`                          | Write verbose test results           | `OFF`         |\n\n## Installing Via CMake\n\nInstalling the project can be performed as follows:\n\n```bash\ncd \u003cproject root\u003e\nmkdir build\ncd build\n\ncmake [-G \u003cgenerator\u003e] [configuration options] -DCMAKE_INSTALL_PREFIX=\u003cinstall_dir\u003e ..\ncmake --build . --target install\n```\n\n## Packages\n\nThe Linear Algebra library is available for integration into your own project via our favorite package manager: [Conan](https://docs.conan.io/en/latest/).\n\n### Getting the Conan package\n\nTo add the *linear_algebra* library to your project as a dependency, you need to add a remote to Conan that points to the location of the package:\n\n```bash\npip install conan\nconan remote add linear_algebra https://twonington.jfrog.io/artifactory/api/conan/conan-oss\n```\n\nOnce this is set, you can add the linear_algebra dependency to you project via the following signature:\n\n```bash\nlinear_algebra/0.7.0@conan-oss/testing\n```\n\nAvailable versions of the Linear Algebra package can be search via Conan:\n\n```bash\nconan search linear_algebra\n```\n\n### Building the Conan package\n\nThe linear_algebra project and package can be built locally via the Conan as such:\n\n```bash\ncd \u003cproject_root\u003e\npip install conan\nconan create [conan options] \u003cproject_root\u003e [--test-folder None]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbobsteagall%2Fwg21","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbobsteagall%2Fwg21","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbobsteagall%2Fwg21/lists"}