Commit Graph

62 Commits

Author SHA1 Message Date
taylor.fish
eb04e4e640 Make bun.webcore.Blob smaller and ref-counted (#23015)
Reduce the size of `bun.webcore.Blob` from 120 bytes to 96. Also make it
ref-counted: in-progress work on improving the bindings generator
depends on this, as it means C++ can pass a pointer to the `Blob` to Zig
without risking it being destroyed if the GC collects the associated
`JSBlob`.

Note that this PR depends on #23013.

(For internal tracking: fixes STAB-1289, STAB-1290)
2025-09-26 17:18:30 -07:00
robobun
d3061de1bf feat(windows): implement authenticode stripping for --compile (#22960)
## Summary

Implements authenticode signature stripping for Windows PE files when
using `bun build --compile`, ensuring that generated executables can be
properly signed with external tools after Bun embeds its data section.

## What Changed

### Core Implementation
- **Authenticode stripping**: Removes digital signatures from PE files
before adding the .bun section
- **Safe memory access**: Replaced all `@alignCast` operations with safe
unaligned access helpers to prevent crashes
- **Hardened PE parsing**: Added comprehensive bounds checking and
validation throughout
- **PE checksum recalculation**: Properly updates checksums after
modifications

### Key Features
- Always strips authenticode signatures when using `--compile` for
Windows (uses `.strip_always` mode)
- Validates PE file structure according to PE/COFF specification
- Handles overlapping memory regions safely during certificate removal
- Clears `IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY` flag when stripping
signatures
- Ensures no unexpected overlay data remains after stripping

### Bug Fixes
- Fixed memory corruption bug using `copyBackwards` for overlapping
regions
- Fixed checksum calculation skipping 6 bytes instead of 4
- Added integer overflow protection in payload size calculations
- Fixed double alignment bug in `size_of_image` calculation

## Technical Details

The implementation follows the Windows PE/COFF specification and
includes:

- `StripMode` enum to control when signatures are stripped
(none/strip_if_signed/strip_always)
- Safe unaligned memory access helpers (`viewAtConst`, `viewAtMut`)
- Proper alignment helpers with overflow protection (`alignUpU32`,
`alignUpUsize`)
- Comprehensive error types for all failure cases

## Testing

- Passes all existing PE tests in
`test/regression/issue/pe-codesigning-integrity.test.ts`
- Compiles successfully with `bun run zig:check-windows`
- Properly integrated with StandaloneModuleGraph for Windows compilation

## Impact

This ensures Windows users can:
1. Use `bun build --compile` to create standalone executables
2. Sign the resulting executables with their own certificates
3. Distribute properly signed Windows binaries

Fixes issues where previously signed executables would have invalid
signatures after Bun added its embedded data.

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-09-25 18:03:27 -07:00
robobun
d5431fcfe6 Fix Windows compilation issues with embedded resources and relative paths (#22365)
## Summary
- Fixed embedded resource path resolution when using
`Bun.build({compile: true})` API for Windows targets
- Fixed relative path handling for `--outfile` parameter in compilation

## Details

This PR fixes two regressions introduced after v1.2.19 in the
`Bun.build({compile})` feature:

### 1. Embedded Resource Path Issue
When using `Bun.build({compile: true})`, the module prefix wasn't being
set to the target-specific base path, causing embedded resources to fail
with "ENOENT: no such file or directory" errors on Windows (e.g.,
`B:/~BUN/root/` paths).

**Fix**: Ensure the target-specific base path is used as the module
prefix in `doCompilation`, matching the behavior of the CLI build
command.

### 2. PE Metadata with Relative Paths
When using relative paths with `--outfile` (e.g.,
`--outfile=forward/slash` or `--outfile=back\\slash`), the compilation
would fail with "FailedToLoadExecutable" error.

**Fix**: Ensure relative paths are properly converted to absolute paths
before PE metadata operations.

## Test Plan
- [x] Tested `Bun.build({compile: true})` with embedded resources
- [x] Tested relative path handling with nested directories
- [x] Verified compiled executables run correctly

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

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Zack Radisic <zack@theradisic.com>
2025-09-04 18:17:14 -07:00
taylor.fish
437e15bae5 Replace catch bun.outOfMemory() with safer alternatives (#22141)
Replace `catch bun.outOfMemory()`, which can accidentally catch
non-OOM-related errors, with either `bun.handleOom` or a manual `catch
|err| switch (err)`.

(For internal tracking: fixes STAB-1070)

---------

Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
2025-08-26 12:50:25 -07:00
Dylan Conway
8fad98ffdb Add Bun.YAML.parse and YAML imports (#22073)
### What does this PR do?
This PR adds builtin YAML parsing with `Bun.YAML.parse`
```js
import { YAML } from "bun";
const items = YAML.parse("- item1");
console.log(items); // [ "item1" ]
```

Also YAML imports work just like JSON and TOML imports
```js
import pkg from "./package.yaml"
console.log({ pkg }); // { pkg: { name: "pkg", version: "1.1.1" } }
```
### How did you verify your code works?
Added some tests for YAML imports and parsed values.

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-08-23 06:55:30 -07:00
Jarred Sumner
75f0ac4395 Add Windows metadata flags to bun build --compile (#22067)
## Summary
- Adds support for setting Windows executable metadata through CLI flags
when using `bun build --compile`
- Implements efficient single-operation metadata updates using the
rescle library
- Provides comprehensive error handling and validation

## New CLI Flags
- `--windows-title`: Set the application title
- `--windows-publisher`: Set the publisher/company name  
- `--windows-version`: Set the file version (e.g. "1.0.0.0")
- `--windows-description`: Set the file description
- `--windows-copyright`: Set the copyright notice

## JavaScript API
These options are also available through the `Bun.build()` JavaScript
API:
```javascript
await Bun.build({
  entrypoints: ["./app.js"],
  outfile: "./app.exe",
  compile: true,
  windows: {
    title: "My Application",
    publisher: "My Company",
    version: "1.0.0.0",
    description: "Application description",
    copyright: "© 2025 My Company"
  }
});
```

## Implementation Details
- Uses a unified `rescle__setWindowsMetadata` C++ function that loads
the Windows executable only once for efficiency
- Properly handles UTF-16 string conversion for Windows APIs
- Validates version format (supports "1", "1.2", "1.2.3", or "1.2.3.4"
formats)
- Returns specific error codes for better debugging
- All operations return errors instead of calling `Global.exit(1)`

## Test Plan
Comprehensive test suite added in
`test/bundler/compile-windows-metadata.test.ts` covering:
- All CLI flags individually and in combination
- JavaScript API usage
- Error cases (invalid versions, missing --compile flag, etc.)
- Special character handling in metadata strings

All 20 tests passing (1 skipped as not applicable on Windows).

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

---------

Co-authored-by: Zack Radisic <zack@theradisic.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2025-08-23 00:33:24 -07:00
Michael H
d354714791 Plugins + cross-compilation + Bun.build API support for Bun.build({compile}) (#21915)
### What does this PR do?

in the name

### How did you verify your code works?

tests, but using ci to see if anything else broke

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-08-20 01:25:49 -07:00
Jarred Sumner
a25d7a8450 Fixup --compile-argv (#21916)
### What does this PR do?

Fixup --compile-argv

### How did you verify your code works?

better test
2025-08-16 00:38:57 -07:00
robobun
151cc59d53 Add --compile-argv option to prepend arguments to standalone executables (#21895)
## Summary

This PR adds a new `--compile-argv` option to `bun build --compile` that
allows developers to embed runtime arguments into standalone
executables. The specified arguments are stored in the executable
metadata during compilation and provide **dual functionality**:

1. **🔧 Actually processed by Bun runtime** (like passing them on command
line)
2. **📊 Available in `process.execArgv`** (for application inspection)

This means flags like `--user-agent`, `--smol`, `--max-memory` will
actually take effect AND be visible to your application!

## Motivation & Use Cases

### 1. **Global User Agent for Web Scraping** 
Perfect for @thdxr's opencode use case - the user agent actually gets
applied:

```bash
# Compile with custom user agent that ACTUALLY works
bun build --compile --compile-argv="--user-agent='OpenCode/1.0'" ./scraper.ts --outfile=opencode

# The user agent is applied by Bun runtime AND visible in execArgv
./opencode  # All HTTP requests use the custom user agent!
```

### 2. **Memory-Optimized Builds**
Create builds with actual runtime memory optimizations:

```bash
# Compile with memory optimization that ACTUALLY takes effect
bun build --compile --compile-argv="--smol --max-memory=512mb" ./app.ts --outfile=app-optimized

# Bun runtime actually runs in smol mode with memory limit
```

### 3. **Performance & Debug Builds**
Different builds with different runtime characteristics:

```bash
# Production: optimized for memory
bun build --compile --compile-argv="--smol --gc-frequency=high" ./app.ts --outfile=app-prod

# Debug: with inspector enabled  
bun build --compile --compile-argv="--inspect=0.0.0.0:9229" ./app.ts --outfile=app-debug
```

### 4. **Security & Network Configuration**
Embed security settings that actually apply:

```bash
# TLS and network settings that work
bun build --compile --compile-argv="--tls-min-version=1.3 --dns-timeout=5000" ./secure-app.ts
```

## How It Works

### Dual Processing Architecture

The implementation provides both behaviors:

```bash
# Compiled with: --compile-argv="--smol --user-agent=Bot/1.0"
./my-app --config=prod.json
```

**What happens:**
1. **🔧 Runtime Processing**: Bun processes `--smol` and
`--user-agent=Bot/1.0` as if passed on command line
2. **📊 Application Access**: Your app can inspect these via
`process.execArgv`

```javascript
// In your compiled application:

// 1. The flags actually took effect:
// - Bun is running in smol mode (--smol processed)
// - All HTTP requests use Bot/1.0 user agent (--user-agent processed)

// 2. You can also inspect what flags were used:
console.log(process.execArgv);  // ["--smol", "--user-agent=Bot/1.0"]
console.log(process.argv);      // ["./my-app", "--config=prod.json"]

// 3. Your application logic can adapt:
if (process.execArgv.includes("--smol")) {
  console.log("Running in memory-optimized mode");
}
```

### Implementation Details

1. **Build Time**: Arguments stored in executable metadata
2. **Runtime Startup**: 
- Arguments prepended to actual argv processing (so Bun processes them)
- Arguments also populate `process.execArgv` (so app can inspect them)
3. **Result**: Flags work as if passed on command line + visible to
application

## Example Usage

```bash
# User agent that actually works
bun build --compile --compile-argv="--user-agent='MyBot/1.0'" ./scraper.ts --outfile=scraper

# Memory optimization that actually applies
bun build --compile --compile-argv="--smol --max-memory=256mb" ./microservice.ts --outfile=micro

# Debug build with working inspector
bun build --compile --compile-argv="--inspect=127.0.0.1:9229" ./app.ts --outfile=app-debug

# Multiple working flags
bun build --compile --compile-argv="--smol --user-agent=Bot/1.0 --tls-min-version=1.3" ./secure-scraper.ts
```

## Runtime Verification

```javascript
// Check what runtime flags are active
const hasSmol = process.execArgv.includes("--smol");
const userAgent = process.execArgv.find(arg => arg.startsWith("--user-agent="))?.split("=")[1];
const maxMemory = process.execArgv.find(arg => arg.startsWith("--max-memory="))?.split("=")[1];

console.log("Memory optimized:", hasSmol);
console.log("User agent:", userAgent);  
console.log("Memory limit:", maxMemory);

// These flags also actually took effect in the runtime!
```

## Changes Made

### Core Implementation
- **Arguments.zig**: Added `--compile-argv <STR>` flag with validation
- **StandaloneModuleGraph.zig**: Serialization/deserialization for
`compile_argv`
- **build_command.zig**: Pass `compile_argv` to module graph
- **cli.zig**: **Prepend arguments to actual argv processing** (so Bun
processes them)
- **node_process.zig**: **Populate `process.execArgv`** from stored
arguments
- **bun.zig**: Made `appendOptionsEnv()` public for reuse

### Testing
- **expectBundled.ts**: Added `compileArgv` test support
- **compile-argv.test.ts**: Tests verifying dual behavior

## Behavior

### Complete Dual Functionality

```javascript
// With --compile-argv="--smol --user-agent=TestBot/1.0":

//  Runtime flags actually processed by Bun:
// - Memory usage optimized (--smol effect)  
// - HTTP requests use TestBot/1.0 user agent (--user-agent effect)

//  Flags visible to application:
process.execArgv  // ["--smol", "--user-agent=TestBot/1.0"] 
process.argv      // ["./app", ...script-args] (unchanged)
```

## Backward Compatibility

-  Purely additive feature - no breaking changes
-  Optional flag - existing behavior unchanged when not used
-  No impact on non-compile builds

## Perfect for @thdxr's Use Case!

```bash
# Compile opencode with working user agent
bun build --compile --compile-argv="--user-agent='OpenCode/1.0'" ./opencode.ts --outfile=opencode

# Results in:
# 1. All HTTP requests actually use OpenCode/1.0 user agent 
# 2. process.execArgv contains ["--user-agent=OpenCode/1.0"] for inspection 
```

The user agent will actually work in all HTTP requests made by the
compiled executable, not just be visible as metadata!

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

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

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Claude <claude@anthropic.ai>
2025-08-15 22:28:42 -07:00
taylor.fish
07cd45deae Refactor Zig imports and file structure (part 1) (#21270)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-22 17:51:38 -07:00
robobun
cd54db1e4b Fix Windows cross-compilation missing executable permissions (#21268)
Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-07-21 19:47:00 -07:00
pfg
83760fc446 Sort imports in all files (#21119)
Co-authored-by: taylor.fish <contact@taylor.fish>
2025-07-21 13:26:47 -07:00
jarred-sumner-bot
32ce9a3890 Add Windows PE codesigning support for standalone executables (#21091)
Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-07-15 22:31:54 -07:00
Zack Radisic
ac61b1d471 Use better function names for bun.String (#20999) 2025-07-12 18:19:16 -07:00
Jarred Sumner
454316ffc3 Implement "node:module"'s findSourceMap and SourceMap class (#20863)
Co-authored-by: Claude <claude@anthropic.ai>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2025-07-07 23:08:12 -07:00
Zack Radisic
0b9bab34d8 SSG (#20745)
Co-authored-by: Alistair Smith <hi@alistair.sh>
2025-07-02 20:06:43 -07:00
Jarred Sumner
633f4f593d Ahead-of-time frontend bundling support for HTML imports & bun build (#20511)
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
2025-06-20 19:55:52 -07:00
chloe caruso
3349c995b5 no usingnamespace, organize jsc namespace, enable -fincremental (#19122)
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com>
2025-04-22 16:34:15 -07:00
chloe caruso
4ec410e0d7 internal: make @import("bun") work in zig (#19096) 2025-04-17 12:32:47 -07:00
chloe caruso
903706dccf file descriptor rewrite (#18790) 2025-04-15 09:37:11 -07:00
chloe caruso
c1dc5f1b73 remove some usingnamespaces (#18765) 2025-04-10 14:16:30 -07:00
Jarred Sumner
4806e84cc1 Revert "remove many usingnamespace, introduce new ref count and ref leak debugging tools (#18353)"
This reverts commit a199b85f2b. It does not compile on Windows.
2025-04-01 08:35:51 -07:00
chloe caruso
a199b85f2b remove many usingnamespace, introduce new ref count and ref leak debugging tools (#18353) 2025-03-31 17:17:38 -07:00
Jarred Sumner
f3da1b80bc Use macOS signpost api for tracing (#14871)
Co-authored-by: Jarred-Sumner <Jarred-Sumner@users.noreply.github.com>
Co-authored-by: Don Isaac <donald.isaac@gmail.com>
Co-authored-by: DonIsaac <DonIsaac@users.noreply.github.com>
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2025-03-31 04:13:11 -07:00
190n
de4182f305 chore: upgrade zig to 0.14.0 (#17820)
Co-authored-by: 190n <7763597+190n@users.noreply.github.com>
Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com>
Co-authored-by: pfg <pfg@pfg.pw>
Co-authored-by: pfgithub <6010774+pfgithub@users.noreply.github.com>
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
2025-03-14 22:13:31 -07:00
Pranav Joglekar
4e3c9bc1d1 feat: Support codesigning macOS executables in bun build --compile (#17207)
Co-authored-by: pfg <pfg@pfg.pw>
2025-02-25 01:34:11 -08:00
chloe caruso
b082572dcb DevServer: source map and error modal improvements (#17476) 2025-02-20 16:40:57 -08:00
Jarred Sumner
fad856c03c Support fs.stat, fs.existsSync, fs.readFile, fs.promises.stat, fs.promises.readFile in bun build --compile (#17102)
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com>
2025-02-06 00:06:52 -08:00
chloe caruso
5819fe49a7 node fs compat pr #2 (#16422)
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
Co-authored-by: Meghan Denny <meghan@bun.sh>
Co-authored-by: dylan-conway <35280289+dylan-conway@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-01-21 10:28:35 -08:00
Jarred Sumner
2465ccae53 Re-sync our Mutex implementation with zig stdlib (#16271) 2025-01-08 21:09:27 -08:00
dave caruso
7b3554f90c feat(bundler): add --windows-icon, --windows-no-console, fix bun.exe's main icon (#15894)
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com>
2024-12-20 03:22:16 -08:00
Jarred Sumner
2ccdf0122c Fix edgecase with socketpair() impacting shell and spawn (#15725) 2024-12-12 01:23:40 -08:00
pfg
56f7c8887b Fix unicode imports, unicode-escaped variable names, and printClauseAlias not working for utf-8 (#15009) 2024-11-11 13:27:42 -08:00
Dylan Conway
f374ae6db1 add bun publish (#14215) 2024-10-02 20:47:22 -07:00
Jarred Sumner
2f7ff95e5c Introduce bytecode caching, polish "cjs" bundler output format (#14232)
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com>
2024-09-30 22:37:42 -07:00
snwy
af12ff104a fix utf8 handling when importing json (#14168) 2024-09-25 17:50:11 -07:00
Jarred Sumner
02ff16d95c Support Worker, relative file paths in standalone executables, and partially directories (#13421) 2024-08-20 13:05:40 -07:00
dave caruso
2680deb5d3 feat: bun build --compile --sourcemap (#13047) 2024-08-06 13:51:11 -07:00
Jarred Sumner
cacbaba524 Make signal.abort() from native code fast (#13064) 2024-08-05 15:50:36 -07:00
dave caruso
5137213f86 heavy revision on heap_breakdown's safety (#12445) 2024-07-09 14:29:00 -07:00
Zack Radisic
d563b6485a Use slow move-based fallback for renameatConcurrently (#12048)
Co-authored-by: zackradisic <zackradisic@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-06-21 20:41:22 -07:00
dave caruso
b76376f8a6 chore: upgrade zig to 0.13.0 (#9965)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: Grigory <grigory.orlov.set@gmail.com>
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com>
Co-authored-by: Meghan Denny <hello@nektro.net>
Co-authored-by: Kenta Iwasaki <63115601+lithdew@users.noreply.github.com>
Co-authored-by: John-David Dalton <john.david.dalton@gmail.com>
Co-authored-by: Dale Seo <5466341+DaleSeo@users.noreply.github.com>
Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com>
Co-authored-by: paperdave <paperdave@users.noreply.github.com>
Co-authored-by: Georgijs Vilums <georgijs.vilums@gmail.com>
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
2024-06-20 13:48:39 -07:00
Ciro Spaciari
b8ca523bfb fix(Blob/stream) blob from fetch now reliable returns type, blob name can be set (#11815) 2024-06-13 12:55:41 -07:00
Ciro Spaciari
1d89c5988e refactor OOM errors (#11540) 2024-06-02 22:56:26 -07:00
Meghan Denny
ecb6c810c8 replace [bun.MAX_PATH_BYTES]u8 with bun.PathBuffer (#11162) 2024-05-21 15:55:49 -07:00
Meghan Denny
e45cd749e5 chore(zig): add a new lint for using bun.FD.cwd() (#10683) 2024-05-01 16:12:09 -07:00
Georgijs
5f4c5052d1 fix windows crosscompile to linux and mac (#10751) 2024-05-01 16:07:36 -07:00
Jarred Sumner
9eab12f7b8 Support cross-compilation in bun build --compile (#10477) 2024-04-25 15:34:40 -07:00
dave caruso
a062e2d367 fix(bundler): fix --compile with asset files on windows (#10385)
* fix some bundler things

* buh

* buh

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-04-20 17:13:50 -07:00
dave caruso
c99d7ed331 feat: overhaul the crash handler (#10203)
* some work

* linux things

* linux things

* feat: tracestrings on Windows

* bwaa

* more work on the crash handler

* okay

* adgadsgbcxcv

* ya

* dsafds

* a

* wuh

* a

* bru h

* ok

* yay

* window

* alright

* oops

* yeah

* a

* a

* OOM handling

* fix on window
2024-04-17 15:32:25 -07:00