summaryrefslogtreecommitdiff
path: root/tools/README.md
blob: 7bdf6f77a145a096b6093f0f4b55eee3f1b7ea7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Tools

Documentation for various tooling in support of Deno development.

## format.js

This script will format the code (currently using dprint, rustfmt). It is a
prerequisite to run this before code check in.

To run formatting:

```sh
deno run --allow-read --allow-write --allow-run --unstable ./tools/format.js
```

## lint.js

This script will lint the code base (currently using dlint, clippy). It is a
prerequisite to run this before code check in.

To run linting:

```sh
deno run --allow-read --allow-write --allow-run --unstable ./tools/lint.js
```

Tip: You can also use cargo to run the current or pending build of the deno
executable

```sh
cargo run -- run --allow-read --allow-write --allow-run --unstable ./tools/<script>
```

## flamebench.js

`flamebench.js` facilitates profiling and generating flamegraphs from
benchmarks.

General usage:

```
❯ ./tools/flamebench.js
flamebench <bench_name> [bench_filter]

Available benches:
op_baseline
ser
de
```

To profile the `op_baseline` bench, run `./tools/flamebench.js op_baseline`,
this will run all 3 benches in `op_baseline.

Often when profiling/optimizing, you'll want to focus on a specific sub-bench,
`flamebench` supports a bench/test filter arg like the regular cargo commands.
So you can simply run `./tools/flamebench.js op_baseline bench_op_async` or
`./tools/flamebench.js op_baseline bench_op_nop` to profile specific benches.

Tip: the `[bench_filter]` argument doesn't have to be an exact bench name, you
can use a shorthand or a partial match to profile a group of benches, e.g:
`./tools/flamebench.js de v8`