• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

extphprs / ext-php-rs
66%

Build:
Build:
LAST BUILD BRANCH: feat/issue-199-primitive-union-types
DEFAULT BRANCH: master
Repo Added 29 Oct 2025 05:59AM UTC
Files 100
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH feat/issue-199-primitive-union-types
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • 102_refs
  • 138_inheritance
  • 173_simple_extends_and_implements
  • 176_getter_test
  • 182_objects_in_props
  • 184_missing_property_types_in_stubs
  • 186_stubs_constants
  • 191_zend_callable
  • 199_union_intersection_dnf
  • 237_zval_flags
  • 252_static_props_and_methods
  • 310_performance
  • 325_static_str
  • 369_better_stubs
  • 424_zval_heap_corruption
  • 492_lit_suffixes_in_defaults
  • 493_feat_sets_in_arguments
  • 499_document_superglobals
  • 502_returning_self
  • 508_php_write
  • 515_ref_mutability
  • 518_cargo_php_install
  • 522_indexmap
  • 523_custom_allocator_and_stubs
  • 525_zend_ht_entry
  • 536_identifiers
  • 537_zend_bailout
  • 538_nullable_param
  • 590_interfaces
  • 599-add-performance-test-infrastructure
  • abstract_methods
  • add-grpc-php-rs
  • add-sapi-send-headers
  • add-sapi-zts-test
  • cargo_watch
  • chore/add-coc
  • chore/bump-edition-2024
  • chore/cargo-php-stubs-tests
  • chore/context7
  • chore/php-8-5
  • chore/php-86-nightly
  • ci/musl
  • ci/zts-embed
  • codspeed-wizard-1776277848593
  • customize-guide-logo
  • dependabot/cargo/convert_case-0.10.0
  • dependabot/cargo/convert_case-0.11.0
  • dependabot/cargo/convert_case-0.9.0
  • dependabot/cargo/darling-0.23
  • dependabot/cargo/libloading-0.9
  • dependabot/cargo/zip-7.0
  • dependabot/cargo/zip-8.0
  • dependabot/github_actions/JamesIves/github-pages-deploy-action-4.7.4
  • dependabot/github_actions/JamesIves/github-pages-deploy-action-4.7.6
  • dependabot/github_actions/JamesIves/github-pages-deploy-action-4.8.0
  • dependabot/github_actions/actions/cache-5
  • dependabot/github_actions/actions/checkout-6
  • dependabot/github_actions/actions/github-script-8
  • dependabot/github_actions/actions/github-script-9
  • dependabot/github_actions/actions/upload-artifact-7
  • dependabot/github_actions/dawidd6/action-download-artifact-19
  • dependabot/github_actions/dawidd6/action-download-artifact-20
  • dependabot/github_actions/dawidd6/action-download-artifact-21
  • dependabot/github_actions/docker/build-push-action-7
  • dependabot/github_actions/docker/setup-buildx-action-4
  • docs/move-showcase-to-awesome
  • embed-zts
  • feat/cache-slot-property-lookup
  • feat/cargo-llvm-cov
  • feat/embed-php-code
  • feat/error-observer
  • feat/interface_impl
  • feat/issue-199-primitive-union-types
  • feat/module-globals
  • feat/observer-api
  • feat/sapi-trait-and-zts
  • feat/separated-phpref-types
  • feat/static-property-descriptors
  • feat/zend-extension
  • feat/zero-alloc-fast-path
  • feat/zval-ref-deref-inline
  • feat_immutable_empty_array
  • feat_zval_coercion
  • fix-valid-method-name
  • fix-windows-symbols
  • fix/184-property-type-stubs
  • fix/729-binary-interned-heap-corruption
  • fix/bencher-host
  • fix/binary-return-memory-leak
  • fix/cargo-php-install-musl
  • fix/ci-badge-workflow-reference
  • fix/clang-arm64-preserve-none
  • fix/clippy--
  • fix/clippy-1-93-0
  • fix/clippy-1-95-0
  • fix/clippy-hasher
  • fix/clippy-rust-1-91
  • fix/cloning-class
  • fix/deploy-doc
  • fix/disable-zts-embed
  • fix/github-templates
  • fix/mock-unint
  • fix/module-entry-memory-leak
  • fix/musl-8-5-build
  • fix/null-pointer-sapi-trampolines
  • fix/parking-lot-min-version
  • fix/releaze-plz-workflow
  • fix/releaze-plz-workflow-permission
  • fix/segfault-empy-array
  • fix/use-fork-bindgen
  • fix/windows-bindgen-nommx
  • fix/windows-dev-pack
  • fix/windows-link-attr-without-rustfmt
  • fix_prop_visibility
  • fix_stub_gen
  • hotload
  • json_serializable
  • lazy
  • master
  • named_arguments
  • patch-1
  • perf/precompute-mangled-property-names
  • perf/zend-string-init-fast
  • raw-dylib-fix
  • readonly_class
  • release-plz-2025-10-29T06-23-17Z
  • release-plz-2025-10-29T13-44-17Z
  • release-plz-trigger
  • release-plz-trigger-v2
  • release-plz-trigger-v3
  • remove-php80-testing
  • showcase
  • smartstring
  • trusted-publishing

