Skip to content

JIT/AOT: boxed != / !== and VM loose equality (extends #211)#223

Merged
PurHur merged 3 commits into
masterfrom
fix/issue-211-not-equal-identical
May 18, 2026
Merged

JIT/AOT: boxed != / !== and VM loose equality (extends #211)#223
PurHur merged 3 commits into
masterfrom
fix/issue-211-not-equal-identical

Conversation

@PurHur
Copy link
Copy Markdown
Owner

@PurHur PurHur commented May 18, 2026

Summary

Builds on #219 / #90 with additional work for static compilation and web guards:

  • JIT: __value__ vs __value__ strict/loose compare via strcmp and type tags (string route guards).
  • JIT: safer !== for null/bool/native mixes; host gcc preferred for AOT runtime .c compile.
  • VM: PHP-style loose == / != for mixed null/bool/int/string operands.
  • Compliance PHPT aligned with PHP 8.2; unit test for VM edge cases.

Test plan

  • bash script/docker-ci.sh — 227 VM/compliance tests pass
  • LLVM group: pre-existing JIT fixture failures remain (~73)

Closes #211

Made with Cursor

PurHur and others added 3 commits May 18, 2026 17:58
Wire NotEqual/NotIdentical through the compiler and VM, extend JIT lowering for boxed and native operands, and prefer the host C compiler when building the AOT runtime so Docker CI can link web binaries.

Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve conflicts with upstream #211 work, add VM loose equality for mixed-type !=, and fix compliance expectations (no user-function return types in PHPT).

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur PurHur merged commit 73030a9 into master May 18, 2026
@PurHur PurHur deleted the fix/issue-211-not-equal-identical branch May 18, 2026 18:06
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.

Compiler: Not-identical and not-equal operators (!=, !==) parity in JIT

1 participant