Merged
Conversation
Improve heap profile memory usage by lazily loading js objects
* Read V8 map data directly, for signal safety * Allow passing in an ACF key object externally to the profiler. * time-profiler.ts uses it to pass an AsyncLocalStorage (ALS) as the key.
#281) use MapAllocationProfile by default to get heap profiler
* build(deps-dev): bump gts from 4.0.1 to 7.0.0 Bumps [gts](https://github.com/google/gts) from 4.0.1 to 7.0.0. - [Release notes](https://github.com/google/gts/releases) - [Changelog](https://github.com/google/gts/blob/main/CHANGELOG.md) - [Commits](google/gts@v4.0.1...v7.0.0) --- updated-dependencies: - dependency-name: gts dependency-version: 7.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * fix(lint): migrate ESLint config to flat format for gts 7.x / ESLint v9 - Add eslint.config.js using gts flat config export - Delete legacy .eslintrc.json and .eslintignore - Fix .prettierrc.js formatting (prettier v3 style) - Fix @typescript-eslint/no-explicit-any errors (now error in ts-eslint v8 recommended) - Fix @typescript-eslint/no-unused-vars and @typescript-eslint/no-floating-promises - Update eslint-disable comment to use n/ prefix instead of node/ - Exclude benchmark/, scripts/, system-test/ from root config (have own configs) - Auto-fix prettier trailing comma issues across source files (prettier v3) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Attila Szegedi <attila.szegedi@datadoghq.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Overall package sizeSelf size: 2.02 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.2.1 | 163.06 kB | 163.06 kB | | node-gyp-build | 3.9.0 | 8.81 kB | 8.81 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
When lineNumbers is enabled, the column is always zero. If only one occurence of a call occurs on one line then that is correctly selected. However, in cases where the same function is called multiple times in the same line it will be unable to differentiate them and would use the unmapped value. This now makes it select the first call in the line as a best-guess for the match, and in Node.js v25 will use the new column field in LineTick to select the correct column where possible.
Reduce time profiler memory usage with lazy profile tree
Bumps [sinon](https://github.com/sinonjs/sinon) from 21.0.1 to 21.0.2. - [Release notes](https://github.com/sinonjs/sinon/releases) - [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md) - [Commits](sinonjs/sinon@v21.0.1...v21.0.2) --- updated-dependencies: - dependency-name: sinon dependency-version: 21.0.2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.3.3 to 25.4.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 25.4.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Attila Szegedi <szegedi@users.noreply.github.com>
#292) * Rewrite SourceMapper to use eager directory scan with sourceMappingURL support Replace `SourceMapper.create(searchDirs[])` with a two-part API: - `new SourceMapper()` constructs an empty mapper synchronously - `await sm.loadDirectory(dir)` populates it asynchronously - SourceMapper.create() is kept as backwards-compatible delegate This separates construction from loading, allowing callers to fire off the async scan without blocking profiler initialization. In production the scan is fire-and-forget (completes well before the first profile is taken); in tests it is awaited directly. The directory scan now uses a two-phase approach per JS file: Phase 1 (higher priority): reads each .js/.cjs/.mjs file and checks for a `sourceMappingURL` annotation (per TC39 ECMA-426). Inline `data:application/json;base64,` URLs are decoded in-memory; external file URLs are loaded from disk if the file exists. The implementation first attempts to read only a 4k tail of the file, and if it is not sufficient falls back to reading the entire file. Phase 2 (fallback): processes .map files found in the directory using the original logic (file property → naming convention). Skips any JS file that Phase 1 already resolved. processSourceMap is refactored to parse just the `file` JSON property before creating the SourceMapConsumer, so we can bail out early (skipping consumer creation) if the JS file was already loaded in Phase 1. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
use dd-octo-sts for tag creation
Bumps [sinon](https://github.com/sinonjs/sinon) from 21.0.2 to 21.0.3. - [Release notes](https://github.com/sinonjs/sinon/releases) - [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md) - [Commits](sinonjs/sinon@v21.0.2...v21.0.3) --- updated-dependencies: - dependency-name: sinon dependency-version: 21.0.3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
feat: track declared-but-missing source maps and report them in profile comments When a JS file has a sourceMappingURL annotation but no map file is found after both phases of directory scanning, SourceMapper tracks it as declared-missing. mappingInfo() for such files returns a SourceLocation with missingMapFile: true, and serialize() emits a single dd:has-missing-map-files token into profile.comment when at least one such file is encountered. Inline data: URL annotations in all valid forms (including data:application/json;charset=utf-8;base64,...) are correctly handled and never produce false missing-map signals. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.4.0 to 25.5.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 25.5.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e366983 to
b37c006
Compare
IlyasShabi
approved these changes
Mar 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New features
Improvements
Other (build, dev)
Note: #300 is in the list of applied commits, but since it was faulty it failed the release and it was removed from it by editing the release branch. It will be re-added in the next release together with a fix for the problem. Since it only addresses upcoming Datadog tagging protections, it is not material to the release.