GithubHelp home page GithubHelp logo

arewemodulesyet's Introduction

Are we modules yet? Not even close, lol.

This website will track the most popular C++ libraries, compilers and build systems. We use vcpkg to get a rough idea on how popular a library is via how many revisions the port has. For more information, checkout the python script that parses the data: generate_vcpkg_usage_stats.py.

Legend for progress_overwrite.yml

Example port

ports: 
- name: fmt
  # Can be different from lib name. For example vulkan-cpp uses vulkan_cpp!
  import_statement: fmt
  # Date since when the lib has modules support. Used for extrapolating finish date
  modules_support_date: 2024/5/22 
  status: 
  help_wanted: 
  current_min_cpp_version: 11
  # These are often multiple issues, but always try to link the main issue
  tracking_issue: "https://github.com/fmtlib/fmt/pull/3134"

Note that most projects do not even have an issue for tracking modules support. If so you would have to create one, so we can track it here.

status

  • ❔ Default: No set. Help wanted for every lib that has this status!
  • ✅ Full support
  • ⚙️ Worked on
  • ⚠️ Reported
  • ❌ Corresponding tracking issue was closed and no planned support anytime soon.
  • 💀 Needs support old library/compiler/build tool to even start adding support for modules.
  • 🤡 Maintainer does want to keep it oldschool. No plan to update anytime soon.

help_wanted

  • ✅ Yes
  • ❌ No
  • 💀 Does not allow outside contributions

Dependencies

  1. Hugo
  2. Python3 and the pip dependencies below.
  3. Optional: Latest vcpkg
# Install python dependencies
pip install pyyaml gitpython termcolor
# Start local hugo
hugo serve
# Update your progress_overwrite.yml and genererate progress.yml
# hugo will then automatically refresh
python.exe .\generate_vcpkg_usage_stats.py --merge

Optionally rengerate raw_progress.yml

python.exe generate_vcpkg_usage_stats.py --repo_path=C:\vcpkg

Website structure

- /data
    - raw_progress.yml          # Raw parsed vcpkg list
    - progress_overwrite.yml    # Additional infos added by hand like status, progress
    - progress.yml              # Merged result that is displayed on the website
- /layouts/partials/
    - progress-module.html      # Diagram and table for the home page
- /content/
    - tools.md                  # Tools site
    - documents.md              # Documents site
    - examples.md               # Examples site

arewemodulesyet's People

Contributors

kelteseth avatar chuanqixu9 avatar aminya avatar klaim avatar stripe2933 avatar dzenanz avatar arthapz avatar mathstuf avatar coryan avatar steeleduncan avatar gracicot avatar abbapoh avatar redstrate avatar tchaikov avatar spnda avatar

Stargazers

Melg Eight avatar  avatar n0099 avatar Tianlan Zhou avatar Totto avatar Hugo Maingonnat avatar Noah avatar  avatar  avatar Alexander Ryabykin avatar Stephen Berry avatar Suraj avatar sokolik avatar Andy Lee avatar astrotycoon avatar Alex avatar Sleepy Monax avatar huntergdavis avatar Jan Niklas Hasse avatar David Lakin avatar nerix avatar Jeremiah Rodriguez avatar Ray Manaloto avatar  avatar Alejandro Exojo avatar William Roy avatar Alex Fanat avatar Cristian Adam avatar

Watchers

 avatar Nils Gladitz avatar Suraj avatar Ray Manaloto avatar

arewemodulesyet's Issues

Add Zork++ to the build systems

Hello there. I am the maintainer of Zork++

We've been supporting building C++ modules for more than a year now, so I thought that it will be interesting to add our project to the tracked ones in your list.

Would that be fine? Should we meet some special criteria before join such list?

Thanks for your time.

Add tools status page

  • Compiler Support

    • MSVC 2022
    • Clang
    • Apple Clang
    • GCC
  • Build Tools

    • CMake
    • Ninja
    • Build2
    • Scons
    • Bazel
    • Meson
    • Gnu Make
    • Gradle
  • Pre processor

    • Qt moc

Get rid of progress.yml from the repo

It is error-prone that people have to update progress_overwrite.yml and progress.yml to update the change to the website. The process is somehow not easy even if there is a python script. It may be better to call the python script automatically when we deploy the website.

Should we add a support level to the list?

When looking at the comments of this PR, we can see that even using a none modules project as a dependency can make problems in a modules project. My proposal:

  1. LibraryX can be used in a modules project
  2. LibraryX itself is a modules project
  3. All of LibraryX dependencies are modules
  4. LibraryX uses C++23 import std;
  5. All of LibraryX dependencies are using C++23 import std;

Meson does not have modules yet

An issue used to mark that module support is done is closed regarding another issue: mesonbuild/meson#5024.

The issue used for module support indication is outdated and should not be used to indicate modules feature support in that tool, and the one mentioned above should be used instead.

Typos on website

  • "💀 Needs support old library/compiler/build tool to even start adding support for odules." (should be "support for modules")

  • "Tacking issue" (should be Tracking Issue) in the main table header

some more projects provide modules

async_simple's module module: https://github.com/alibaba/async_simple/blob/main/modules/async_simple.cppm

seastar's module: https://github.com/scylladb/seastar/blob/master/src/seastar.cc#L150

Both of the libraries are not on the list : (. So it might be better to use other properties (like github stars?) than vcpkg.

Also there is a project (not library as far as I know) inifinity use modules natively (we can get the usages at a random file under 'src', e,g., https://github.com/infiniflow/infinity/blob/main/src/network/buffer_writer.cppm). While it is not a library, I think it is a good example to give people more confidence.

And there is a high quality toy project using modules: https://github.com/davidstone/technical-machine, which is module native too.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.