Skip to content

ABI: implement exact JSFunction source and tier-up controls #222

Description

@chrisbbreuer

Parent: #134
Profile umbrella: #140
Home inventory: #163
Bun inventory: #164
Builds on: #221

Implement the pinned shared private-JSC exports:

  • JSC__JSFunction__getSourceCode
  • JSC__JSFunction__optimizeSoon

Acceptance criteria:

  • Return the exact parser-captured source span for ordinary functions, arrows, methods, generators, async functions, and class constructors without invoking user code.
  • Return false for native, bound, non-function, invalid, and exception cells while leaving the output unchanged.
  • Publish a stable group-lifetime ZigString view with exact Latin-1/UTF-16 tagging and UTF-16 length.
  • Make optimizeSoon schedule the next invocation of an eligible bytecode function for native-tier consideration without compiling synchronously.
  • Leave already-ready/rejected tiers, tree-walk functions, native/bound functions, invalid values, and pending VM exceptions unchanged.
  • Focused tests cover source fidelity, Unicode source, rejection cases, next-invocation tier transition, VM ownership, and exception neutrality.
  • Extend the Home consumer fixture and publish exact Home/Bun inventory, ABI documentation, README, and parent counts.
  • Batch the focused test, consumer fixture, both private audits, and C-API classification before publishing.
  • Leave benchmark scores unchanged unless a benchmark path is rerun.

Completed evidence

Implemented on main in a30b91b8; pinned inventories, ABI documentation, and README counts were published in 12ff7451. Source retrieval now returns parser-exact group-lifetime ZigString views for ordinary, arrow, method, generator, async, Unicode, and class functions while rejecting native, bound, non-function, invalid, and exception cells without output mutation. Tier-up requests remain scheduling-only and prime the next eligible cold bytecode invocation without synchronous allocation or code generation; settled tiers and ineligible functions remain unchanged.

The intentionally batched verification passed 15/15: focused tests passed 3/3 with zero leaks, the Home fixture linked and exercised 203/203 symbols, Home is 204/431 (227 pending), Bun core is 198/421 (223 pending), and the public audit reports 117 public, 19 extensions, and 208 private/support exports. Benchmark scores remain unchanged because no benchmark path was affected or rerun.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions