Skip to content

Commit d852757

Browse files
authored
Merge pull request #8177 from NomicFoundation/cache-hook-handler
`HookManager` optimizations
2 parents 4202b9c + 3aadcf4 commit d852757

4 files changed

Lines changed: 578 additions & 105 deletions

File tree

.changeset/cyan-hairs-explode.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"hardhat": patch
3+
---
4+
5+
Optimize the `HookManager` and the `coverage` plugin

packages/hardhat/src/internal/builtin-plugins/solidity/hook-handlers/hre.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,14 @@ import type {
2121
CompilerOutputError,
2222
} from "../../../../types/solidity/compiler-io.js";
2323
import type { SolidityBuildInfo } from "../../../../types/solidity.js";
24-
import type { SolidityBuildSystemOptions } from "../build-system/build-system.js";
24+
import type {
25+
SolidityBuildSystemOptions,
26+
SolidityBuildSystemImplementation as SolidityBuildSystemImplementationT,
27+
} from "../build-system/build-system.js";
28+
29+
let SolidityBuildSystemImplementation:
30+
| typeof SolidityBuildSystemImplementationT
31+
| undefined;
2532

2633
class LazySolidityBuildSystem implements SolidityBuildSystem {
2734
readonly #hooks: HookManager;
@@ -126,9 +133,11 @@ class LazySolidityBuildSystem implements SolidityBuildSystem {
126133
}
127134

128135
async #getBuildSystem(): Promise<SolidityBuildSystem> {
129-
const { SolidityBuildSystemImplementation } = await import(
130-
"../build-system/build-system.js"
131-
);
136+
if (SolidityBuildSystemImplementation === undefined) {
137+
const buildSystemModule = await import("../build-system/build-system.js");
138+
SolidityBuildSystemImplementation =
139+
buildSystemModule.SolidityBuildSystemImplementation;
140+
}
132141

133142
if (this.#buildSystem === undefined) {
134143
this.#buildSystem = new SolidityBuildSystemImplementation(

0 commit comments

Comments
 (0)