This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
backendcritical PriorityID: bun-native-worker-arraybuffer-transfer-guardrail

Bun 1.2 Native Worker ArrayBuffer Zero-Copy Transfer Guardrail

Enforces deterministic ownership transfer of TypedArray underlying ArrayBuffers across Bun 1.2 native workers using explicit transfer lists. Disallows structured-cloning of binary payloads across thread boundaries, which triggers silent native heap re-allocation, uncoordinated dual-ownership, and severe native memory fragmentation under high I/O throughput. Mandates explicit detaching and zero-copy semantics via postMessage transfer lists.

Prohibited Anti-Pattern: Implicit Structured Cloning of Large Binary Buffers Across Worker Boundaries Leading to Native Heap Bloat and Memory Fragmentation

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Bun 1.2 Native Worker ArrayBuffer Zero-Copy Transfer Guardrail - Enforces deterministic ownership transfer of TypedArray underlying ArrayBuffers across Bun 1.2 native workers using explicit transfer lists. Disallows structured-cloning of binary payloads across thread boundaries, which triggers silent native heap re-allocation, uncoordinated dual-ownership, and severe native memory fragmentation under high I/O throughput. Mandates explicit detaching and zero-copy semantics via postMessage transfer lists.
globs: src/**/*.ts, workers/**/*.ts, src/workers/**/*.ts
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/bun-native-worker-arraybuffer-transfer-guardrail"
---

# Bun 1.2 Native Worker ArrayBuffer Zero-Copy Transfer Guardrail

> **Severity**: CRITICAL | **Category**: backend
> **Anti-Pattern Warning**: Implicit Structured Cloning of Large Binary Buffers Across Worker Boundaries Leading to Native Heap Bloat and Memory Fragmentation

## System Constraints
You are a Principal Backend Systems Architect enforcing strict memory and zero-copy invariants in Bun 1.2 runtimes. You must prohibit implicit structured cloning of ArrayBuffers and TypedArrays across worker boundaries. You mandate explicit transfer lists in `postMessage` calls and post-transfer verification to guarantee deterministic memory detachment and prevent unmanaged native memory fragmentation.

## Strict Guidelines
- Engineers MUST ALWAYS supply the underlying `ArrayBuffer` within the transfer array parameter of `worker.postMessage(message, [buffer])` or `self.postMessage(message, [buffer])`.
- Engineers MUST NEVER send TypedArrays (Uint8Array, Float64Array, etc.) across Bun worker boundaries without explicitly extracting and transferring their underlying `.buffer`.
- Services MUST verify that sending buffers are detached (`buffer.byteLength === 0`) immediately following `postMessage` transfer calls to catch accidental transfer omissions in integration pipelines.
- Engineers MUST NOT retain or access references to TypedArrays or ArrayBuffers on the sender thread once ownership has been yielded via a transfer list.
- Workers receiving transferred buffers MUST instantiate a TypedArray view directly over the incoming detached-then-reconstituted `ArrayBuffer` rather than initiating deep copies.

## Bad vs Good Implementations
### Transferring Binary Frames Across Bun 1.2 Native Workers

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Omitting the transfer list parameter in `worker.postMessage` forces Bun's JavaScriptCore runtime to perform a deep structured clone of the binary buffer. For large or high-frequency allocations, this doubles memory footprint, bypasses zero-copy native thread optimizations, and fragments jemalloc/native allocator pools.
```typescript
import { Worker } from 'bun';

const worker = new Worker(new URL('./ingest-worker.ts', import.meta.url).href);

export function dispatchChunk(chunk: Uint8Array, chunkId: string): void {
  // ANTI-PATTERN: Passing typed array directly triggers Bun's native structured clone.
  // This causes a full memory duplication on the native C++ heap and induces severe
  // non-deterministic fragmentation under high packet throughput.
  worker.postMessage({
    chunkId,
    payload: chunk,
  });
  // chunk.buffer is still accessible here, encouraging concurrent mutation hazards
}
```

