Skip to content

Stdlib: sem_get()/sem_acquire()/sem_release() System V semaphores (#3704) - #18776

Merged
PurHur merged 1 commit into
masterfrom
agent/issue-3704-sysvsem-sem-get
Jul 14, 2026
Merged

PurHur merged 1 commit into
masterfrom
agent/issue-3704-sysvsem-sem-get

Conversation

@PurHur

@PurHur PurHur commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add ext/sysvsem/ module with sem_get(), sem_acquire(), sem_release(), and sem_remove() builtins
  • Follow the ext/sysvshm host-delegation pattern: VM SysvSemaphore objects wrap host handles
  • Register module in Runtime.php and capability matrix; add compliance guard

php-src reference: ext/sysvsem/sysvsem.c (zif_sem_get, zif_sem_acquire, zif_sem_release, zif_sem_remove)

Closes #3704

Test plan

Issue repro + targeted PHPUnit:

php bin/vm.php -r 'var_dump(function_exists("sem_get"), function_exists("sem_acquire"));'
# bool(true) bool(true)

php bin/vm.php test/compliance/cases/stdlib/sem_acquire_release.phpt
# fn / SysvSemaphore / acq / rel / done

vendor/bin/phpunit --filter SysvSemBuiltinTest
# OK (1 test, 1 assertion)

Verification output (2026-07-14):

bool(true)
bool(true)
fn
SysvSemaphore
acq
rel
done
OK (1 test, 1 assertion)

JIT/AOT deferred (VM-only v1, same as #3344 sysvshm).

Made with Cursor

…3704)

Register System V semaphore builtins in PHP following the ext/sysvshm
pattern so frameworks using sem_* IPC can run under bin/vm.php.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit 828421f into master Jul 14, 2026
@PurHur
PurHur deleted the agent/issue-3704-sysvsem-sem-get branch July 14, 2026 05:29
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.

Stdlib: sem_get()/sem_acquire()/sem_release() — System V semaphores (ext/sysvsem parity)

1 participant