mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-29 07:04:09 +08:00
A build now names the functions of the program's own files that compile
to the dynamic tier and likely run often, so a slow program with a little
untyped code says where the time goes:
warning SC6101: 3 functions that likely run often use untyped values, which runs slower than typed code:
advance (nbody.js:22): untyped JavaScript file, in a loop
...
- The functions come from the tier assignment lowering already makes
(Lowerer.dynamicFunctions). Without a profile, a function counts as
likely hot when a dynamic operation runs inside one of its loops, when
a loop calls it, or when it calls itself (lowering/dynamic-tier.ts).
- A function is named only when its source says why its values are
untyped: an `any` (for a for...of variable, the value it iterates), an
untyped JSON.parse result, or an untyped JavaScript file. Generated
%dyn.* helpers, module top levels and functions that are dynamic for an
operation without a static lowering are left out.
- At most five functions are named, most likely hot first, with the
total; dynamic-tier code in npm packages is counted per package on one
line. All of the warning's text is in diagnostics/dynamic-tier.ts.
- SC6101 opens the SC61xx band, performance notes, with a new
"performance" category in the diagnostics envelope; SC60xx stay the
divergences.
- scriptc build prints it after the divergence warnings, and the
executable cache stores it with the entry, so a cached build (including
the CLI's routed fast path) repeats it. scriptc coverage reports it, and
a comment-only edit no longer replays a verdict that carries it, since
its text holds line numbers.
- --no-dynamic-tier-warning leaves it out of build and coverage;
coverage --fail-on=dynamic fails on it.
- Docs: coverage.mdx (Dynamic tier, Gating builds and CI, the envelope
categories) and cli.mdx.
58 lines
2.1 KiB
Plaintext
58 lines
2.1 KiB
Plaintext
node_modules/
|
|
.pnpm-store/
|
|
# test-fixture packages are TEST DATA, committed on purpose
|
|
!tests/diagnostics/npm-imports/node_modules/
|
|
!tests/diagnostics/npm-program-type-error/node_modules/
|
|
!tests/diagnostics/retired-engine-import-refusal/node_modules/
|
|
!tests/fixtures/commander-calc/node_modules/
|
|
!tests/fixtures/npm/node_modules/
|
|
!tests/corpus/*/node_modules/
|
|
!tests/fixtures/npm-static/node_modules/
|
|
!tests/coverage-fixtures/wasm/node_modules/
|
|
!tests/coverage-fixtures/dynamic-tier/package/node_modules/
|
|
!tests/fixtures/npm-static/nested/inner/node_modules/
|
|
!tests/fixtures/npm-static/node_modules/*/node_modules/
|
|
!tests/fixtures/npm/store/*/node_modules/
|
|
!tests/fixtures/npm/node_modules/*/node_modules/
|
|
!tests/fixtures/npm/workspace/*/node_modules/
|
|
!tests/fixtures/npm/cases/*/node_modules/
|
|
!tests/library-mode/*/node_modules/
|
|
!tests/fixtures/provenance/node_modules/
|
|
!tests/fixtures/fetch/node_modules/
|
|
!tests/fixtures/gateway-e2e/node_modules/
|
|
!tests/fixtures/node-types/node_modules/
|
|
dist/
|
|
output/
|
|
/packages/llvm-darwin-arm64/bin/
|
|
/packages/runtime-darwin-arm64/artifacts/
|
|
/packages/runtime-darwin-arm64/runtime-pack.json
|
|
/packages/runtime-darwin-arm64/.runtime-pack-*
|
|
/packages/llvm-*/bin/
|
|
/packages/cli/bin/
|
|
/packages/runtime-*/artifacts/
|
|
/packages/runtime-*/runtime-pack.json
|
|
/packages/runtime-*/.runtime-pack-*
|
|
!tests/fixtures/npm/node_modules/*/dist/
|
|
!tests/fixtures/npm/workspace/*/dist/
|
|
!tests/fixtures/npm/cases/workspace-copied/members/*/dist/
|
|
!tests/fixtures/npm/cases/workspace-copied/node_modules/*/dist/
|
|
!tests/fixtures/provenance/node_modules/*/dist/
|
|
!tests/fixtures/npm-static/node_modules/*/dist/
|
|
!tests/corpus/*/node_modules/*/dist/
|
|
.scriptc/
|
|
*.log
|
|
.DS_Store
|
|
packages/runtime/test/build/
|
|
# Cached build-time evaluator archives (see packages/runtime/vendor/README.md)
|
|
packages/runtime/vendor/.cache/
|
|
# fs corpus scratch directories (created in the test cwd, removed on clean runs)
|
|
tmp-*/
|
|
.claude/
|
|
.vercel/
|
|
.env.local
|
|
.env*
|
|
.env*.local
|
|
# the vendored fs-extra corpus package: its lib/output module and jsonfile's own universalify
|
|
!tests/corpus/fs-extra-package/node_modules/fs-extra/lib/output/
|
|
!tests/corpus/fs-extra-package/node_modules/jsonfile/node_modules/
|