Skip to content

Fix Drizzle SQLite class constructor property semantics#4494

Merged
proggeramlug merged 1 commit into
PerryTS:mainfrom
andrewtdiz:codex/node-compat-drizzle-sqlite-hang-20260605
Jun 5, 2026
Merged

Fix Drizzle SQLite class constructor property semantics#4494
proggeramlug merged 1 commit into
PerryTS:mainfrom
andrewtdiz:codex/node-compat-drizzle-sqlite-hang-20260605

Conversation

@andrewtdiz
Copy link
Copy Markdown
Contributor

Summary:

  • avoid treating constructor .prototype backrefs as the object's [[Prototype]], which lets Object.getPrototypeOf(Function.prototype) fall back correctly
  • preserve INT32-tagged class constructor refs when PutValueSet writes dynamic/static properties, so class namespace patterns like SQL.Aliased stay readable and valid for instanceof
  • add focused parity coverage for the constructor walk and class static property assignment paths

Closes #1024
Closes #1069

Validation:

  • cargo check -p perry-runtime
  • cargo build --release -p perry -p perry-runtime -p perry-stdlib
  • PERRY_BIN=/root/perry-worktrees/perry-drizzle-sqlite-hang-20260605/target/release/perry PERRY_NO_AUTO_OPTIMIZE=1 npm exec --yes --package=node@26 -- bash -lc './run_parity_tests.sh --suite node-suite --module object --filter constructor-prototype-chain'
  • PERRY_BIN=/root/perry-worktrees/perry-drizzle-sqlite-hang-20260605/target/release/perry tests/release/packages/_harness.sh --filter drizzle-sqlite
  • cargo fmt --all -- --check
  • git diff --check
  • ./scripts/check_file_size.sh

Non-goal:

  • dynamic new through a class constructor stored on another class remains outside this package fix; the covered contract is property read plus instanceof RHS behavior used by the Drizzle path.

@proggeramlug proggeramlug merged commit af31d85 into PerryTS:main Jun 5, 2026
12 of 14 checks passed
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.

tracking: V8-free compat — close the perry-jsruntime gap for all sweep packages compat: meta-tracker — remaining 5 packages blocking 100% sweep

2 participants