#### Production Standard (Correct)
> **Standard**: Explicitly passing `rawBuffer` inside the transfer list detaches the `ArrayBuffer` on the host thread instantly (setting `byteLength` to 0) and transfers ownership to the worker with zero heap allocation or memory duplication, preventing native fragmentation.
```typescript
import { Worker } from 'bun';

const worker = new Worker(new URL('./ingest-worker.ts', import.meta.url).href);

export function dispatchChunk(chunk: Uint8Array, chunkId: string): void {
  // INVARIANT: Explicit zero-copy ownership transfer using chunk.buffer
  const rawBuffer = chunk.buffer;

  worker.postMessage(
    {
      chunkId,
      payload: rawBuffer,
      byteOffset: chunk.byteOffset,
      length: chunk.byteLength,
    },
    [rawBuffer]
  );

  // Assert buffer detachment in production/test assertions to guarantee ownership handoff
  if (process.env.NODE_ENV !== 'production' && rawBuffer.byteLength !== 0) {
    throw new Error(`CRITICAL: Buffer detachment failed for chunk ${chunkId}. Memory retained by sender.`);
  }
}
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Bun 1.2 Native Worker ArrayBuffer Zero-Copy Transfer Guardrail

Bun 1.2 Native Worker ArrayBuffer Zero-Copy Transfer Guardrail defines an industrial-grade behavioral standard for backend engineering. Enforces deterministic ownership transfer of TypedArray underlying ArrayBuffers across Bun 1.2 native workers using explicit transfer lists. Disallows structured-cloning of binary payloads across thread boundaries, which triggers silent native heap re-allocation, uncoordinated dual-ownership, and severe native memory fragmentation under high I/O throughput. Mandates explicit detaching and zero-copy semantics via postMessage transfer lists. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Implicit Structured Cloning of Large Binary Buffers Across Worker Boundaries Leading to Native Heap Bloat and Memory Fragmentation Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftImplicit Structured Cloning of Large Binary Buffers Across Worker Boundaries Leading to Native Heap Bloat and Memory FragmentationCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS supply the underlying `ArrayBuffer` within the transfer array parameter of `worker.postMessage(message, [buffer])` or `self.postMessage(message, [buffer])`.

Engineers MUST ALWAYS supply the underlying `ArrayBuffer` within the transfer array parameter of `worker.postMessage(message, [buffer])` or `self.postMessage(message, [buffer])`.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST NEVER send TypedArrays (Uint8Array, Float64Array, etc.) across Bun worker boundaries without explicitly extracting and transferring their underlying `.buffer`.

Engineers MUST NEVER send TypedArrays (Uint8Array, Float64Array, etc.) across Bun worker boundaries without explicitly extracting and transferring their underlying `.buffer`.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Services MUST verify that sending buffers are detached (`buffer.byteLength === 0`) immediately following `postMessage` transfer calls to catch accidental transfer omissions in integration pipelines.

Services MUST verify that sending buffers are detached (`buffer.byteLength === 0`) immediately following `postMessage` transfer calls to catch accidental transfer omissions in integration pipelines.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Engineers MUST NOT retain or access references to TypedArrays or ArrayBuffers on the sender thread once ownership has been yielded via a transfer list.

Engineers MUST NOT retain or access references to TypedArrays or ArrayBuffers on the sender thread once ownership has been yielded via a transfer list.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Workers receiving transferred buffers MUST instantiate a TypedArray view directly over the incoming detached-then-reconstituted `ArrayBuffer` rather than initiating deep copies.

Workers receiving transferred buffers MUST instantiate a TypedArray view directly over the incoming detached-then-reconstituted `ArrayBuffer` rather than initiating deep copies.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Bun 1.2 Native Worker ArrayBuffer Zero-Copy Transfer Guardrail critical for AI coding assistants?

Enforces deterministic ownership transfer of TypedArray underlying ArrayBuffers across Bun 1.2 native workers using explicit transfer lists. Disallows structured-cloning of binary payloads across thread boundaries, which triggers silent native heap re-allocation, uncoordinated dual-ownership, and severe native memory fragmentation under high I/O throughput. Mandates explicit detaching and zero-copy semantics via postMessage transfer lists. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Implicit Structured Cloning of Large Binary Buffers Across Worker Boundaries Leading to Native Heap Bloat and Memory Fragmentation) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Bun