Jarred Sumner 7c0574eeb4 feat: Implement process.report.getReport() on Windows (#22816)
## Summary

This PR implements the Node.js-compatible `process.report.getReport()`
API on Windows, which was previously returning a "Not implemented"
message.

fixes https://github.com/rollup/rollup/issues/6119

fixes #11992

## Changes

###  Implementation
- Full Windows support for `process.report.getReport()`
- Uses libuv APIs (`uv_cpu_info`, `uv_interface_addresses`) for
cross-platform consistency
- Refactored to share common code between Windows and POSIX platforms
(~150 lines reduced)
- Returns comprehensive diagnostic information matching Node.js
structure

### 📊 Key Features Implemented

**System Information:**
-  CPU information: All processors with model, speed, and usage times
-  Network interfaces: Complete with MAC addresses, IPs, and netmasks  
-  Memory statistics: RSS, page faults, system memory info using
Windows APIs
-  Process information: PID, CWD, command line arguments, Windows
version detection

**JavaScript Runtime:**
-  JavaScript heap information with all V8-compatible heap spaces
-  JavaScript stack traces with proper formatting
-  Environment variables
-  Loaded DLLs in sharedObjects array

### 🧪 Testing
- Added comprehensive test suite with 10 tests covering all report
sections
- Tests validate structure, data types, and field presence
- All tests passing on Windows

```bash
bun test test/js/node/process/process.test.js -t "process.report"
# 10 pass, 0 fail
```

## Compatibility

Matches Node.js report structure exactly on Windows:
- Correctly omits `userLimits` and `uvthreadResourceUsage` (not present
in Node.js on Windows)
- Includes Windows-specific `libUrl` field in release object
- Returns same top-level keys as Node.js

## Example Output

```javascript
const report = process.report.getReport();
console.log(report.header.cpus.length); // 24
console.log(report.header.osVersion);   // "Windows 11 Pro"
console.log(report.sharedObjects.filter(so => so.includes('.dll')).length); // 36+
```

## Test Plan

```bash
# Run the new tests
bun bd test test/js/node/process/process.test.js -t "process.report"

# Verify output structure matches Node.js
node -e "console.log(Object.keys(process.report.getReport()).sort())"
bun bd -e "console.log(Object.keys(process.report.getReport()).sort())"
```

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Zack Radisic <zack@theradisic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-20 02:44:33 -07:00
2025-09-16 16:31:04 -07:00
2024-12-26 11:48:30 -08:00
2024-12-12 03:21:56 -08:00
2025-01-07 20:19:12 -08:00
2025-09-07 18:51:39 -07:00
2022-09-03 20:54:15 -07:00
2025-09-14 18:48:26 -07:00
2024-07-24 01:30:31 -07:00
2025-04-19 05:41:34 -07:00
2025-09-14 18:48:26 -07:00
2025-07-10 00:10:43 -07:00
2025-07-10 00:10:43 -07:00
go
2021-08-11 13:56:03 -07:00

Logo

Bun

stars Bun speed

Documentation   •   Discord   •   Issues   •   Roadmap

Read the docs →

What is Bun?

Bun is an all-in-one toolkit for JavaScript and TypeScript apps. It ships as a single executable called bun.

At its core is the Bun runtime, a fast JavaScript runtime designed as a drop-in replacement for Node.js. It's written in Zig and powered by JavaScriptCore under the hood, dramatically reducing startup times and memory usage.

bun run index.tsx             # TS and JSX supported out-of-the-box

The bun command-line tool also implements a test runner, script runner, and Node.js-compatible package manager. Instead of 1,000 node_modules for development, you only need bun. Bun's built-in tools are significantly faster than existing options and usable in existing Node.js projects with little to no changes.

bun test                      # run tests
bun run start                 # run the `start` script in `package.json`
bun install <pkg>             # install a package
bunx cowsay 'Hello, world!'   # execute a package

Install

Bun supports Linux (x64 & arm64), macOS (x64 & Apple Silicon) and Windows (x64).

Linux users — Kernel version 5.6 or higher is strongly recommended, but the minimum is 5.1.

x64 users — if you see "illegal instruction" or similar errors, check our CPU requirements

# with install script (recommended)
curl -fsSL https://bun.com/install | bash

# on windows
powershell -c "irm bun.com/install.ps1 | iex"

# with npm
npm install -g bun

# with Homebrew
brew tap oven-sh/bun
brew install bun

# with Docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun

Upgrade

To upgrade to the latest version of Bun, run:

bun upgrade

Bun automatically releases a canary build on every commit to main. To upgrade to the latest canary build, run:

bun upgrade --canary

View canary build

Guides

Contributing

Refer to the Project > Contributing guide to start contributing to Bun.

License

Refer to the Project > License page for information about Bun's licensing.

Description
Bun is a fast, incrementally adoptable all-in-one JavaScript, TypeScript & JSX toolkit. Use individual tools like bun test or bun install in Node.js projects, or adopt the complete stack with a fast JavaScript runtime, bundler, test runner, and package manager built in. Bun aims for 100% Node.js compatibility.
Readme 680 MiB
Languages
Zig 60.5%
C++ 24.9%
TypeScript 8.3%
C 3.3%
JavaScript 1.4%
Other 1.1%