4 ms·
No. Modules are a failed idea. Really really hard for me to see them becoming mainstream at this point.
by forrestthewoods 7mo ago
No. Modules are a failed idea. Really really hard for me to see them becoming mainstream at this point.
- hrmtst93837 7mo ago[flagged]
- m-schuetz 7mo agoThe idea is great, the execution is terrible. In JS, modules were instantly popular because they were easy to use, added a lot of benefit, and support in browsers and the ecoysystem was fairly good after a couple of years. In C++, support is still bad, 6 years after they were introduced.
- evanmoran 7mo agoExactly. C++ is still waiting for its "uv" moment, so until then modules aren't even close to solved.
- lostdog 7mo agoAnd uv required some ground work, where the PEP process streamlined how you define a python project, and then uv could be built on top.
- creato 7mo agoThe idea is great in the same way the idea of a perpetual motion machine is great: I'd love to have a perpetual motion machine (or C++ modules), but it's just not realistic. IMO, the modules standard should have aimed to only support headers with no inline code (including no templates). That would be a severe limitation, but at least maybe it might have solved the problem posed by protobuf soup (AFAIK the original motivation for modules) and had a chance of being a real thing.
- Xraider72 7mo agoNo idea if modules themselves are failed or no, but if c++ wants to keep fighting for developer mindshare, it must make something resembling modules work and figure out package management. yes you have CPM, vcpkg and conan, but those are not really standard and there is friction involved in getting it work.
- StilesCrisis 7mo agoMuch like contracts--yes, C++ needs something modules-like, but the actual design as standardized is not usable. Once big companies like Google started pulling out of the committee, they lost their connection to reality and now they're standardizing things that either can't be implemented or no one wants as specced.
- pjmlp 7mo agoUsable enough for Office, and the initial proposal was done by Microsoft.
- StilesCrisis 7mo agoI know Microsoft invested a lot into modules development and migrated a few small pieces of Office onto modules, but I'm not sure if they are actually using it extensively, and I'm also not sure if they're actually all that beneficial. Every time I hear about modules, it's stories about a year of migration work for a single-digit build-time improvement.
- forrestthewoods 7mo agoI emphatically agree. C++ needs a standard build system that doesn’t suck ass. Most people would agree it needs a package manager although I think that is actually debatable. Neither of those things require modules as currently defined.
- germandiago 7mo agoThat is not even half realistic. Are you going to port all that code out there (autotools, cmake, scons,meson, bazel, waf...) to a "true" build system? Only the idea is crazy. What Conan does is much more sensible: give s layer independent of the build system (and a way to consume packages and if you want some predefined "profiles" such as debug, etc), leave it half-open for extensions and let existing tools talk with that communication protocol. That is much more realistic and you have way more chances of having a full ecosystem to consume. Also, noone needs to port full build system or move from oerfectly working build systems.
- AyanamiKaine 7mo agoCan you explain why you think modules are a failed idea? Because not that many use them right now? Personally I use them in new projects using XMake and it just works.
- devnullbrain 7mo agoI'm not the PC but I think you miss most of the pain points due to: 'personal' projects. There's not a compatible format between different compilers, or even different versions of the same compiler, or even the same versions of the same compiler with different flags. This seems immediately to create too many permutations of builds for them to be distributable artifacts as we'd use them in other languages. More like a glorified object file cache. So what problem does it even solve?
- nickelpro 7mo agoBMIs are not considered distributable artifacts and were never designed to be. Same as PCHs and clang-modules which preceded them. Redistribution of interface artifacts was not a design goal of C++ modules, same as redistribution of CPython byte code is not a design goal for Python's module system. Modules solve the problems of text substitution (headers) as interface description. It's why we call the importable module units "interface units". The goals were to fix all the problems with headers (macro leakage, uncontrolled export semantics, Static Initialization Order Fiasco, etc) and improve build performance. They succeeded at this rather wonderfully as a design. Implementation proved more difficult but we're almost there.
- forrestthewoods 7mo agoBecause as a percentage of global C++ builds they’re used in probably 0.0001% of builds with no line of sight to that improving. They have effectively zero use outside of hobby projects. I don’t know that any open source C++ library I have ever interacted with even pretends that modules exist.