Skip to content

Extend ConstrainedGenerationSession with rollback, jump-forward, and direct bitmask fill - #131

Merged
stikves merged 4 commits into
apple:mainfrom
stikves:sukru/constrained-session-extensions
Jul 31, 2026
Merged

Extend ConstrainedGenerationSession with rollback, jump-forward, and direct bitmask fill#131
stikves merged 4 commits into
apple:mainfrom
stikves:sukru/constrained-session-extensions

Conversation

@stikves

@stikves stikves commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

New methods for constrained generation:

  • rollback(_:) — unwind grammar state by N tokens (default budget: 64)
  • findJumpForwardString() — peek at deterministic continuations
  • fillBitmask(into:) → BitmaskResult — write bitmask directly into a caller-provided pointer (e.g. GPU-visible MTLBuffer), avoiding array allocation per token
  • BitmaskResult enum: .terminated, .unconstrained, .constrained
  • C bridge additions: XGrammarRollback, XGrammarFindJumpForwardString, XGrammarFillNextTokenBitmask

Part 1 of 4 for GPU-based constrained sampling (#114).

@stikves stikves self-assigned this Jul 31, 2026
@stikves
stikves force-pushed the sukru/constrained-session-extensions branch from b504d3d to c94798c Compare July 31, 2026 15:52
…direct bitmask fill

- rollback(_:) — unwind grammar state by N tokens (budget: 64)
- findJumpForwardString() — peek at deterministic continuations
- fillBitmask(into:) → BitmaskResult — write bitmask directly into
  a caller-provided pointer (e.g. GPU-visible MTLBuffer), avoiding
  array allocation per token
- BitmaskResult enum: .terminated, .unconstrained, .constrained
- C bridge additions: XGrammarRollback, XGrammarFindJumpForwardString,
  XGrammarFillNextTokenBitmask

Part 1 of 4 for GPU-based constrained sampling (apple#114).
@stikves
stikves force-pushed the sukru/constrained-session-extensions branch from c94798c to 9b507bc Compare July 31, 2026 15:55

@carinapeng carinapeng left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for breaking this down! Please consider the comments before merging :)

@stikves
stikves force-pushed the sukru/constrained-session-extensions branch from 6695020 to ad7c77a Compare July 31, 2026 18:22
@stikves
stikves force-pushed the sukru/constrained-session-extensions branch from ad7c77a to 4d8189a Compare July 31, 2026 18:24
@stikves
stikves force-pushed the sukru/constrained-session-extensions branch 2 times, most recently from acc7fd6 to 977ad20 Compare July 31, 2026 19:29
@stikves
stikves merged commit 49becc6 into apple:main Jul 31, 2026
3 checks passed
@stikves
stikves deleted the sukru/constrained-session-extensions branch July 31, 2026 22:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants