Comments (6)
Hello
There are no specific plans to support modules at this time, though I'd certainly be interested to see how this space plays out and what potential impacts it might have on build performance.
Looking at the link you sent, it seems that it might be possible to use right now without any changes to FASTBuild, simply by specifying the correct command line options. Depending on how cumbersome that ends up being, in the future, it might be beneficial to have some of the work done automatically by FASTBuild. As the options appear somewhat experimental (and subject to change) it'd be worth waiting for that to stabilize before adding any dedicated functionality.
from fastbuild.
Looks like C++20 modules are here, shipped in VS2022.
https://devblogs.microsoft.com/cppblog/using-cpp-modules-in-msvc-from-the-command-line-part-1/
Wondering what could it mean for FASTBuild users. 🤔
from fastbuild.
I meanly wonder what it means when it comes to build times. Potentially, this should be a dealbreaker, making the compilation times way faster, but the current implementations are not done properly, as they can be even slower, or faster just in specific scenarios.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1441r1.pdf
I wonder if they are approaching the order of magnitude compilation time speedup of modules we are expecting to have eventually.
from fastbuild.
Some discussion going on on C++ tooling study group mailing list about modules and build systems.
https://lists.isocpp.org/sg15/2022/03/1255.php
from fastbuild.
There's now a standard way of specifying source-level dependencies. From my limited understanding of modules the build system needs to do a pre-scan of every source file before the actual build, and this would be the output of that pre-scan: http://wg21.link/P1689
Apparently IDEs can take advantage of that file too, and MSVC already has support for it.
Relevant Reddit discussion: https://www.reddit.com/r/cpp/comments/s99ljm/comment/htmfyxo/?utm_source=share&utm_medium=web2x&context=3
One big expected benefit of modules besides performance is that it should remove the need to put templates in headers. The module you're referencing will just contain a serialized representation of the template that will be used to instantiate it for your specific type.
From a maintenance point of view, being able to transform a method into a templated method without having it forced up into a header sounds like a dream, and will likely make generic code much more palatable to use.
from fastbuild.
Update: Cmake shipped official modules support about 3 months ago, so it seems that the necessary support (especially dependency scanning) has shipped in all major compilers: https://gitlab.kitware.com/cmake/cmake/-/issues/18355
And this open-source release by Microsoft seems also quite relevant: https://devblogs.microsoft.com/cppblog/open-sourcing-ifc-sdk-for-cpp-modules/
from fastbuild.
Related Issues (20)
- Missing XML Quoting support in vcxproj generator HOT 4
- integration Distributed ThinLTO with FASTBuild HOT 7
- `-compdb` does not include commands to generate PCHs HOT 1
- Problem using variable inside #include HOT 2
- Configuration file supporting Libraby and executable HOT 2
- Visual Studio Instrumentation profiling integration? HOT 5
- ObjectList not rebuilt when PreBuildDependencies changes HOT 4
- .CompilerOptionsC option HOT 16
- How to make full use of the build server HOT 3
- FASTBuild 1.13 gives false "Missing precompiled header option Yc in PCHOptions" error when Yc is present HOT 2
- Problems with compressed source files (LNK2019 error) HOT 7
- Compilation fails with 4> clang: error: invalid Xarch argument: '-Xarch_arm64 -o', options requiring arguments are unsupported HOT 3
- fbuild <target> emits warning while there are no warnings in the cl output HOT 1
- warning LNK4042 when linking a library from several ObjectLists that reused the same PCH. HOT 2
- Limit number of cores used for linking HOT 3
- 'Exec' can't have 'ObjectList' node specified as '.ExecInput' HOT 1
- Show remaining tasks in the status line, and document it HOT 3
- -report=json produces malformed output when caching is disabled HOT 2
- Support for building Chromium HOT 1
- How to generate visual studio project files for fastbuild itself? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fastbuild.