05 May 2026 03:27PM UTC coverage: 72.479% (+6.2%) from 66.241%
25385695435

Pull #734

github

ptondereau
fix(tests): wrap PHP function handlers in zend_fastcall! for windows

FunctionHandler resolves to extern "C" on unix and to
extern "vectorcall" on windows. The new compound-type integration
handlers (class union, intersection, DNF, primitive union) and the
src/builders/function.rs noop_handler test helper were declared
as plain extern "C", which only matches the unix alias and so
failed to type-check on windows with E0308.

Wrap each handler in zend_fastcall! { ... }, the same macro
closure.rs and builders/class.rs already use. The macro rewrites
the ABI to vectorcall on windows and stays C on unix.

Also gates the noop_handler helper behind cfg(php83) since the
tests that consume it are all PHP 8.3+ (class union, intersection,
DNF return types).

Drops a redundant `#![cfg_attr(windows, feature(abi_vectorcall))]`
attribute inside src/describe/mod.rs's tests module: inner
`feature` attributes only take effect at the crate root, so it was
a no-op that produced "the `#![feature]` attribute can only be
used at the crate root" on every windows compile. The crate root
already enables the feature in src/lib.rs.
Pull Request #734: feat!: PHP 8 union, intersection, DNF, and class-union type hints

2871 of 3074 new or added lines in 21 files covered. (93.4%)

3 existing lines in 2 files now uncovered.

11514 of 15886 relevant lines covered (72.48%)

33.34 hits per line

Relevant lines Covered
Build:
Build:
15886 RELEVANT LINES 11514 COVERED LINES
33.34 HITS PER LINE
Source Files on master
  • Tree
  • List 100
  • Changed 20
  • Source Changed 20
  • Coverage Changed 18
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
25385695435 feat/issue-199-primitive-union-types fix(tests): wrap PHP function handlers in zend_fastcall! for windows FunctionHandler resolves to extern "C" on unix and to extern "vectorcall" on windows. The new compound-type integration handlers (class union, intersection, DNF, primitive union... Pull #734 05 May 2026 03:32PM UTC ptondereau github
72.48
25385697263 feat/issue-199-primitive-union-types Merge 5570a519f into 0912e7c24 Pull #734 05 May 2026 03:31PM UTC web-flow github
72.48
25385163029 feat/issue-199-primitive-union-types fix(tests,builders): wrap PHP function handlers in zend_fastcall! for windows FunctionHandler resolves to extern "C" on unix and to extern "vectorcall" on windows. The new compound-type integration handlers (class union, intersection, DNF, primit... Pull #734 05 May 2026 03:22PM UTC ptondereau github
72.48
25385167900 feat/issue-199-primitive-union-types Merge 32bbe056f into 0912e7c24 Pull #734 05 May 2026 03:21PM UTC web-flow github
72.48
25381118290 feat/issue-199-primitive-union-types fix(builders): wrap noop_handler in zend_fastcall! for windows The cfg(php83) test helper noop_handler in src/builders/function.rs was declared as `extern "C"`, which only matches FunctionHandler on unix. On windows the type alias is `extern "vec... Pull #734 05 May 2026 02:05PM UTC ptondereau github
72.48
25381120600 feat/issue-199-primitive-union-types Merge 020092c75 into 0912e7c24 Pull #734 05 May 2026 02:05PM UTC web-flow github pending completion  
25379640517 feat/issue-199-primitive-union-types ci(build): skip cargo test on macOS until libphp is available shivammathur/setup-php's Homebrew formulas (NTS php@x.y and -debug-zts) do not ship a libphp shared library at <php-config --prefix>/lib. With macos-latest now running macos-15 (ld-pri... Pull #734 05 May 2026 01:38PM UTC ptondereau github
72.48
25379160470 feat/issue-199-primitive-union-types fix(build): bail when EXT_PHP_RS_LINK_LIBPHP=1 but libphp is absent The previous probe silently skipped emitting -lphp when no libphp shared library was found at <prefix>/lib, on the assumption that .cargo/config.toml's `-Wl,-undefined,dynamic_lo... Pull #734 05 May 2026 01:29PM UTC ptondereau github
72.48
25379163335 feat/issue-199-primitive-union-types Merge 889e3cde4 into 0912e7c24 Pull #734 05 May 2026 01:28PM UTC web-flow github
72.48
25376262349 feat/issue-199-primitive-union-types fix(build): probe libphp before emitting -lphp on force_link The previous cleanup assumed the only "ships php-config but no libphp.dylib at <prefix>/lib" layout was the Alpine PHP Docker image, which the musl matrix no longer tests. Homebrew's `p... Pull #734 05 May 2026 12:29PM UTC ptondereau github
72.48
See All Builds (955)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc