Revert back to making XS(name) expose XSUB symbols
authorSteffen Mueller <smueller@cpan.org>
Sun, 28 Aug 2011 15:45:37 +0000 (17:45 +0200)
committerSteffen Mueller <smueller@cpan.org>
Sun, 28 Aug 2011 15:45:37 +0000 (17:45 +0200)
Instead, as Zefram recommended, ExtUtils::ParseXS will be patched
to not export XSUB symbols by default that are generated through
the module itself. As Zefram said, this has the advantage of
allowing older perls to benefit from the non-exporting of symbols.

XSUB.h

diff --git a/XSUB.h b/XSUB.h
index f4623e9..61d0ef2 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -48,16 +48,15 @@ Used to access elements on the XSUB's stack.
 
 =for apidoc AmU||XS
 Macro to declare an XSUB and its C parameter list.  This is handled by
-C<xsubpp>.
+C<xsubpp>. It is the same as using the more explicit XS_EXTERNAL macro.
 
 =for apidoc AmU||XS_INTERNAL
 Macro to declare an XSUB and its C parameter list without exporting the symbols.
 This is handled by C<xsubpp> and generally preferable over exporting the XSUB
-symbols unnecessarily. This is handled by C<xsubpp>.
+symbols unnecessarily.
 
 =for apidoc AmU||XS_EXTERNAL
 Macro to declare an XSUB and its C parameter list explicitly exporting the symbols.
-This is handled by C<xsubpp>.
 
 =for apidoc Ams||dAX
 Sets up the C<ax> variable.
@@ -152,8 +151,9 @@ is a lexical $_ in scope.
 #  endif
 #endif
 
-/* We do not export xsub symbols any more by default */
-#define XS(name) XS_INTERNAL(name)
+/* We do export xsub symbols by default for the public XS macro.
+ * Try explicitly using XS_INTERNAL/XS_EXTERNAL instead, please. */
+#define XS(name) XS_EXTERNAL(name)
 
 #define dAX const I32 ax = (I32)(MARK - PL_stack_base + 1)