NAME

Devel::CallChecker - custom op checking attached to subroutines

DESCRIPTION

This module makes some new features of the Perl 5.14.0 C API available to
XS modules running on older versions of Perl.  The features are centred
around the function "cv_set_call_checker", which allows XS code to attach
a magical annotation to a Perl subroutine, resulting in resolvable calls
to that subroutine being mutated at compile time by arbitrary C code.
This module makes "cv_set_call_checker" and several supporting functions
available.  (It is possible to achieve the effect of "cv_set_call_checker"
from XS code on much earlier Perl versions, but it is painful to achieve
without the centralised facility.)

This module provides the implementation of the functions at runtime
(on Perls where they are not provided by the core).  It also, at compile
time, supplies the C header file and link library which provide access to
the functions.  In normal use, callchecker0_h and callchecker_linkable
should be called at build time (not authoring time) for the module that
wishes to use the C functions.

The purpose of this module is specifically to provide the Perl 5.14.0
version of the "cv_set_call_checker" API to earlier Perl versions where
the core doesn't have "cv_set_call_checker" at all.  This module does not
attempt to backport later refinements of the "cv_set_call_checker" API.
Thus an XS module that uses this module can be sure of having at least
the Perl 5.14.0 version of "cv_set_call_checker" available, regardless
of which Perl version it is running on, but cannot be sure of having
any more refined version of the API available.  Such a module will have
access to the core's version of the API as normal on Perl versions where
the core supplies it, and is free to use the ordinary mechanisms of Perl
version portability to manage the differences between versions of the API.

INSTALLATION

	perl Build.PL
	./Build
	./Build test
	./Build install

AUTHOR

Andrew Main (Zefram) <zefram@fysh.org>

COPYRIGHT

Copyright (C) 2011, 2012, 2013, 2015, 2017, 2023
Andrew Main (Zefram) <zefram@fysh.org>

LICENSE

This module is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
