How to Build Your First C++ Automated Refactoring Tool - CppCon 2023
9Proprietary + Confidential Large Scale Refactorings & Automated Refactoring Tools 10 10Refactoring Tool Use Cases 02 11Proprietary + Confidential Consistent Code Formatting 12 12Proprietary + Confidential (const auto& i: arr){ // analyze i } } 78 78 Writing Our Own Tidy CheckReally Cool Stuff You Can Build 79 void OldAPI(int v, int m, int d){ NewAPI(m, v); } void NewAPI(int m, int v); - OldAPI(vel OldAPI(vel, mass, dist); + NewAPI(mass, vel); ABSL_DEPRECATE_AND_INLINE()Really Cool Stuff You Can Build 80 if (absl::GetFlag(FLAGS_Example_for_cpp_con)) { foo(); } else { bar(); } foo();In Conclusion0 码力 | 83 页 | 6.03 MB | 5 月前3Make Successor Build Systems: World Tour of Build Systems
Reliable, Fast and Safe Builds Damien co-founder, tipi.build @daminetreg / damien@tipi.build Antonio DevEx Engineer, EngFlow @TheGrizzlyDev / antonio@engflow.comA love ❤ letter to CMakeGiving CMake tackle first Memory Safety Arithmetic SafetySanitizers for C++ builds with CMake github.com/tipi-build/sanitizers-cmakeSanitizers for C++ builds AddressSanitizer (ASan) UndefinedBehaviorSanitizer (UBSsan) decent amount of CPU power Let's look at other build systemsLearning from other build-systemsParallelism How many independent targets can a build system run concurrently at most?Parallelism Level0 码力 | 115 页 | 7.02 MB | 5 月前3Why is my Build so Slow
Why is my build so slow? Sam Privett 12 Disclaimer: The views and opinions expressed in this presentation are solely those of the presenters and do not necessarily represent the views, positions, Visualizing Compilation IntroductionLines of Code ≈ Longer Build Times 8Lines of Code 📈 9Build Times 📈 10Build Times 📈 11Build Times 📈 12Build Times 📈 13Boiling Frog 14Developer Productivity 15 linker, etc) 18Visualization 19 - Interactive Trace Viewer - https://ui.perfetto.dev/ - Can build and run server locally as well - Chrome Event Tracing Format JSON - … and more!20 VisualizationClang0 码力 | 71 页 | 3.96 MB | 5 月前3Using Modern C++ to Build XOffsetDatastructure
Fanchen Su, XOffsetDatastructure, CppCon 2024 41. Title • 1 Long Title: • Using Modern C++ to Build XOffsetDatastructure: A Zero-Encoding and Zero-Decoding High-Performance Serialization Library in Fanchen Su, XOffsetDatastructure, CppCon 2024 51. Title • 1 Long Title: • Using Modern C++ to Build XOffsetDatastructure: A Zero-Encoding and Zero-Decoding High-Performance Serialization Library in0 码力 | 111 页 | 3.03 MB | 5 月前3Beyond Compilation Databases to Support C++ Modules: Build Databases
● 15 years working on build systems and software process ● CMake developer ○ Designing and implementing features, performance improvements ○ Maintaining and improving build systems which use CMake Pushing forward modules support in other build systems ■ xmake ■ bazel 2Outline 1. What are compilation databases? 2. How do modules change the status quo? 3. Build databases 3Compilation Databases: Overview https://clang.llvm.org/docs/JSONCompilationDatabase.html ● Widely used and available ○ Generated by build systems ○ Used by static analysis to know how to analyze sources ○ IDEs to understand how a source0 码力 | 31 页 | 585.05 KB | 5 月前3Common Package Specification: Getting Build Tools to Talk to Each Other
A Common Package Specification: Getting Build Tools to Talk to Each Other Lessons Learned From Making Thousands of Binaries Consumable by Any Build System Diego Rodriguez-Losada @ CppCon 2023Outline 3#includeint main(void){ … deflateInit(&defstream, Z_BEST_COMPRESSION); Build system scripts Problem definition and scope 1. Define the version to use 2. Define the configuration: (system package manager or language package manager), build from source by the user, with that configuration 4. Pass information to the build system so it can locate and use it successfully 4#include 0 码力 | 94 页 | 1.58 MB | 5 月前3Shared Libraries and Where To Find Them
libraries and executables When running executables: ● Launching them ● Loading loadable plugins When configuring the build When packaging application for distributionWHEN shared libraries are needed When running executables: ● Launching them ● Loading loadable plugins When configuring the build When packaging application for distribution BUILD RUNWHICH programs need to locate shared libraries When running executables: ● Launching them ● Loading loadable plugins When configuring the build When packaging application for distribution Build system generator (Static) LINKER (Dynamic) LINKER/LOADER0 码力 | 94 页 | 6.49 MB | 5 月前3Continuous Regression Testing for Safer and Faster Refactoring
a third-party dependency Renaming a function or variable Changing system con�guration Updating build system toolchain “Software engineering is programming integrated over time.” - Titus Winters6 Aurora Agenda What is continuous regression testing How does regression testing work in practice How to build a regression testing system Going beyond �nding behavioral regressions How to use regression testing Agenda What is continuous regression testing How does regression testing work in practice How to build a regression testing system Going beyond �nding behavioral regressions How to use regression testing0 码力 | 85 页 | 11.66 MB | 5 月前3Plug-in Based Software Architecture for Robotics
interface 2. Plugins - Stand-alone independent components that contain implementation of core application’s features 3. Plugin Manager - Component responsible for loading and unloading plugins Core use plugin architecture? ● More testable code ○ Interface can be mocked to test core system ○ Plugins can be individually tested ● Simplifies integration ○ Core system has a well defined API ○ Increase have to compile the entire project ● Plugins are be loaded, updated and deleted on the fly without application restart 8Some popular C++ projects that use plugins 9 ● Audio editing software ● Game0 码力 | 75 页 | 2.40 MB | 5 月前3Dynamically Loaded Libraries Outside the Standard
o25 CppCon 2021 | • Decompose an application’s material for shipping • Dependency established at build time • C++ abstract machine can be implemented on top of dependent libraries – But not all that dependent (hypothetical)43 CppCon 2021 | • Declaration decides the symbol of the entity • The idea also presents in Plugins in C++ (wg21.link/n2015), 2006 Resolving dynamic entities using declarations44 CppCon 2021 | • void (*RUNPROC) (void); Prepare the types for GetProcAddress53 CppCon 2021 | void load_all_plugins(GtkWidget *widget, gpointer user_data) { LPPLUGINSTRUCT pls = NULL; CREATEPROC create = NULL;0 码力 | 100 页 | 3.98 MB | 5 月前3
共 205 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21
相关搜索词
HowtoBuildYourFirstC++AutomatedRefactoringToolCppCon2023MakeSuccessorSystemsWorldTourofWhyismysoSlowUsingModernXOffsetDatastructureBeyondCompilationDatabasesSupportModulesCommonPackageSpecificationGettingToolsTalkEachOtherSharedLibrariesandWhereToFindThemContinuousRegressionTestingforSaferFasterPluginBasedSoftwareArchitectureRoboticsDynamicallyLoadedOutsidetheStandard