Remote Execution Caching Compiler (RECC)
Caching Compiler (RECC) CppCon 2024 September 19, 2024 Shivam Bairoliya Software Engineer© 2024 Bloomberg Finance L.P. All rights reserved. What is RECC? ● Remote Execution Caching Compiler (RECC) ○ Open source build tool that wraps compiler commands and optionally forwards them to a remote build execution service ○ Encompasses the capabilities of both ccache and distcc ○ Supports remote linking linking and caching ● Designed to share caches across diverse toolchains ○ Works with many compiler toolchains (GCC, Clang, Solaris CC) ○ Supports multiple operating systems (Linux, macOS, Solaris)0 码力 | 6 页 | 2.03 MB | 5 月前32.1.4 PingCAP Go runtime related problems in TiDB production environment
Go runtime related problems in TiDB production environment About me ● Arthur Mao(毛康力), Senior Engineer@PingCAP ● TiDB core developer (top3 contributor) ● GitBook about golang internals (@tiancaiamao) IO is ready => goroutine wake up == 4.3ms ○ Sometime even 10ms+ latency here! ○ The time spend on runtime schedule is not negligible ● When CPU is overload, which goroutine should be given priority? Analysis longer to be scheduled ● The runtime scheduling does not consider priority ● CPU dense workload could affect IO latency Conclusion Part II - Memory control ● Go Runtime ○ Allocated from OS (mmaped)0 码力 | 56 页 | 50.15 MB | 5 月前3Testing Compile-time Constructs Within a Runtime Unit Testing Framework
company. Ⓡ © 2021 Apex.AI, Inc. Igor Bogoslavskyi Testing the compilability of the code at runtime© 2021 Apex.AI, Inc. Errors have a high cost, so rigorous testing is a must We use increasingly test_halving.cpp image: Flaticon.com Compiler image: Flaticon.com Test binary GoogleTest ✅ flags© 2021 Apex.AI, Inc. Proposed testing pipeline image: Flaticon.com Compiler image: Flaticon.com Test binary does image: Flaticon.com Test binary GoogleTest StaticTest Fixture ✅ image: Flaticon.com Compiler image: Flaticon.com test_halving.cpp flags image: Flaticon.com test_compile_1.cpp image: Flaticon0 码力 | 50 页 | 1.37 MB | 5 月前3Oracle VM VirtualBox 4.3.36 User Manual
virtualizer such as 6OVF support was originally introduced with VirtualBox 2.2 and has seen major improvements with every version since. 31 1 First steps VirtualBox. VirtualBox makes OVF import and export distributions can be set up simply by installing the right packages - normally, these will be the GNU compiler (GCC), GNU Make (make) and packages containing header files for your kernel - and making sure that for Linux guests and only for copying files from the host to the guest.3 Removable media: remember runtime changes If this is checked, VirtualBox will save the state of what media has been mounted between0 码力 | 380 页 | 3.79 MB | 5 月前3Oracle VM VirtualBox 4.2.32 User Manual
Virtualization Format (OVF).6 6OVF support was originally introduced with VirtualBox 2.2 and has seen major improvements with every version since. 30 1 First steps OVF is a cross-platform standard supported by many distributions can be set up simply by installing the right packages - normally, these will be the GNU compiler (GCC), GNU Make (make) and packages containing header files for your kernel - and making sure that “Shared Clipboard” menu item in the “Devices” menu of the virtual machine. Removable media: remember runtime changes If this is checked, VirtualBox will save the state of what media has been mounted between0 码力 | 348 页 | 5.93 MB | 5 月前3Oracle VM VirtualBox 4.1.40 User Manual
virtualizer such as 6OVF support was originally introduced with VirtualBox 2.2 and has seen major improvements with every version since. 28 1 First steps VirtualBox. VirtualBox makes OVF import and export distributions can be set up simply by installing the right packages - normally, these will be the GNU compiler (GCC), GNU Make (make) and packages containing header files for your kernel - and making sure that default. See chapter 13.3.2.3, Clipboard, page 196 for an explanation. Removable media: remember runtime changes If this is checked, VirtualBox will save the state of what media has been mounted between0 码力 | 310 页 | 4.87 MB | 5 月前3Peering Forward: C++'s Next Decade
advances are on track std::execution (concurrency and parallelism) Type and memory safety improvements Reflection + code generation (aka ‘injection’/…) Contracts means “some initial parts advances are on track std::execution (concurrency and parallelism) Type and memory safety improvements target: parity with other modern languages Reflection + code generation (aka ‘injection’/…) } Erwin Unruh: The most famous C++ program that doesn’t compile 1994: TC! Original Metaware compiler error messages Type 'enum{}' can't be converted to type 'D<2>' ("primes.cpp",L2/C25). Type 'enum{}'0 码力 | 84 页 | 6.21 MB | 5 月前3A Physical Units Library for the Next C++
the Next C++ mp-units on the Compiler Explorer (godbolt.org/z/cs19oj) 8[requires] mp-units/0.6.0 [generators] cmake conan install .. -pr-s compiler.cppstd=20 -b=missing CppCon RELEASES) 9[requires] mp-units/0.6.0 [generators] cmake conan install .. -pr -s compiler.cppstd=20 -b=missing [requires] mp-units/0.7.0@mpusz/testing [generators] cmake conan remote conan-mpusz https://api.bintray.com/conan/mpusz/conan-mpusz conan install .. -pr -s compiler.cppstd=20 -b=outdated -u CppCon 2020 | A Physical Units Library For the Next C++ mp-units in Conan 0 码力 | 172 页 | 6.17 MB | 5 月前3Expressive Compile-time Parsers
details • Using compile-time parsers • Reflection • Examples: functions, types, treesParser In a compiler: tokens -> parser -> syntax tree In a web browser: text -> JSON parser -> JS object parse(text syntax because it needs to be parsed by the compiler >> *node >>Limitation The syntax must be valid C++ syntax because it needs to be parsed by the compiler >> node* >>Example – Filter Transform vectorv::transform([](const Cat& cat) { return tuple{ cat.id, cat.name }; }) | ranges::to< vector >();Example – Runtime Parsers std::vector cats = { /*...*/ }; auto parser = create_parser(); auto func = parser("SELECT 0 码力 | 134 页 | 1.73 MB | 5 月前3Oracle VM VirtualBox 5.2.40 User Manual
to import them. 6OVF support was originally introduced with VirtualBox 2.2 and has seen major improvements with every version since. 32 1 First steps 2. Alternatively, the above files can be packed together from the distribution which are needed for the “build” process. Normally, these will be the GNU compiler (GCC), GNU Make (make) and packages containing “header files” for your kernel - and making sure the VM for which they have been defined; 2. transient VM shares, which can be added and removed at runtime and do not persist after a VM has stopped; for these, add the --transient option to the above command0 码力 | 387 页 | 4.27 MB | 5 月前3
共 288 条
- 1
- 2
- 3
- 4
- 5
- 6
- 29