Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XS(3)		      User Contributed Perl Documentation		 XS(3)

NAME
       Readonly::XS - Companion	module for Readonly.pm,	to speed up read-only
       scalar variables.

VERSION
       This document describes version 1.05 of Readonly::XS, February 24,
       2009.

SYNOPSIS
	 Install this module, but do not use it.

DESCRIPTION
       The Readonly module (q.v.) is an	effective way to create	non-modifiable
       variables.  However, it's relatively slow.

       The reason it's slow is that is implements the read-only-ness of
       variables via tied objects.  This mechanism is inherently slow.	Perl
       simply has to do	a lot of work under the	hood to	make tied variables
       work.

       This module corrects the	speed problem, at least	with respect to	scalar
       variables.  When	Readonly::XS is	installed, Readonly uses it to access
       the internals of	scalar variables.  Instead of creating a scalar
       variable	object and tying it, Readonly simply flips the SvREADONLY bit
       in the scalar's FLAGS structure.

       Readonly	arrays and hashes are not sped up by this, since the
       SvREADONLY flag only works for scalars.	Arrays and hashes always use
       the tie interface.

       Why implement this as a separate	module?	 Because not everyone can use
       XS.  Not	everyone has a C compiler.  Also, installations	with a
       statically-linked perl may not want to recompile	their perl binary just
       for this	module.	 Rather	than render Readonly.pm	useless	for
	these people, the XS portion was put into a separate module.

       Programs	that you write do not need to know whether Readonly::XS	is
       installed or not.  They should just "use	Readonly" and let Readonly
       worry about whether or not it can use XS.  If the Readonly::XS is
       present,	Readonly will be faster.  If not, it won't.  Either way, it
       will still work,	and your code will not have to change.

       Your program can	check whether Readonly.pm is using XS or not by
       examining the $Readonly::XSokay variable.  It will be true if the XS
       module was found	and is being used.  Please do not change this
       variable.

   EXPORTS
       None.

SEE ALSO
       Readonly.pm

AUTHOR / COPYRIGHT
       Eric Roode, roode@cpan.org

       Copyright (c) 2003-2009 by Eric J. Roode. All Rights Reserved.  This
       module is free software;	you can	redistribute it	and/or modify it under
       the same	terms as Perl itself.

       To avoid	my spam	filter,	please include "Perl", "module", or this
       module's	name in	the message's subject line, and/or GPG-sign your
       message.

perl v5.32.0			  2009-02-24				 XS(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | SEE ALSO | AUTHOR / COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Readonly::XS&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help