Skip to content

Reclaim BASIC strings on restart - #4

Open
treeform wants to merge 1 commit into
masterfrom
string-restarts
Open

treeform wants to merge 1 commit into
masterfrom
string-restarts

Conversation

@treeform

Copy link
Copy Markdown
Owner

Repeated script decisions retain dead native strings after restart(), eventually exhausting the VM's bounded string storage. Reclaim them inside Bassy while preserving globals, arrays, host data, and cached literals. Scratch space is reserved during runtime initialization and included in the memory budget.

Adds withString for scoped, validated access to a string's bytes without allocating a temporary Nim string. Hosts must not mutate or restart the VM inside that block. String Values retained by host code must be fetched again after a restart because compaction remaps their handles.

This lets Polyworld remove its private-access string-memory adapter and use the regular VM API for game-owned mailboxes.

Validation: nim check and the full debug, release, and C++ release test suites pass. The original determinism digests are unchanged. Tests cover 1,000 restarts, persistent globals/arrays/host data, borrowed substrings, empty strings, and stale handle rejection.

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.

1 participant