Devel::PPPort(3perl)
๐ Devel::PPPort ๐
okay bestie, gather round, because this is Devel::PPPort โ the Perl/Pollution/Portability module, straight from the Perl Programmers Reference Guide section of your friendly neighborhood manual. it's giving "your XS code works on ancient Perls too" and honestly? iconic. โจ
โจ NAME โจ
Devel::PPPort โ Perl/Pollution/Portability ๐ฆ
๐ธ SYNOPSIS ๐ธ
look at this gorgeous little snippet, no notes:
Devel::PPPort::WriteFile(); # defaults to ./ppport.h
Devel::PPPort::WriteFile('someheader.h');
# Same as above but retrieve contents rather than write file
my $contents = Devel::PPPort::GetFileContents();
my $contents = Devel::PPPort::GetFileContents('someheader.h');
and here's how you actually start using Devel::PPPort for XS projects, step by step bestie:
$ cpan Devel::PPPort
$ perl -MDevel::PPPort -e'Devel::PPPort::WriteFile'
$ perl ppport.h --compat-version=5.6.1 --patch=diff.patch *.xs
$ patch -p0 < diff.patch
$ echo ppport.h >>MANIFEST
๐ DESCRIPTION ๐
so here's the tea ๐: Perl's API has changed over time. it keeps gaining new features, new functions, more flexibility, and it's been reducing the impact on the C namespace environment (that's the whole "reduced pollution" thing, iykyk). the header file this module writes โ usually called ppport.h โ tries its absolute best to bring some of those newer Perl API features to older versions of Perl. which means you can worry less about keeping track of every old release ever, while your users still get to reap the benefit. main character energy for everybody involved, honestly. ๐
Devel::PPPort contains two functions: WriteFile and GetFileContents. WriteFile's only purpose in life is to write the ppport.h C header file. that file contains a series of macros and โ if you explicitly ask for them โ functions that let XS modules be built using older versions of Perl. currently, Perl versions from 5.003_07 to 5.35.9 are supported. periodt. โญ
GetFileContents can be used to retrieve the file contents rather than writing it out.
this module is used by h2xs to write the file ppport.h. ๐
๐ง Why use ppport.h? ๐ง
you should use ppport.h in modern code so your code works with the widest range of Perl interpreters possible, without significant additional work. no cap, that's just free real estate.
you should attempt to get older code to fully use ppport.h, because the reduced pollution of newer Perl versions is an important thing. it's so important that the old polluting ways of original Perl modules will not be supported very far into the future, and your module will almost certainly break! ๐ญ so by adapting to it now, you'll gain compatibility and a sense of having done the electronic ecology some good. look at you, saving the ecosystem, so proud. ๐
๐ How to use ppport.h ๐
do not direct the users of your module to download Devel::PPPort. they are most probably not XS writers, bestie, don't do that to them. also, don't make ppport.h optional. instead, just take the most recent copy of ppport.h that you can find (e.g. by generating it with the latest Devel::PPPort release from CPAN), copy it into your project, adjust your project to use it, test it, and distribute the header along with your module. slay. โจ
it is important to use the most recent version of ppport.h. but you do need to test before shipping a newer version than the one you already had. one possible failure is that someone had to convert a backported element from a macro into a function, and actual functions must be enabled with a NEED macro to minimize the possibility of namespace pollution. see HACKERS for details. the developers of Devel::PPPort want to hear if there are other problems that arise from using a later ppport.h. use <https://github.com/Dual-Life/Devel-PPPort/issues> to report any. ๐ซถ
๐ Running ppport.h ๐
but ppport.h is more than just a C header. it's also a Perl script that can check your source code! ๐ it will suggest hints and portability notes, and can even make suggestions on how to change your code. you can run it like any other Perl program:
perl ppport.h [options] [files]
it also has embedded documentation, so you can use
perldoc ppport.h
to find out more about how to use it. ๐ฆ
๐ FUNCTIONS ๐
โจ WriteFile โจ
WriteFile takes one optional argument. when called with one argument, it expects to be passed a filename. when called with no arguments, it defaults to the filename ppport.h.
the function returns a true value if the file was written successfully. otherwise it returns a false value. ๐
๐ GetFileContents ๐
GetFileContents behaves like WriteFile above, but returns the contents of the would-be file rather than writing it out. same vibes, no actual file left behind. ๐ธ
๐ฅ COMPATIBILITY ๐ฅ
ppport.h supports Perl versions from 5.003_07 to 5.35.9 in threaded and non-threaded configurations. yes, both. we don't play favorites. ๐
๐ Provided Perl compatibility API ๐
the header file written by this module, typically ppport.h, provides access to the following elements of the Perl API that are not otherwise available in Perl releases older than when those elements were first introduced. (note that many of these are not supported all the way back to 5.003_07, but it may be that they are supported back as far as you need โ see "Supported Perl API, sorted by version" for that information.) โญ
more coming, bestie, don't go anywhere ๐
okay bestie, the roll call is NOT over, and honestly she is barely getting warmed up ๐
so grab your iced coffee, because this is the rest of the guest list: every single macro, function, and variable that Devel::PPPort will lovingly back-fill for you so your XS code doesn't crumble on an ancient Perl. No descriptions down here โ these are just the names, alphabetized, iconic, unbothered. ๐
โจ the underscore-and-a girlies โจ
Leading underscore? Cute. Lowercase a? Also cute. This is where the context macros and the array helpers chill.
_aMY_CXT
aMY_CXT
aMY_CXT_
__ASSERT_
ASSUME
aTHX
aTHX_
aTHXR
aTHXR_
av_count
AvFILLp
av_tindex
av_top_index
๐ฆ the B section (she's tiny and she knows it) ๐ฆ
Literally two entries. Main character energy in a very small package.
BOM_UTF8
boolSV
๐ the C section: callers, warnings, and cops ๐
This is where the call_* squad hangs out, plus the entire ckWARN/ck_warner warning family, the Cop* accessors, and the croak_* crew (they're dramatic, they throw, that's the vibe).
call_argv
caller_cx
call_method
call_pv
call_sv
C_ARRAY_END
C_ARRAY_LENGTH
cBOOL
ckWARN
ckWARN2
ckWARN2_d
ckWARN3
ckWARN3_d
ckWARN4
ckWARN4_d
ckWARN_d
ck_warner
ck_warner_d
CopFILE
CopFILEAV
CopFILEGV
CopFILEGV_set
CopFILE_set
CopFILESV
CopSTASH
CopSTASH_eq
CopSTASHPV
CopSTASHPV_set
CopSTASH_set
CopyD
CPERLscope
croak_memory_wrap
croak_nocontext
croak_no_modify
croak_sv
croak_xs_usage
๐ the d-prefixed declaration squad ๐
Every single one of these starts with a lowercase d and honestly? That's the whole personality. Declarations, setup, and scaffolding โ the backstage crew making your XS function even exist.
dAX
dAXMARK
DECLARATION_FOR_LC_NUMERIC_MANIPULATION
DEFSV
DEFSV_set
die_sv
dITEMS
dMY_CXT
dMY_CXT_SV
dNOOP
dTHR
dTHX
dTHXa
dTHXoa
dTHXR
dUNDERBAR
dVAR
dXCPT
dXSTARG
๐ธ E is for eval, extern, and โจerrorโจ energy ๐ธ
Short and spicy. Four of these are about calling into Perl from C, one's about closing an extern "C" block, and ERRSV is just there, judging.
END_EXTERN_C
ERRSV
eval_pv
eval_sv
EXTERN_C
๐ซถ F stands alone ๐ซถ
One (1) entry. She doesn't need company. She's doing case-folding-adjacent business and she's thriving.
foldEQ_utf8
๐ the G section: getters, grokkers, and gv-things ๐
We love a section that starts with get_ and ends with globs. There's a whole grok_* subsection in here because sometimes you just gotta parse a number string, iykyk.
get_av
get_cv
get_cvn_flags
get_cvs
get_hv
get_sv
G_METHOD
G_RETHROW
grok_bin
grok_hex
grok_number
GROK_NUMERIC_RADIX
grok_numeric_radix
grok_oct
gv_fetchpvn_flags
gv_fetchpvs
gv_fetchsv
gv_init_pvn
gv_stashpvn
gv_stashpvs
GvSVn
๐ the H section: hashes, hek keys, and hv-stuff ๐
Tiny, mighty, and extremely hv_-flavored.
HEf_SVKEY
HeUTF8
hv_fetchs
HvNAME_get
HvNAMELEN_get
hv_stores
๐ the I section, part one: locale flags + the ctype cinematic universe ๐
Bestie. Look at this. The is* macros are their own franchise โ and it's only getting bigger in the next chunk. Buckle in. ๐
IN_LOCALE
IN_LOCALE_COMPILETIME
IN_LOCALE_RUNTIME
IN_PERL_COMPILETIME
INT2PTR
isALNUM
isALNUM_A
isALNUMC
isALNUMC_A
isALNUMC_L1
isALPHA
isALPHA_A
isALPHA_L1
isALPHA_LC_utf8_safe
isALPHANUMERIC
isALPHANUMERIC_A
isALPHANUMERIC_L1
isALPHANUMERIC_LC
isALPHANUMERIC_LC_utf8_safe
isALPHANUMERIC_utf8_safe
isALPHANUMERIC_uvchr
isALPHA_utf8_safe
isALPHA_uvchr
isASCII
isASCII_A
isASCII_L1
isASCII_LC
isASCII_utf8_safe
isASCII_uvchr
isBLANK
isBLANK_A
isBLANK_L1
isBLANK_LC
isBLANK_LC_utf8_safe
isBLANK_utf8_safe
isBLANK_uvchr
isCNTRL
isCNTRL_A
isCNTRL_L1
isCNTRL_LC_utf8_safe
isCNTRL_utf8_safe
isCNTRL_uvchr
isDIGIT
isDIGIT_A
isDIGIT_L1
isDIGIT_LC_utf8_safe
isDIGIT_utf8_safe
isDIGIT_uvchr
isGRAPH
isGRAPH_A
isGRAPH_L1
isGRAPH_LC_utf8_safe
isGRAPH_utf8_safe
isGRAPH_uvchr
๐ the I section, part two: the ctype saga continues ๐
Same franchise, second season. We've got the number-parsing flags, the isID/isWORD/isX family, and then the IV descriptors showing up right at the end like "hey, we're also vowels." ๐ญ
isGV_with_GP
isIDCONT
isIDCONT_A
isIDCONT_L1
isIDCONT_LC
isIDCONT_LC_utf8_safe
isIDCONT_utf8_safe
isIDCONT_uvchr
isIDFIRST
isIDFIRST_A
isIDFIRST_L1
isIDFIRST_LC
isIDFIRST_LC_utf8_safe
isIDFIRST_utf8_safe
isIDFIRST_uvchr
is_invariant_string
isLOWER
isLOWER_A
isLOWER_L1
isLOWER_LC_utf8_safe
isLOWER_utf8_safe
isLOWER_uvchr
IS_NUMBER_GREATER_THAN_UV_MAX
IS_NUMBER_INFINITY
IS_NUMBER_IN_UV
IS_NUMBER_NAN
IS_NUMBER_NEG
IS_NUMBER_NOT_INT
isOCTAL
isOCTAL_A
isOCTAL_L1
isPRINT
isPRINT_A
isPRINT_L1
isPRINT_LC_utf8_safe
isPRINT_utf8_safe
isPRINT_uvchr
isPSXSPC
isPSXSPC_A
isPSXSPC_L1
isPSXSPC_LC_utf8_safe
isPSXSPC_utf8_safe
isPSXSPC_uvchr
isPUNCT
isPUNCT_A
isPUNCT_L1
isPUNCT_LC_utf8_safe
isPUNCT_utf8_safe
isPUNCT_uvchr
isSPACE
isSPACE_A
isSPACE_L1
isSPACE_LC_utf8_safe
isSPACE_utf8_safe
isSPACE_uvchr
isUPPER
isUPPER_A
isUPPER_L1
isUPPER_LC_utf8_safe
isUPPER_utf8_safe
isUPPER_uvchr
isUTF8_CHAR
is_utf8_invariant_string
isWORDCHAR
isWORDCHAR_A
isWORDCHAR_L1
isWORDCHAR_LC
isWORDCHAR_LC_utf8_safe
isWORDCHAR_utf8_safe
isWORDCHAR_uvchr
isXDIGIT
isXDIGIT_A
isXDIGIT_L1
isXDIGIT_LC
isXDIGIT_LC_utf8_safe
isXDIGIT_utf8_safe
isXDIGIT_uvchr
IVdf
IVSIZE
IVTYPE
โจ the L section: locales, likelihood, and loading โจ
Radio edit: seven entries, all bangers.
LATIN1_TO_NATIVE
LC_NUMERIC_LOCK
LC_NUMERIC_UNLOCK
LIKELY
load_module
LOCK_LC_NUMERIC_STANDARD
LOCK_NUMERIC_STANDARD
๐ง the M section: memory, memcmp-flavored macros, and MY_CXT ๐ง
Look at how many m-prefixed push macros there are. mPUSHi, mPUSHn, mPUSHp, mPUSHs, mPUSHu โ and then their louder cousins with an X in the middle. Siblings behavior. Also MY_CXT makes a cameo at the end. ๐
memCHRs
memEQ
memEQs
memNE
memNEs
mess
mess_nocontext
mess_sv
mg_findext
MoveD
mPUSHi
mPUSHn
mPUSHp
mPUSHs
mPUSHu
MUTABLE_AV
MUTABLE_CV
MUTABLE_GV
MUTABLE_HV
MUTABLE_IO
MUTABLE_PTR
MUTABLE_SV
mXPUSHi
mXPUSHn
mXPUSHp
mXPUSHs
mXPUSHu
MY_CXT
MY_CXT_CLONE
MY_CXT_INIT
my_snprintf
my_sprintf
my_strlcat
my_strlcpy
my_strnlen
๐ the N section: new-SV factory + string functions you already know and love ๐
newSVpvn brought all her variants to the party โ flags, share, utf8, you name it. Also the Newx/Newxc/Newxz trio, because allocation is a lifestyle.
NATIVE_TO_LATIN1
NATIVE_TO_UNI
newCONSTSUB
newRV_inc
newRV_noinc
newSVpvn
newSVpvn_flags
newSVpvn_share
newSVpvn_utf8
newSVpvs
newSVpvs_flags
newSVpvs_share
newSVsv_flags
newSVsv_nomg
newSV_type
newSVuv
Newx
Newxc
Newxz
NOOP
NOT_REACHED
NUM2PTR
NVef
NVff
NVgf
NVTYPE
๐ฆ the O section: op sibling drama ๐ฆ
Five entries, all about ops and their siblings. Family therapy but in C macros.
OpHAS_SIBLING
OpLASTSIB_set
OpMAYBESIB_set
OpMORESIB_set
OpSIBLING
๐ the P section, part one: pack warnings, Perl wrappers, and the magic constants begin ๐
PERL_MAGIC_* is a lot of named magic. She's thorough. We respect it. ๐
packWARN
packWARN2
packWARN3
packWARN4
PERL_ABS
PERL_ARGS_ASSERT_CROAK_XS_USAGE
Perl_ck_warner
Perl_ck_warner_d
Perl_croak_no_modify
PERL_HASH
PERL_INT_MAX
PERL_INT_MIN
PERLIO_FUNCS_CAST
PERLIO_FUNCS_DECL
PERL_LONG_MAX
PERL_LONG_MIN
PERL_MAGIC_arylen
PERL_MAGIC_backref
PERL_MAGIC_bm
PERL_MAGIC_collxfrm
PERL_MAGIC_dbfile
PERL_MAGIC_dbline
PERL_MAGIC_defelem
PERL_MAGIC_env
PERL_MAGIC_envelem
PERL_MAGIC_ext
PERL_MAGIC_fm
PERL_MAGIC_glob
PERL_MAGIC_isa
PERL_MAGIC_isaelem
PERL_MAGIC_mutex
PERL_MAGIC_nkeys
PERL_MAGIC_overload
PERL_MAGIC_overload_elem
PERL_MAGIC_overload_table
PERL_MAGIC_pos
PERL_MAGIC_qr
PERL_MAGIC_regdata
PERL_MAGIC_regdatum
PERL_MAGIC_regex_global
PERL_MAGIC_shared
PERL_MAGIC_shared_scalar
PERL_MAGIC_sig
PERL_MAGIC_sigelem
PERL_MAGIC_substr
PERL_MAGIC_sv
PERL_MAGIC_taint
PERL_MAGIC_tied
PERL_MAGIC_tiedelem
PERL_MAGIC_tiedscalar
PERL_MAGIC_utf8
PERL_MAGIC_uvar
PERL_MAGIC_uvar_elem
PERL_MAGIC_vec
PERL_MAGIC_vstring
๐ the P section, part two: pretty-dump flags, scan flags, and the SIZE CONSTANT ZONE ๐
We're in full uppercase mode now and honestly it's giving "preprocessor directive" realness. Also the PERL_VERSION_* comparison macros show up right before the PL_* variables do, like a little intermission. โญ
PERL_PV_ESCAPE_ALL
PERL_PV_ESCAPE_FIRSTCHAR
PERL_PV_ESCAPE_NOBACKSLASH
PERL_PV_ESCAPE_NOCLEAR
PERL_PV_ESCAPE_QUOTE
PERL_PV_ESCAPE_RE
PERL_PV_ESCAPE_UNI
PERL_PV_ESCAPE_UNI_DETECT
PERL_PV_PRETTY_DUMP
PERL_PV_PRETTY_ELLIPSES
PERL_PV_PRETTY_LTGT
PERL_PV_PRETTY_NOCLEAR
PERL_PV_PRETTY_QUOTE
PERL_PV_PRETTY_REGPROP
PERL_QUAD_MAX
PERL_QUAD_MIN
PERL_SCAN_ALLOW_UNDERSCORES
PERL_SCAN_DISALLOW_PREFIX
PERL_SCAN_GREATER_THAN_UV_MAX
PERL_SCAN_SILENT_ILLDIGIT
PERL_SHORT_MAX
PERL_SHORT_MIN
PERL_SIGNALS_UNSAFE_FLAG
PERL_STACK_OFFSET_DEFINED
PERL_STACK_REALIGN
PERL_STATIC_INLINE
PERL_UCHAR_MAX
PERL_UCHAR_MIN
PERL_UINT_MAX
PERL_UINT_MIN
PERL_ULONG_MAX
PERL_ULONG_MIN
PERL_UNUSED_ARG
PERL_UNUSED_CONTEXT
PERL_UNUSED_DECL
PERL_UNUSED_RESULT
PERL_UNUSED_VAR
PERL_UQUAD_MAX
PERL_UQUAD_MIN
PERL_USE_GCC_BRACE_GROUPS
PERL_USHORT_MAX
PERL_USHORT_MIN
PERL_VERSION_EQ
PERL_VERSION_GE
PERL_VERSION_GT
PERL_VERSION_LE
PERL_VERSION_LT
PERL_VERSION_NE
๐ the P section, part three: the PL_* global variables ๐
Warning: this is a long list of interpreter globals and it's about to be followed by even more p-prefixed things. She's committed. ๐ญ
Perl_warner
Perl_warner_nocontext
PL_bufend
PL_bufptr
PL_compiling
PL_copline
PL_curcop
PL_curstash
PL_DBsignal
PL_DBsingle
PL_DBsub
PL_DBtrace
PL_debstash
PL_defgv
PL_diehook
PL_dirty
PL_dowarn
PL_errgv
PL_error_count
PL_expect
PL_hexdigit
PL_hints
PL_in_my
PL_in_my_stash
PL_laststatval
PL_lex_state
PL_lex_stuff
PL_linestr
PL_mess_sv
PL_na
PL_no_modify
PL_parser
PL_perldb
PL_perl_destruct_level
PL_ppaddr
PL_rsfp
PL_rsfp_filters
PL_signals
PL_stack_base
PL_stack_sp
PL_statcache
PL_stdingv
PL_Sv
PL_sv_arenaroot
PL_sv_no
PL_sv_undef
PL_sv_yes
PL_tainted
PL_tainting
PL_tokenbuf
PL_Xpv
๐ the P section, finale: context params, pointers, poisons, and pretty-printers ๐
Tiny leading underscores (_pMY_CXT, pMY_CXT, pMY_CXT_), then the whole Poison* set, then the pTHX twins, then all the PTR2* conversions, then PUSH*, and finally the three pv_* pretty-print helpers. Chef's kiss ending. ๐
_pMY_CXT
pMY_CXT
pMY_CXT_
Poison
PoisonFree
PoisonNew
PoisonWith
pTHX
pTHX_
PTR2IV
PTR2nat
PTR2NV
PTR2ul
PTR2UV
PTRV
PUSHmortal
PUSHu
pv_display
pv_escape
pv_pretty
๐ the R section is two entries and one of them is in all caps ๐
REPLACEMENT_CHARACTER_UTF8
RESTORE_LC_NUMERIC
๐ธ and finally, the S section ๐ธ
Saving, stack offsets, extern-C bookends, MY_CXT setup, statements-as-expressions, and two very important locale/numeric STORE macros to close us out. She ended the list on a high note, fr fr. ๐ซถ
SAVE_DEFSV
Stack_off_t
Stack_off_t_MAX
START_EXTERN_C
START_MY_CXT
start_subparse
STMT_END
STMT_START
STORE_LC_NUMERIC_SET_STANDARD
STORE_NUMERIC_SET_STANDARD
STR_WITH_LENsv_2pvsv_2pvbytesv_2pvbyte_nolensv_2pv_flagssv_2pv_nolensv_2uvsv_catpvf_mgsv_catpvf_mg_nocontextsv_catpv_mgsv_catpvn_mgsv_catpvn_nomgsv_catpvssv_catsv_mgsv_catsv_nomgSV_CONST_RETURNSV_COW_DROP_PVSV_COW_SHARED_HASH_KEYSSVfSVfARGSVf_UTF8SvGETMAGICSV_GMAGICSV_HAS_TRAILING_NULSV_IMMEDIATE_UNREFSvIV_nomgsv_len_utf8sv_len_utf8_nomgsv_magic_portableSvMAGIC_setsv_mortalcopy_flagsSV_MUTABLE_RETURNSV_NOSTEALSvNV_nomgSvPVbyteSvPVCLEARSvPV_constSvPV_flagsSvPV_flags_constSvPV_flags_const_nolenSvPV_flags_mutableSvPV_forceSvPV_force_flagsSvPV_force_flags_mutableSvPV_force_flags_nolenSvPV_force_mutableSvPV_force_nolenSvPV_force_nomgSvPV_force_nomg_nolenSvPV_mutablesv_pvn_force_flagssv_pvn_nomgSvPV_nolenSvPV_nolen_constSvPV_nomgSvPV_nomg_constSvPV_nomg_const_nolenSvPV_nomg_nolenSvPV_renewSvPVX_constSvPVX_mutableSvPVx_nolen_constSvREFCNT_dec_NNSvREFCNT_incSvREFCNT_inc_NNSvREFCNT_inc_simpleSvREFCNT_inc_simple_NNSvREFCNT_inc_simple_voidSvREFCNT_inc_simple_void_NNSvREFCNT_inc_voidSvREFCNT_inc_void_NNSvRV_setSvRXSvRXOKsv_setiv_mgsv_setnv_mgsv_setpvf_mgsv_setpvf_mg_nocontextsv_setpv_mgsv_setpvn_mgsv_setpvssv_setsv_flagssv_setsv_mgsv_setsv_nomgsv_setuvsv_setuv_mgSvSHARED_HASHSV_SMAGICSvSTASH_setSvTRUE_nomgsv_unmagicextSvUOKsv_usepvn_mgSvUTF8SV_UTF8_NO_ENCODINGsv_uvSvUVSvUV_nomgSvUV_setSvUVXSvUVxSvUVXxsv_vcatpvfsv_vcatpvf_mgSvVOKsv_vsetpvfsv_vsetpvf_mgSvVSTRINGsv_vstring_getSvVSTRING_mgswitch_to_global_localesync_localetoFOLD_utf8_safetoFOLD_uvchrtoLOWER_utf8_safetoLOWER_uvchrtoTITLE_utf8_safetoTITLE_uvchrtoUPPER_utf8_safetoUPPER_uvchrUNDERBARUNICODE_REPLACEMENTUNI_TO_NATIVEUNLIKELYUNLOCK_LC_NUMERIC_STANDARDUNLOCK_NUMERIC_STANDARDUTF8_CHK_SKIPUTF8fUTF8fARGUTF8_IS_INVARIANTUTF8_MAXBYTESUTF8_MAXBYTES_CASEUTF8_SAFE_SKIPUTF8_SKIPutf8_to_uvchrutf8_to_uvchr_bufUVCHR_IS_INVARIANTUVCHR_SKIPUVofUVSIZEUVTYPEUVufUVXfUVxfvload_modulevmessvnewSVpvfvwarnerWARN_ALLWARN_AMBIGUOUSWARN_ASSERTIONSWARN_BAREWORDWARN_CLOSEDWARN_CLOSUREWARN_DEBUGGINGWARN_DEPRECATEDWARN_DIGITwarnerWARN_EXECWARN_EXITINGWARN_GLOBWARN_INPLACEWARN_INTERNALWARN_IOWARN_LAYERWARN_MALLOCWARN_MISCWARN_NEWLINEwarn_nocontextWARN_NUMERICWARN_ONCEWARN_OVERFLOWWARN_PACKWARN_PARENTHESISWARN_PIPEWARN_PORTABLEWARN_PRECEDENCEWARN_PRINTFWARN_PROTOTYPEWARN_QWWARN_RECURSIONWARN_REDEFINEWARN_REGEXPWARN_RESERVEDWARN_SEMICOLONWARN_SEVEREWARN_SIGNALWARN_SUBSTRwarn_svWARN_SYNTAXWARN_TAINTWARN_THREADSWARN_UNINITIALIZEDWARN_UNOPENEDWARN_UNPACKWARN_UNTIEWARN_UTF8WARN_VOIDWIDEST_UTYPEXCPT_CATCHXCPT_RETHROWXCPT_TRY_ENDXCPT_TRY_STARTXPUSHmortalXPUSHuXSprePUSHXSPROTOXSRETURNXSRETURN_UVXST_mUVZeroD
๐ Supported Perl API, sorted by version ๐
okay bestie, this next bit is the full buffet, but sorted by which perl release first blessed us with it โจ. The list below has literally everything โ every API element that exists, all of it โ including the stuff ppport.h is out here helping you with and the stuff it does absolutely nothing about. No gatekeeping here, we tell you about the whole squad ๐ซถ
Now, some of these are just... not gonna time-travel for you, and that's not a skill issue, it's a physics issue. Like, UTF-8 functionality? It genuinely does not exist prior to the release where it was first introduced. Nothing to backport, the code wasn't born yet ๐ญ
But other ones? It's purely that nobody has implemented support yet. So if you're feeling generous: patches welcome! ๐ Some elements got ported backward for some releases, but not all the way back to 5.003_07. Sad but true.
If some element โ call it ELEMENT โ isn't showing up on this list, you can sleuth it out yourself with:
perl ppport.h --api-info=ELEMENT
A few entries below are tagged DEPRECATED. Do not use those in new code, and if you've got them chilling in existing code, you should be migrating them to something better. Respectfully, move on ๐
Some entries are tagged "experimental". That means, generally speaking, don't use them. They can get yanked or rewritten with zero notice, no cap. Curious why one of them is experimental? Email the crew at <mailto:perl5-porters@perl.org> ๐ง
And some entries are tagged "undocumented". That's your signal that they are not necessarily considered stable and could be changed or removed in some future release without warning. So yeah, using them without further checking is a bad idea, periodt. Could be they're perl-core-use-only ๐. Or could be that Devel::PPPort just doesn't know where their docs live, or that it's simply an oversight that nobody documented them yet. Either way, if you want to use one โ and maybe even get it backported โ send mail to <mailto:perl5-porters@perl.org> first ๐
๐ธ perl 5.35.9
NV_ZERO_IS_ALLBITS_ZEROPERL_INC_VERSION_LISTsv_numeqsv_numeq_flagssv_streqsv_streq_flagsUSE_C_BACKTRACEWARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURESWARN_EXPERIMENTAL__BUILTIN
๐ธ perl 5.35.8
op_wrap_finallyโ (marked experimental)
๐ธ perl 5.35.7
phase_name
๐ธ perl 5.35.6
CopFILEAVnsv_setpvn_fresh
๐ธ perl 5.35.5
SAVESTRLENWARN_EXPERIMENTAL__FOR_LIST
๐ธ perl 5.35.4
newDEFEROPโ (marked experimental)PERL_THREAD_LOCALST_DEV_SIGNST_DEV_SIZESvIsBOOLsv_setboolsv_setbool_mgsv_setrv_incsv_setrv_inc_mgsv_setrv_noincsv_setrv_noinc_mgWARN_EXPERIMENTAL__DEFER
๐ธ perl 5.35.1
av_new_allocHAS_FFSHAS_FFSLHAS_NL_LANGINFO_LHAS_NON_INT_BITFIELDSHAS_STRXFRM_LnewAV_alloc_xnewAV_alloc_xz
๐ธ perl 5.33.8
cophh_exists_pvโ (marked experimental)cophh_exists_pvnโ (marked experimental)cophh_exists_pvsโ (marked experimental)cophh_exists_svโ (marked experimental)cop_hints_exists_pvcop_hints_exists_pvncop_hints_exists_pvscop_hints_exists_sv
๐ธ perl 5.33.7
newTRYCATCHOPโ (marked experimental)WARN_EXPERIMENTAL__TRY
๐ธ perl 5.33.5
GETENV_PRESERVES_OTHER_THREADpad_compname_typeโ (DEPRECATED)
๐ธ perl 5.33.2
pack_catโ (DEPRECATED)
๐ธ perl 5.32.1
GDBMNDBM_H_USES_PROTOTYPESHAS_DBMINIT_PROTOHAS_SOCKADDR_STORAGEI_DBMI_NDBMNDBM_H_USES_PROTOTYPES
๐ธ perl 5.31.9
UNI_DISPLAY_BACKSPACE
๐ธ perl 5.31.7
HASATTRIBUTE_ALWAYS_INLINEHAS_ISLESSHAS_WCRTOMBsv_isa_svโ (marked experimental)WARN_EXPERIMENTAL__ISA
๐ธ perl 5.31.5
isALPHANUMERIC_utf8isALPHA_utf8isASCII_utf8isBLANK_utf8isCNTRL_utf8isDIGIT_utf8isGRAPH_utf8isIDCONT_utf8isIDFIRST_utf8isLOWER_utf8isPRINT_utf8isPSXSPC_utf8isPUNCT_utf8isSPACE_utf8isUPPER_utf8isWORDCHAR_utf8isXDIGIT_utf8toFOLD_utf8toLOWER_utf8toTITLE_utf8toUPPER_utf8
๐ธ perl 5.31.4
cop_fetch_labelโ (marked experimental)cop_store_labelโ (marked experimental)sv_2pvbyte_flagsโ (undocumented)sv_2pvutf8_flagsโ (undocumented)sv_nolockingโ (DEPRECATED)SvPVbyte_nomgSvPVbyte_or_nullSvPVbyte_or_null_nomgSvPVutf8_nomgSvPVutf8_or_nullSvPVutf8_or_null_nomgsv_utf8_downgrade_flagssv_utf8_downgrade_nomg
๐ธ perl 5.31.3
parse_subsignatureโ (marked experimental)SANE_ERRSVSTORE_LC_NUMERIC_SET_TO_NEEDED_INWITH_LC_NUMERIC_SET_TO_NEEDEDWITH_LC_NUMERIC_SET_TO_NEEDED_IN
๐ธ perl 5.29.10
my_strtodStrtod
๐ธ perl 5.29.9
HAS_TOWLOWERHAS_TOWUPPERI_WCTYPEWARN_EXPERIMENTAL__PRIVATE_USEWARN_EXPERIMENTAL__UNIPROP_WILDCARDSWARN_EXPERIMENTAL__VLB
๐ธ perl 5.27.11
HAS_DUPLOCALEHAS_STRTOD_L
๐ธ perl 5.27.9
PERL_MAGIC_nonelemthread_locale_initโ (marked experimental) (undocumented)thread_locale_termโ (marked experimental) (undocumented)utf8n_to_uvchr_msgsuvchr_to_utf8_flags_msgsWARN_EXPERIMENTAL__ALPHA_ASSERTIONS
๐ธ perl 5.27.8
HAS_ACCEPT4HAS_DUP3HAS_MKOSTEMPHAS_PIPE2newWHENOPWARN_EXPERIMENTAL__SCRIPT_RUN
๐ธ perl 5.27.7
WARN_SHADOW
๐ธ perl 5.27.6
HAS_MBRLENHAS_MBRTOWCHAS_NANOSLEEPHAS_STRNLENHAS_STRTOLD_LHAS_THREAD_SAFE_NL_LANGINFO_LI_WCHARwrap_keyword_pluginโ (marked experimental)
๐ธ perl 5.27.5
HAS_MEMRCHR
perl 5.27.4
okay so we're officially in the dev-release hours now, and here's what perl 5.27.4 handed us:
HAS_FCHMODATHAS_LINKATHAS_OPENATHAS_RENAMEATHAS_UNLINKATmg_freeextPerl_langinfosv_rvunweaken
look at all those *AT probes fr fr, the whole at-family showed up together like a girl group ๐
perl 5.27.3
cv_get_call_checker_flagsPL_sv_zerosv_string_from_errnum
perl 5.27.2
Perl_setlocaleUNICODE_DISALLOW_PERL_EXTENDEDUNICODE_WARN_PERL_EXTENDEDUTF8_DISALLOW_PERL_EXTENDEDUTF8_GOT_PERL_EXTENDEDUTF8_WARN_PERL_EXTENDED
a whole little PERL_EXTENDED family, adorable โจ
perl 5.27.1
is_utf8_invariant_string_loc
perl 5.25.11
DEFAULT_INC_EXCLUDES_DOT
perl 5.25.10
op_class
perl 5.25.9
isASCII_LC_utf8_safe
perl 5.25.8
sv_set_undef
perl 5.25.7
CLEAR_ERRSVDOUBLE_HAS_NEGATIVE_ZERODOUBLE_HAS_SUBNORMALSDOUBLE_STYLE_IEEELONG_DOUBLE_STYLE_IEEELONG_DOUBLE_STYLE_IEEE_EXTENDEDutf8_hop_backutf8_hop_forwardutf8_hop_safe
float nitty-gritty AND the hop family?? a stacked release ngl ๐ธ
perl 5.25.6
DOUBLE_IS_CRAY_SINGLE_64_BITDOUBLE_IS_IBM_DOUBLE_64_BITDOUBLE_IS_IBM_SINGLE_32_BITis_c9strict_utf8_stringis_c9strict_utf8_string_locis_c9strict_utf8_string_loclenis_strict_utf8_stringis_strict_utf8_string_locis_strict_utf8_string_loclenis_utf8_fixed_width_buf_flagsis_utf8_fixed_width_buf_loc_flagsis_utf8_fixed_width_buf_loclen_flagsis_utf8_string_flagsis_utf8_string_loc_flagsis_utf8_string_loclen_flagsSvPVCLEARsv_setpv_bufsizeUTF8_GOT_CONTINUATIONUTF8_GOT_EMPTYUTF8_GOT_LONGUTF8_GOT_NONCHARUTF8_GOT_NON_CONTINUATIONUTF8_GOT_OVERFLOWUTF8_GOT_SHORTUTF8_GOT_SUPERUTF8_GOT_SURROGATEutf8n_to_uvchr_error
this is a BIG one bestie, the entire UTF8_GOT_* set ate ๐ญ๐
perl 5.25.5
isC9_STRICT_UTF8_CHARisSTRICT_UTF8_CHARisUTF8_CHAR_flagsis_utf8_valid_partial_charis_utf8_valid_partial_char_flagsUNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGEUNICODE_WARN_ILLEGAL_C9_INTERCHANGEUTF8_DISALLOW_ILLEGAL_C9_INTERCHANGEUTF8_WARN_ILLEGAL_C9_INTERCHANGE
perl 5.25.4
HAS_GAI_STRERRORI_XLOCALELONG_DOUBLE_IS_VAX_H_FLOAT
perl 5.25.3
DOUBLE_HAS_INFDOUBLE_HAS_NANDOUBLE_IS_VAX_D_FLOATDOUBLE_IS_VAX_F_FLOATDOUBLE_IS_VAX_G_FLOAThv_bucket_ratio(marked experimental)WARN_EXPERIMENTAL__DECLARED_REFS
ngl the (marked experimental) tag is your little warning sticker โ the API's still cooking, so handle with care ๐
perl 5.25.2
HAS_STRERROR_L
perl 5.25.1
op_parent
perl 5.24.0
HAS_MEMMEM
perl 5.23.9
HAS_FREELOCALEHAS_NEWLOCALEHAS_USELOCALE
perl 5.23.8
clear_defarray(undocumented)HAS_SIGINFO_SI_ADDRHAS_SIGINFO_SI_BANDHAS_SIGINFO_SI_ERRNOHAS_SIGINFO_SI_PIDHAS_SIGINFO_SI_STATUSHAS_SIGINFO_SI_UIDHAS_SIGINFO_SI_VALUEleave_adjust_stacks(marked experimental) (undocumented)Perl_savetmps(undocumented)
perl 5.23.6
LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BELONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LELONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BELONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LEUNICODE_DISALLOW_ABOVE_31_BITUNICODE_WARN_ABOVE_31_BIT
perl 5.23.5
HAS_FSTATFSHAS_FSTATVFSHAS_GETMNTENTHAS_HASMNTOPTHAS_STRUCT_STATFSHAS_STRUCT_STATFS_F_FLAGSHAS_USTATI_MNTENTI_SYS_MOUNTI_SYS_STATFSI_SYS_STATVFSI_SYS_VFSI_USTATsv_ref
mount-table girlies rise up ๐ซถ
perl 5.23.2
INT64_CUINT64_CUTF8_IS_NONCHARUTF8_IS_SUPERUTF8_IS_SURROGATE
perl 5.23.0
DOUBLEINFBYTESDOUBLEMANTBITSDOUBLENANBYTESLONGDBLINFBYTESLONGDBLMANTBITSLONGDBLNANBYTESNVMANTBITS
perl 5.21.10
DECLARATION_FOR_LC_NUMERIC_MANIPULATIONRESTORE_LC_NUMERICSTORE_LC_NUMERIC_FORCE_TO_UNDERLYINGSTORE_LC_NUMERIC_SET_TO_NEEDED
perl 5.21.9
HAS_LLRINTLHAS_LLROUNDLHAS_LRINTLHAS_LROUNDLWARN_EXPERIMENTAL__BITWISE
perl 5.21.8
sv_get_backrefs(marked experimental)WARN_EXPERIMENTAL__CONST_ATTRWARN_EXPERIMENTAL__RE_STRICT
perl 5.21.7
HAS_REGCOMPHAS_STATI_GDBMI_GDBMNDBMnewPADNAMELIST(marked experimental)newPADNAMEouter(marked experimental)newPADNAMEpvn(marked experimental)newUNOP_AUXpadnamelist_fetch(marked experimental)PadnamelistREFCNT(marked experimental)PadnamelistREFCNT_dec(marked experimental)padnamelist_store(marked experimental)PadnameREFCNT(marked experimental)PadnameREFCNT_dec(marked experimental)PADNAMEt_OUTER
the padname era is upon us and it's giving experimental, every single one ๐
perl 5.21.6
block_endblock_startDOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIANDOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIANDOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIANDOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIANDOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIANDOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIANDOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LEDOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BEDOUBLE_IS_UNKNOWN_FORMATDOUBLEKINDHAS_ASINHHAS_ATANHHAS_CBRTHAS_COPYSIGNHAS_ERFHAS_ERFCHAS_EXP2HAS_EXPM1HAS_FDIMHAS_FMAHAS_FMAXHAS_FMINHAS_HYPOTHAS_ILOGBHAS_ISNORMALHAS_LGAMMAHAS_LGAMMA_RHAS_LLRINTHAS_LLROUNDHAS_LOG1PHAS_LOG2HAS_LOGBHAS_LRINTHAS_LROUNDHAS_NANHAS_NEARBYINTHAS_NEXTAFTERHAS_NEXTTOWARDHAS_REMAINDERHAS_REMQUOHAS_RINTHAS_ROUNDHAS_SCALBNHAS_TGAMMAHAS_TRUNCintro_mynewDEFSVOPop_convert_listWARN_LOCALE
full math library arc unlocked, no cap ๐ the HAS_* math probes really said "we're all in this together"
perl 5.21.5
cv_nameCV_NAME_NOTQUALHAS_LC_MONETARY_2008newMETHOPnewMETHOP_namedPERL_MAGIC_debugvarPERL_MAGIC_lvrefSV_CATBYTESSV_CATUTF8WARN_EXPERIMENTAL__REFALIASING
perl 5.21.4
CALL_CHECKER_REQUIRE_GVcv_set_call_checker_flagsgrok_infnanHAS_ACOSHHAS_FEGETROUNDHAS_FPCLASSIFYHAS_ISFINITEHAS_ISINFLHAS_J0HAS_J0LHAS_TRUNCLI_FENVisinfnanI_STDINTPerl_acosPerl_asinPerl_atanPerl_coshPerl_log10Perl_sinhPerl_tanPerl_tanh
perl 5.21.3
HAS_LDEXPLLONG_DOUBLE_IS_DOUBLELONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIANLONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIANLONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIANLONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIANLONG_DOUBLE_IS_UNKNOWN_FORMATLONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIANLONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIANLONG_DOUBLEKINDPerl_ldexp
perl 5.21.2
grok_number_flagsop_sibling_splicePERL_SCAN_TRAILINGWARN_MISSINGWARN_REDUNDANT
perl 5.21.1
HAS_BACKTRACEHAS_DLADDRHAS_PTRDIFF_THAS_WCSCMPHAS_WCSXFRMI_EXECINFOmarkstack_grow(undocumented)
perl 5.19.10
OP_TYPE_IS_OR_WAS
perl 5.19.9
WARN_EXPERIMENTAL__SIGNATURES
perl 5.19.7
OP_TYPE_IS
perl 5.19.5
WARN_EXPERIMENTAL__POSTDEREF
perl 5.19.4
IS_SAFE_SYSCALLis_safe_syscallWARN_SYSCALLS
perl 5.19.3
PERL_EXIT_ABORTPERL_EXIT_WARNsv_pos_b2u_flags
perl 5.19.2
G_METHOD_NAMED
perl 5.19.1
toFOLDtoFOLD_AtoLOWER_AtoLOWER_L1toTITLEtoTITLE_AtoUPPER_A
casing helper supremacy ๐
perl 5.18.0
hv_rand_set(undocumented)
perl 5.17.11
WARN_EXPERIMENTAL__SMARTMATCH
perl 5.17.8
isALPHANUMERIC_LC_uvchrisIDCONT_LC_uvchrWARN_EXPERIMENTAL__REGEX_SETS
perl 5.17.7
isALNUMC_LC_uvchrisASCII_LC_uvchrisBLANK_LC_uvchrisPSXSPC_LC_uvchrisWORDCHAR_LC_uvchrisXDIGIT_LC_uvchrSvREFCNT_dec_NNSvTRUE_NNSvTRUE_nomg_NN
perl 5.17.6
READ_XDIGIT
perl 5.17.5
WARN_EXPERIMENTAL__LEXICAL_SUBS
perl 5.17.4
GV_SUPERHAS_IP_MREQ_SOURCEnewMYSUB(undocumented)newSVpadname(marked experimental)PadARRAY(marked experimental)PadlistARRAY(marked experimental)PadlistMAX(marked experimental)PadlistNAMES(marked experimental)PadlistNAMESARRAY(marked experimental)PadlistNAMESMAX(marked experimental)PadlistREFCNT(marked experimental)PadMAX(marked experimental)PadnameLEN(marked experimental)PadnamelistARRAY(marked experimental)PadnamelistMAX(marked experimental)PadnamePV(marked experimental)PadnameSV(marked experimental)PadnameUTF8(marked experimental)PL_comppad_name(marked experimental)WARN_EXPERIMENTAL
okay the Pad* takeover here is iconic and also lowkey terrifying, everything's flagged experimental, proceed with your whole chest but read the warnings first bestie ๐ญ
perl 5.17.2
HAS_IP_MREQPERL_RELOCATABLE_INCsv_copypv_flagssv_copypv_nomgsv_vcatpvfn_flags
perl 5.17.1
alloccopstash(marked experimental)CopSTASHPV_set
perl 5.16.0
CopLABEL_lenCopLABEL_len_flags
perl 5.15.8
HAS_IPV6_MREQHAS_SOCKADDR_IN6is_utf8_char_bufwrap_op_checker
perl 5.15.7
HAS_ISBLANK
perl 5.15.6
newCONSTSUB_flags
โจ perl 5.15.4 โจ
Fresh drops from the mothership, bestie ๐:
gv_autoload_pv(undocumented)gv_autoload_pvn(undocumented)gv_autoload_sv(undocumented)gv_fetchmethod_pv_flags(marked experimental) (undocumented)gv_fetchmethod_pvn_flags(marked experimental) (undocumented)gv_fetchmethod_sv_flags(marked experimental) (undocumented)gv_fetchmeth_pvgv_fetchmeth_pv_autoloadgv_fetchmeth_pvngv_fetchmeth_pvn_autoloadgv_fetchmeth_svgv_fetchmeth_sv_autoloadgv_init_pvgv_init_svHvENAMELENHvENAMEUTF8HvNAMELENHvNAMEUTF8newGVgen_flags(undocumented)sv_derived_from_pvsv_derived_from_pvnsv_derived_from_svsv_does_pvsv_does_pvnsv_does_svwhichsig_pvwhichsig_pvnwhichsig_sv
๐ซ perl 5.15.3 ๐ซ
GV_ADDMGgv_fetchsv_nomgGV_NO_SVGMAGICI_STDBOOLQUAD_IS___INT64
๐ธ perl 5.15.2 ๐ธ
ST_INO_SIGNST_INO_SIZEXS_EXTERNAL(undocumented)XS_INTERNAL(undocumented)
๐ฆ perl 5.15.1 ๐ฆ
cv_clonepad_add_anonpad_add_name_pvpad_add_name_pvnpad_add_name_pvspad_add_name_svpad_alloc(marked experimental)pad_findmy_pvpad_findmy_pvnpad_findmy_pvspad_findmy_svpad_newpad_tidy(marked experimental)
๐ perl 5.13.10 ๐
WARN_NONCHARWARN_NON_UNICODEWARN_SURROGATE
๐ perl 5.13.9 ๐
HAS_SIN6_SCOPE_IDPERL_PV_ESCAPE_NONASCIIUNICODE_DISALLOW_ILLEGAL_INTERCHANGEUNICODE_DISALLOW_NONCHARUNICODE_DISALLOW_SUPERUNICODE_DISALLOW_SURROGATEUNICODE_IS_NONCHARUNICODE_IS_SUPERUNICODE_WARN_ILLEGAL_INTERCHANGEUNICODE_WARN_NONCHARUNICODE_WARN_SUPERUNICODE_WARN_SURROGATEUTF8_DISALLOW_ILLEGAL_INTERCHANGEUTF8_DISALLOW_NONCHARUTF8_DISALLOW_SUPERUTF8_DISALLOW_SURROGATEUTF8_WARN_ILLEGAL_INTERCHANGEUTF8_WARN_NONCHARUTF8_WARN_SUPERUTF8_WARN_SURROGATE
๐ perl 5.13.8 ๐
parse_arithexpr(marked experimental)parse_fullexpr(marked experimental)parse_listexpr(marked experimental)parse_termexpr(marked experimental)
๐ฅ perl 5.13.7 ๐ฅ
okay this one is a whole meal, look at her go:
amagic_deref_call(undocumented)bytes_cmp_utf8cophh_2hv(marked experimental)cophh_copy(marked experimental)cophh_delete_pv(marked experimental)cophh_delete_pvn(marked experimental)cophh_delete_pvs(marked experimental)cophh_delete_sv(marked experimental)cophh_fetch_pv(marked experimental)cophh_fetch_pvn(marked experimental)cophh_fetch_pvs(marked experimental)cophh_fetch_sv(marked experimental)cophh_free(marked experimental)COPHH_KEY_UTF8cophh_new_empty(marked experimental)cophh_store_pv(marked experimental)cophh_store_pvn(marked experimental)cophh_store_pvs(marked experimental)cophh_store_sv(marked experimental)cop_hints_2hvcop_hints_fetch_pvcop_hints_fetch_pvncop_hints_fetch_pvscop_hints_fetch_svdirp_dup(undocumented)HvENAMElex_start(marked experimental)newFOROPnewWHILEOPOP_CLASSop_lvalue(marked experimental)op_scope(marked experimental)parse_barestmt(marked experimental)parse_block(marked experimental)parse_label(marked experimental)PARSE_OPTIONALPerl_custom_op_register(undocumented)PL_phaseXopDISABLEXopENABLEXopENTRYXopENTRYCUSTOMXopENTRY_setXopFLAGS
๐ perl 5.13.6 ๐
she's giving โจmaximalistโจ and we respect it:
ck_entersub_args_listck_entersub_args_protock_entersub_args_proto_or_listcv_get_call_checkercv_set_call_checkergv_fetchpvnlex_stuff_pv(marked experimental)LINKLISTload_module_nocontextmg_free_typenewSVpv_shareop_append_elemop_append_listop_contextualizeop_linklistop_prepend_elemparse_stmtseq(marked experimental)PERL_MAGIC_checkcallrv2cv_op_cvRV2CVOPCV_MARK_EARLYRV2CVOPCV_RETURN_NAME_GVsave_pushi32ptr(undocumented)save_pushptrptr(undocumented)savesharedpvssavesharedsvpvsv_catpv_flagssv_catpv_nomgsv_catpvs_flagssv_catpvs_mgsv_catpvs_nomgsv_cmp_flagssv_cmp_locale_flagssv_collxfrm_flagssv_eq_flagssv_setpvs_mgsv_setref_pvs
๐ง perl 5.13.5 ๐ง
hv_copy_hints_hvlex_stuff_pvs(marked experimental)parse_fullstmt(marked experimental)PL_rpeeppsave_hints(undocumented)
โญ perl 5.13.4 โญ
HAS_STATIC_INLINEPERL_STATIC_INLINEXS_APIVERSION_BOOTCHECK
๐ perl 5.13.3 ๐
Perl_blockhook_register(undocumented)
๐ perl 5.13.2 ๐
find_rundefsvfoldEQfoldEQ_localePerl_clone_params_del(undocumented)Perl_clone_params_new(undocumented)Perl_hv_fill(undocumented)sv_dec_nomgsv_dup_inc(undocumented)sv_inc_nomg
๐ธ perl 5.13.1 ๐ธ
sv_2nv_flags
๐ perl 5.13.0 ๐
HAS_PRCTLHAS_PRCTL_SET_NAME
๐ perl 5.11.5 ๐
sv_pos_u2b_flags
๐ฆ perl 5.11.4 ๐ฆ
prescan_versionWARN_ILLEGALPROTO
โจ perl 5.11.2 โจ
CHARBITSENTER_with_nameLEAVE_with_namelex_bufutf8(marked experimental)lex_discard_to(marked experimental)lex_grow_linestr(marked experimental)LEX_KEEP_PREVIOUSlex_next_chunk(marked experimental)lex_peek_unichar(marked experimental)lex_read_space(marked experimental)lex_read_to(marked experimental)lex_read_unichar(marked experimental)lex_stuff_pvn(marked experimental)lex_stuff_sv(marked experimental)LEX_STUFF_UTF8lex_unstuff(marked experimental)PL_keyword_plugin(marked experimental)toLOWER_LATIN1
๐ perl 5.11.0 ๐
gv_add_by_type(undocumented)Gv_AMupdate(undocumented)is_ascii_stringis_invariant_stringis_utf8_invariant_stringPL_opfreehookPUSH_MULTICALLre_dup_gutssave_adelete(undocumented)save_aelem_flags(undocumented)save_hdelete(undocumented)save_helem_flags(undocumented)setdefoutSV_FORCE_UTF8_UPGRADESvOOK_offsetSVt_REGEXPsv_utf8_upgrade_flags_growWARN_IMPRECISION
๐ perl 5.10.1 ๐
these _rless siblings are doing a lot, bestie:
GMTIME_MAXGMTIME_MINHASATTRIBUTE_DEPRECATEDHAS_BUILTIN_EXPECTHAS_GETADDRINFOHAS_GETNAMEINFOHAS_INETNTOPHAS_INETPTONHAS_TIMEGMHvMROMETAI_SYS_POLLLOCALTIME_MAXLOCALTIME_MINMRO_GET_PRIVATE_DATANV_OVERFLOWS_INTEGERS_ATPerl_mro_get_from_name(undocumented)Perl_mro_register(undocumented)Perl_mro_set_mro(undocumented)Perl_mro_set_private_data(undocumented)PERL_USE_DEVELSAVEFREEOPsave_op(undocumented)save_padsv_and_mortalize(undocumented)save_pushptr(undocumented)sv_insert_flags
๐ฅ perl 5.10.0 ๐ฅ
the _r era begins, periodt:
HAS_ASCTIME_RHAS_CRYPT_RHAS_CTIME_RHAS_DRAND48_RHAS_GETGRENT_RHAS_GETGRGID_RHAS_GETGRNAM_RHAS_GETHOSTBYADDR_RHAS_GETHOSTBYNAME_RHAS_GETHOSTENT_RHAS_GETLOGIN_RHAS_GETNETBYADDR_RHAS_GETNETBYNAME_RHAS_GETNETENT_RHAS_GETPROTOBYNAME_RHAS_GETPROTOBYNUMBER_RHAS_GETPROTOENT_RHAS_GETPWENT_RHAS_GETPWNAM_RHAS_GETPWUID_RHAS_GETSERVBYNAME_RHAS_GETSERVBYPORT_RHAS_GETSERVENT_RHAS_GETSPNAM_RHAS_GMTIME_RHAS_LOCALTIME_RHAS_OFF64_THAS_PTHREAD_ATFORKHAS_RANDOM_RHAS_READDIR64_RHAS_READDIR_RHAS_SETRESGID_PROTOHAS_SETRESUID_PROTOHAS_SRAND48_RHAS_SRANDOM_RHAS_STRERROR_RHAS_TMPNAM_RHAS_TTYNAME_RLOCALTIME_R_NEEDS_TZSETSTART_MY_CXTsv_destroyableUSE_ITHREADSUVf(DEPRECATED)
๐ฉ heads up bestie: UVf is DEPRECATED. It's giving "still here for the old heads" but do not build anything new on it, fr fr.
๐ perl 5.9.5 ๐
CopLABELfind_runcvgv_fetchfile_flagsHAS_CTERMIDHAS_PTHREAD_YIELDHAS_SIGNBITL_R_TZSETmro_get_linear_isamro_method_changed_inmy_dirfd(undocumented)Perl_av_create_and_push(undocumented)Perl_av_create_and_unshift_one(undocumented)Perl_signbit(marked experimental)pregcompPRINTF_FORMAT_NULL_OKptr_table_fetch(undocumented)ptr_table_free(undocumented)ptr_table_new(undocumented)ptr_table_split(undocumented)ptr_table_store(undocumented)re_compile(undocumented)savesharedpvnscan_vstring(undocumented)upg_version
๐ธ perl 5.9.4 ๐ธ
gv_name_set(undocumented)GV_NOTQUALHAS_BUILTIN_CHOOSE_EXPRHAS_C99_VARIADIC_MACROSmy_vsnprintfnewXS_flags(marked experimental) (undocumented)PERL_MAGIC_hintsPERL_MAGIC_hintselemPerl_PerlIO_context_layers(undocumented)sv_doessv_nounlocking(DEPRECATED)sv_usepvn_flags
๐ฉ and sv_nounlocking is DEPRECATED too โ it's giving "archival, do not touch", no cap.
perl 5.9.3 ๐ฆ
okay so this batch is stacked, bestie:
dMULTICALLdorefโ undocumented, so likeโฆ we know her name and that's it ๐gv_const_svGV_NOADD_NOINITGV_NOEXPANDHASATTRIBUTE_FORMATHASATTRIBUTE_MALLOCHASATTRIBUTE_NONNULLHASATTRIBUTE_NORETURNHASATTRIBUTE_PUREHASATTRIBUTE_UNUSEDHASATTRIBUTE_WARN_UNUSED_RESULTHAS_CLEARENVHAS_FUTIMESHAS_MODFL_PROTOHAS_SNPRINTFHAS_UNSETENVHAS_VSNPRINTFhv_name_setโ undocumentedis_utf8_string_loclenLIBM_LIB_VERSIONMULTICALLnewGIVENOPnewSVhekPerl_hv_eiter_pโ undocumentedPerl_hv_eiter_setโ undocumentedPerl_hv_placeholders_getโ undocumentedPerl_hv_placeholders_setโ undocumentedPerl_hv_riter_pโ undocumentedPerl_hv_riter_setโ undocumentedPERLIO_FUNCS_DECLโ undocumentedPERL_MAGIC_arylen_pPERL_MAGIC_rhashPERL_MAGIC_symtabPOP_MULTICALLsavepvsseedโ undocumentedshare_hekโ undocumentedsortsv_flagsSvPVbytex_nolenSvPV_freeSvPVx_constSvPVx_nolenvverify
perl 5.9.2 ๐ธ
find_rundefsvoffsetโ DEPRECATED, so pls don't build your whole personality on it ๐op_refcnt_lockโ undocumentedop_refcnt_unlockโ undocumentedPERL_MALLOC_WRAPsavesvpvSvPVbyte_forcevnormal
perl 5.9.1 โจ
hv_clear_placeholdershv_scalarPerl_ceilscan_versionsv_2iv_flagssv_2uv_flags
perl 5.9.0 ๐
the MY_CXT girlies have entered the chat:
_aMY_CXTaMY_CXTaMY_CXT_dMY_CXThek_dupโ undocumentedMY_CXTMY_CXT_CLONEMY_CXT_INITnew_versionparser_dupโ undocumentedPerl_my_cxt_initโ undocumented_pMY_CXTpMY_CXTpMY_CXT_save_set_svflagsโ undocumentedSVs_PADSTALEvcmpvnumifyvstringify
perl 5.8.9 ๐
Perl_hv_assertโ undocumented
perl 5.8.8 โญ
__ASSERT_rvpv_dupโ undocumented
perl 5.8.3 ๐
SvIsCOWSvIsCOW_shared_hash
perl 5.8.1 ๐ง
CvPADLISTโ marked experimentalHAS_COPYSIGNLHAS_FAST_STDIOHAS_ILOGBLHAS_PTHREAD_ATTR_SETSCOPEHAS_SCALBNLHAS_TM_TM_GMTOFFIN_PERL_RUNTIMEis_utf8_string_locpacklistPL_comppadโ marked experimentalSAVEBOOLsavestack_grow_cntโ undocumentedsv_cat_decodesv_setpvivโ DEPRECATEDsv_setpviv_mgโ DEPRECATEDSvVOKunpackstring
perl 5.8.0 ๐
okay this version said "let me add ALL the _R_PROTO macros" and honestly, respect the commitment. here they are, in order, no skips:
ASCTIME_R_PROTOCRYPT_R_PROTOCTERMID_R_PROTOCTIME_R_PROTODRAND48_R_PROTOENDGRENT_R_PROTOENDHOSTENT_R_PROTOENDNETENT_R_PROTOENDPROTOENT_R_PROTOENDPWENT_R_PROTOENDSERVENT_R_PROTOGETGRENT_R_PROTOGETGRGID_R_PROTOGETGRNAM_R_PROTOGETHOSTBYADDR_R_PROTOGETHOSTBYNAME_R_PROTOGETHOSTENT_R_PROTOGETLOGIN_R_PROTOGETNETBYADDR_R_PROTOGETNETBYNAME_R_PROTOGETNETENT_R_PROTOGETPROTOBYNAME_R_PROTOGETPROTOBYNUMBER_R_PROTOGETPROTOENT_R_PROTOGETPWENT_R_PROTOGETPWNAM_R_PROTOGETPWUID_R_PROTOGETSERVBYNAME_R_PROTOGETSERVBYPORT_R_PROTOGETSERVENT_R_PROTOGETSPNAM_R_PROTOGMTIME_R_PROTOHAS_TIMEHAS_TM_TM_ZONEHeUTF8hv_iternext_flagsโ marked experimentalHV_ITERNEXT_WANTPLACEHOLDERShv_store_flagsโ marked experimental, undocumentedI_CRYPTLOCALTIME_R_PROTOnothreadhookRANDOM_R_PROTOREADDIR64_R_PROTOREADDIR_R_PROTOSETGRENT_R_PROTOSETHOSTENT_R_PROTOSETLOCALE_R_PROTOSETNETENT_R_PROTOSETPROTOENT_R_PROTOSETPWENT_R_PROTOSETSERVENT_R_PROTOSRAND48_R_PROTOSRANDOM_R_PROTOSTRERROR_R_PROTOTMPNAM_R_PROTOTTYNAME_R_PROTO
perl 5.7.3 ๐ฅ
atfork_lockโ undocumentedatfork_unlockโ undocumentedcustom_op_descโ DEPRECATEDcustom_op_nameโ DEPRECATEDdebstackโ undocumenteddebstackptrsโ undocumentedfoldEQ_utf8fp_dupโ undocumentedgp_dupโ undocumentedgv_fetchmeth_autoloadHAS_DIRFDHAS_FINITEHAS_FINITELHAS_ISINFHAS_PROCSELFEXEhe_dupโ undocumentedibcmp_utf8mg_dupโ undocumentedmy_forkโ undocumentedmy_socketpairโ undocumentedOP_DESCOP_NAMEPerl_debโ undocumentedPerl_deb_nocontextโ undocumentedperl_destructPERL_EXIT_DESTRUCT_ENDPerlIO_clearerrPerlIO_closePerlIO_eofPerlIO_errorPerlIO_filenoPerlIO_flushPerlIO_get_basePerlIO_get_bufsizPerlIO_get_cntPerlIO_get_ptrPERLIO_K_MULTIARGPerlIO_readPerlIO_seekPerlIO_set_cntPerlIO_setlinebufPerlIO_set_ptrcntPerlIO_stderrPerlIO_stdinPerlIO_stdoutPerlIO_tellPerlIO_unreadโ undocumentedPerlIO_writePerl_isfinitePerl_isinfPL_peeppPROCSELFEXE_PATHpv_uni_displaysavesharedpvsave_shared_pvrefโ undocumentedsi_dupโ undocumentedsortsvss_dupโ undocumentedsv_copypvsv_dupโ undocumentedSvLOCKsv_magicextsv_nosharingsv_recode_to_utf8SvSHAREsv_uni_displaySvUNLOCKUNI_DISPLAY_BACKSLASHUNI_DISPLAY_ISPRINTUNI_DISPLAY_QQUNI_DISPLAY_REGEXunpack_strโ DEPRECATEDuvchr_to_utf8_flagsvdebโ undocumented
perl 5.7.2 ๐ซ
DB_VERSION_MAJOR_CFGDB_VERSION_MINOR_CFGDB_VERSION_PATCH_CFGgetcwd_svHAS_FCHDIRHAS_FLOCK_PROTOHAS_NL_LANGINFOHAS_SOCKATMARK_PROTOHAS_STRFTIMEHAS_SYSCALL_PROTOHAS_USLEEP_PROTOI_LANGINFOinit_tmโ undocumentedmini_mktimeop_nullOSVERSPerl_callocโ undocumentedPerl_mallocโ undocumentedPerl_mfreeโ undocumentedPerl_my_strftimeโ undocumentedPerl_reallocโ undocumentedPERL_TARGETARCHsv_catpvn_flagssv_catsv_flagssv_utf8_upgrade_flagssv_utf8_upgrade_nomgU_32UNICODE_IS_REPLACEMENT
perl 5.7.1 ๐
this one is a whole buffet, grab a plate:
bytes_from_utf8โ marked experimentaldo_opennโ undocumentedFCNTL_CAN_LOCKgv_handlerโ undocumentedHAS_FSYNCHAS_GETITIMERHAS_GETPAGESIZEHAS_READVHAS_RECVMSGHAS_SBRK_PROTOHAS_SENDMSGHAS_SETITIMERHAS_SIGPROCMASKHAS_SOCKATMARKHAS_STRTOQHAS_STRUCT_CMSGHDRHAS_STRUCT_MSGHDRHAS_UALARMHAS_USLEEPHAS_WRITEVisALNUM_LC_uvchrisALPHA_LC_uvchrisCNTRL_LC_uvchrisDIGIT_LC_uvchrisGRAPH_LC_uvchrisIDFIRST_LC_uvchrisLOWER_LC_uvchris_lvalue_subโ undocumentedisPRINT_LC_uvchrisPUNCT_LC_uvchrisSPACE_LC_uvchrisUPPER_LC_uvchrmy_popen_listโ undocumentedNEED_VA_COPYPerlIO_apply_layersPerlIO_binmodePerlIO_debugPERLIO_F_APPENDPERLIO_F_CANREADPERLIO_F_CANWRITEPERLIO_F_CRLFPERLIO_F_EOFPERLIO_F_ERRORPERLIO_F_FASTGETSPERLIO_F_LINEBUFPERLIO_F_OPENPERLIO_F_RDBUFPERLIO_F_TEMPPERLIO_F_TRUNCATEPERLIO_F_UNBUFPERLIO_F_UTF8PERLIO_F_WRBUFPERLIO_K_BUFFEREDPERLIO_K_CANCRLFPERLIO_K_FASTGETSPERLIO_K_RAWPerl_printf_nocontextโ undocumentedPOPpbytexSAVEMORTALIZESVSIG_SIZESTDIO_PTR_LVAL_SETS_CNTsv_force_normal_flagssv_setref_uvsv_unref_flagssv_utf8_upgradeU32_ALIGNMENT_REQUIREDUNICODE_IS_SURROGATEUSE_PERLIOUTF8_CHECK_ONLYutf8_lengthutf8n_to_uvchruvchr_to_utf8UVXf
perl 5.7.0 ๐ซถ
FILE_baseFILE_bufsizFILE_cntFILE_ptrPerlIO_fillโ undocumented
perl 5.6.1 ๐
apply_attrs_stringโ marked experimental, undocumentedbytes_to_utf8โ marked experimentalgv_efullname4โ undocumentedgv_fullname4โ undocumentedHAS_FREXPLHAS_ISNANHAS_ISNANLHAS_MODFLisPSXSPC_LCisUTF8_CHARis_utf8_stringNV_PRESERVES_UV_BITSNVSIZEPerl_isnanPERL_PRIeldblPERL_SCNfldblsave_generic_pvrefโ undocumentedSvGAMAGICutf8_to_bytesโ marked experimentalutf8_to_uvchrโ DEPRECATEDutf8_to_uvchr_buf
perl 5.6.0 ๐ซถ
okay bestie, hydrate first because this batch is HUGE ๐ like genuinely enormous, the biggest single tier on this whole page. Every single one of these shows up starting here, no cap:
av_deleteav_existscall_atexit(undocumented)caller_cxCopLINECPPLASTCPPRUNdo_open9(DEPRECATED) (undocumented)DO_UTF8Drand01dump_alldump_eval(undocumented)dump_form(undocumented)dump_packsubsdump_sub(undocumented)FFLUSH_NULLget_context(undocumented)get_ppaddr(undocumented)Gid_t_fGid_t_signGid_t_sizegv_dump(undocumented)HAS_ACCESSHAS_ATOLLHAS_DRAND48_PROTOHAS_EACCESSHAS_FD_SETHAS_FSEEKOHAS_FTELLOHAS_GETCWDHAS_GETHOSTNAMEHAS_GETSPNAMHAS_INT64_THAS_LDBL_DIGHAS_LSEEK_PROTOHAS_MADVISEHAS_MKDTEMPHAS_MKSTEMPHAS_MKSTEMPSHAS_MMAPHAS_MPROTECTHAS_MSYNCHAS_MUNMAPHAS_SQRTLHAS_STRTOLDHAS_STRTOLLHAS_STRTOULLHAS_STRTOUQHAS_TELLDIR_PROTOI16SIZEI16TYPEI32SIZEI32TYPEI64SIZEI64TYPEI8SIZEI8TYPEI_INTTYPESI_NETINET_TCPI_POLLisALNUMC_LCisALPHA_LC_utf8_safeisALPHANUMERIC_LC_utf8_safeisALPHANUMERIC_utf8_safeisALPHANUMERIC_uvchrisALPHA_utf8_safeisALPHA_uvchrisBLANK_LC_utf8_safeisBLANK_utf8_safeisBLANK_uvchrisCNTRL_LCisCNTRL_LC_utf8_safeisCNTRL_utf8_safeisCNTRL_uvchrisDIGIT_LC_utf8_safeisDIGIT_utf8_safeisDIGIT_uvchrisGRAPH_LCisGRAPH_LC_utf8_safeisGRAPH_utf8_safeisGRAPH_uvchrI_SHADOWisIDCONT_LC_utf8_safeisIDCONT_utf8_safeisIDCONT_uvchrisIDFIRST_LC_utf8_safeisIDFIRST_utf8_safeisIDFIRST_uvchrisLOWER_LC_utf8_safeisLOWER_utf8_safeisLOWER_uvchrisPRINT_LC_utf8_safeisPRINT_utf8_safeisPRINT_uvchrisPSXSPC_LC_utf8_safeisPSXSPC_utf8_safeisPSXSPC_uvchrisPUNCT_LCisPUNCT_LC_utf8_safeisPUNCT_utf8_safeisPUNCT_uvchrisSPACE_LC_utf8_safeisSPACE_utf8_safeisSPACE_uvchrisUPPER_LC_utf8_safeisUPPER_utf8_safeisUPPER_uvchris_utf8_char(DEPRECATED)isWORDCHAR_LC_utf8_safeisWORDCHAR_utf8_safeisWORDCHAR_uvchrisXDIGIT_LC_utf8_safeisXDIGIT_utf8_safeisXDIGIT_uvchrI_SYSLOGI_SYSUIOI_SYSUTSNAMELSEEKSIZEmagic_dump(undocumented)Mmap_tMULTIPLICITYmy_atofmy_fflush_all(undocumented)newANONATTRSUB(undocumented)newATTRSUBnewXSnewXSprotoOff_t_sizeop_dumpOPpEARLY_CVPERL_ASYNC_CHECKPerl_atan2Perl_cosPERL_EXIT_EXPECTEDPerl_expPerl_floorPerl_fmodPerl_frexpPerl_logPerl_modfperl_parsePerl_powPERL_PRIfldblPERL_PRIgldblPERL_REVISION(DEPRECATED)Perl_sinPerl_sqrtPERL_SYS_INIT3PHOSTNAMEPL_checkPL_exit_flagsPL_runopspmop_dump(undocumented)POPulQUAD_IS_INTQUAD_IS_INT64_TQUAD_IS_LONGQUAD_IS_LONG_LONGQUADKINDRand_seed_trequire_pvsafesyscallocsafesysfreesafesysmallocsafesysreallocsave_alloc(undocumented)SAVEDESTRUCTORSAVEDESTRUCTOR_XSAVEI8save_vptr(undocumented)scan_binSCHED_YIELDseedDrand01set_context(undocumented)SITELIB_STEMSize_t_sizeSock_size_tSTDIO_PTR_LVALUESTDIO_STREAM_ARRAYStrtolStrtoulsv_2pvutf8sv_force_normalSvIOK_notUVSvIOK_only_UVSvIOK_UVsv_len_utf8sv_len_utf8_nomgSvPOK_only_UTF8sv_pos_b2usv_pos_u2bSvPVbyte_nolenSvPVbytexSvPVbytex_forceSvPVutf8SvPVutf8_forceSvPVutf8_nolenSvPVutf8xSvPVutf8x_forcesv_rvweakenSvUOKsv_utf8_decodesv_utf8_downgradesv_utf8_encodeSvUTF8_offSvUTF8_ontoFOLD_utf8_safetoFOLD_uvchrtoLOWER_utf8_safetoLOWER_uvchrtoTITLE_utf8_safetoTITLE_uvchrtoUPPER_utf8_safetoUPPER_uvchrU16SIZEU16TYPEU32SIZEU32TYPEU64SIZEU64TYPEU8SIZEU8TYPEUid_t_fUid_t_signUid_t_sizeUquad_tUSE_64_BIT_ALLUSE_64_BIT_INTUSE_LARGE_FILESUSE_STDIO_BASEUSE_STDIO_PTRUSE_THREADSUTF8_CHK_SKIPutf8_distanceutf8_hopUTF8_MAXBYTESUTF8_SAFE_SKIPUTF8_SKIPUTF8SKIPvcroakvform
likeโฆ look at that list. it's giving macro soup and honestly we respect it ๐ (also yes there's one item in there tagged (marked experimental) energy, but you'll meet it in a sec down in the 5.005 pile โ stay with me ๐)
perl 5.005_03 โจ
a lil snack-sized tier, seven items, all iconic in their own way:
get_vtbl(undocumented)I_PTHREADPOPpxsave_generic_svref(undocumented)SELECT_MIN_BITSSvTIED_objUSE_STAT_BLOCKS
tiny. adorable. moving on ๐ฆ
perl 5.005 ๐ธ
this one's the middle child energy โ not tiny, not enormous, just vibing with the networking and the debug dumps:
debop(undocumented)debprofdump(undocumented)DOUBLESIZEfbm_compilefbm_instrget_op_descs(undocumented)get_op_names(undocumented)GRPASSWDHAS_CSHHAS_ENDGRENTHAS_ENDHOSTENTHAS_ENDNETENTHAS_ENDPROTOENTHAS_ENDPWENTHAS_ENDSERVENTHAS_GETGRENTHAS_GETHOSTBYADDRHAS_GETHOSTBYNAMEHAS_GETHOST_PROTOSHAS_GETNETBYADDRHAS_GETNETBYNAMEHAS_GETNETENTHAS_GETNET_PROTOSHAS_GETPROTOBYNAMEHAS_GETPROTOBYNUMBERHAS_GETPROTOENTHAS_GETPROTO_PROTOSHAS_GETPWENTHAS_GETSERVBYNAMEHAS_GETSERVBYPORTHAS_GETSERVENTHAS_GETSERV_PROTOSHAS_LCHOWNHAS_LONG_DOUBLEHAS_LONG_LONGHAS_SCHED_YIELDHAS_SETGRENTHAS_SETHOSTENTHAS_SETNETENTHAS_SETPROTOENTHAS_SETPWENTHAS_SETSERVENTHAS_SETVBUFI_ARPA_INETI_NETDBinit_stacks(undocumented)LONG_DOUBLESIZELONGLONGSIZEmg_length(DEPRECATED)mg_size(undocumented)Netdb_hlen_tNetdb_host_tNetdb_name_tNetdb_net_tnewHVhv(undocumented)new_stackinfo(undocumented)Pid_tPL_curpad(marked experimental)PL_in_my_stash(undocumented)PL_maxsysfdPL_modglobalPL_restartopPTRSIZEPWPASSWDregdump(undocumented)sv_peek(undocumented)sv_pvn_nomg(DEPRECATED) (undocumented)SvPVx_force
there's PL_curpad sitting right there (marked experimental) btw โ experimental means experimental, bestie, don't build your whole personality on it ๐
perl 5.004_05 ๐
five seconds of a tier, nine items, we love a short chapter:
do_binmode(DEPRECATED) (undocumented)GV_NOINITHAS_CHSIZEHAS_GNULIBCPWGECOSsave_aelem(undocumented)save_helem(undocumented)USE_SEMCTL_SEMID_DSUSE_SEMCTL_SEMUN
perl 5.004 ๐
and closing out this part: the 5.004 squad. lots of locale-flavored name checks, some warning/message machinery, and a whole little family of sv_v* formatting friends:
ARCHNAMEBIN_EXPblock_gimme(undocumented)call_list(undocumented)delimcpyGIMME_Vgv_autoload4gv_fetchmethod_autoloadG_VOIDHAS_GETTIMEOFDAYHAS_INET_ATONHAS_SETGROUPSHAS_STRTODHAS_STRTOLHAS_STRTOULHePVHeSVKEY_sethv_delayfree_ent(undocumented)hv_free_ent(undocumented)ibcmp_localeIN_LOCALEIN_LOCALE_COMPILETIMEIN_LOCALE_RUNTIMEisALNUM_LCisALPHA_LCisALPHANUMERIC_LCisDIGIT_LCisIDCONT_LCisIDFIRST_LCisLOWER_LCisPRINT_LCisSPACE_LCisUPPER_LCisWORDCHAR_LCJMPENV_JUMPmess_svmy_failure_exit(undocumented)Perl_ck_warner(undocumented)Perl_ck_warner_d(undocumented)Perl_form(undocumented)Perl_mess(undocumented)Perl_newSVpvf(undocumented)Perl_sv_catpvf(undocumented)Perl_sv_catpvf_mg(undocumented)Perl_sv_setpvf(undocumented)Perl_sv_setpvf_mg(undocumented)Perl_warner(undocumented)Perl_warner_nocontext(undocumented)PL_mess_sv(undocumented)POPursignalrsignal_state(undocumented)save_gpSAVEI16SAVESTACK_POSSHORTSIZEsv_cmp_localesv_derived_fromsv_magic_portable(undocumented)SvSetMagicSVSvSetMagicSV_nostealSvSetSV_nostealSvTAINTEDSvTAINTED_offSvTAINTED_onsv_vcatpvfsv_vcatpvf_mgsv_vcatpvfnsv_vsetpvfsv_vsetpvf_mgsv_vsetpvfnTimevaltoLOWER_LCvmessvnewSVpvfvwarner
you made it through the whole archive, bestie ๐ซถ and there's still more page to go โ don't wander off ๐
perl 5.003_07 (or maybe earlier) ๐ฐ๏ธโจ
okay so bestie, welcome to the ancient scrolls ๐. these are the symbols that were already chilling in perl by version 5.003_07 โ or maybe even earlier, the historians are still debating that one, iykyk ๐
. some of them are marked (undocumented) and some are (DEPRECATED), so give them the respect (or the side-eye) they deserve ๐. no cap, this is a whole lot of legacy goodness. let's get into it, one by one, no skipping:
amagic_call(undocumented)ARCHLIBARCHLIB_EXPASSUMEaTHXaTHX_aTHXR(undocumented)aTHXR_(undocumented)AvARRAYav_clearav_countav_extendav_fetchav_fillAvFILLav_lenav_makeav_popav_pushav_shiftav_storeav_tindexav_top_indexav_undefav_unshiftaxBINBOM_UTF8boolSVBYTEORDERcall_argvcall_methodcall_pvcall_svC_ARRAY_ENDC_ARRAY_LENGTHCASTFLAGSCASTNEGFLOATCAT2cBOOLckWARNckWARN2ckWARN2_dckWARN3ckWARN3_dckWARN4ckWARN4_dckWARN_dCLASSCopFILECopFILEAVCopFILEGVCopFILEGV_setCopFILE_setCopFILESVCopSTASHCopSTASH_eqCopSTASHPVCopSTASH_setCopyCopyDCPERLscope(DEPRECATED)CPPMINUSCPPSTDINcroak_no_modifycroak_svcroak_xs_usageCSHcv_const_svCvDEPTH(undocumented)CvGVCvSTASHcv_undefdAXdAXMARKDB_Hash_tDB_Prefix_tDEFSVDEFSV_setdie_svDirentry_tdITEMSdMARKdMY_CXT_SVdNOOPdo_close(undocumented)do_join(undocumented)do_open(undocumented)dORIGMARKdo_sprintf(undocumented)dounwind(undocumented)dowantarray(undocumented)dSPdTARGETdTHRdTHXdTHXadTHXoadTHXR(undocumented)dUNDERBARdVARdXCPTdXSARGSdXSI32dXSTARG(undocumented)END_EXTERN_CENTEREOF_NONBLOCKERRSVeval_pveval_svEXTENDEXTERN_Cfilter_addfilter_del(undocumented)filter_readFLEXFILENAMESFpos_tFree_tFREETMPSGconvertG_DISCARDget_avget_cvget_cvn_flagsget_cvsget_hvget_svG_EVALGid_tGIMME(DEPRECATED)G_KEEPERRG_LISTG_METHODG_NOARGSgp_free(undocumented)gp_ref(undocumented)G_RETHROWgrok_bingrok_hexgrok_numberGROK_NUMERIC_RADIXgrok_numeric_radixgrok_octGroups_tG_SCALARGV_ADDGV_ADDMULTIGV_ADDWARNGvAVgv_AVadd(undocumented)GvCVgv_efullname(DEPRECATED) (undocumented)gv_efullname3(undocumented)gv_fetchfilegv_fetchmethgv_fetchmethodgv_fetchpvgv_fetchpvn_flagsgv_fetchpvsgv_fetchsvgv_fullname(DEPRECATED) (undocumented)gv_fullname3(undocumented)GvHVgv_HVadd(undocumented)gv_initgv_init_pvngv_IOadd(undocumented)gv_stashpvgv_stashpvngv_stashpvsgv_stashsvGvSVGvSVnHAS_ALARMHAS_CHOWNHAS_CHROOTHAS_CRYPTHAS_CUSERIDHAS_DIFFTIMEHAS_DLERRORHAS_DUP2HAS_FCHMODHAS_FCHOWNHAS_FCNTLHAS_FGETPOSHAS_FLOCKHAS_FORKHAS_FPATHCONFHAS_FSETPOSHAS_GETGROUPSHAS_GETHOSTENTHAS_GETLOGINHAS_GETPGIDHAS_GETPGRPHAS_GETPPIDHAS_GETPRIORITYHAS_HTONLHAS_HTONSHAS_ISASCIIHAS_KILLPGHAS_LINKHAS_LOCALECONVHAS_LOCKFHAS_LSTATHAS_MBLENHAS_MBSTOWCSHAS_MBTOWCHAS_MKDIRHAS_MKFIFOHAS_MKTIMEHAS_MSGHAS_NICEHAS_NTOHLHAS_NTOHSHAS_OPEN3HAS_PATHCONFHAS_PAUSEHAS_PIPEHAS_POLLHAS_QUADHAS_READDIRHAS_READLINKHAS_RENAMEHAS_REWINDDIRHAS_RMDIRHAS_SEEKDIRHAS_SELECTHAS_SEMHAS_SETEGIDHAS_SETEUIDHAS_SETLINEBUFHAS_SETLOCALEHAS_SETPGIDHAS_SETPGRPHAS_SETPRIORITYHAS_SETREGIDHAS_SETRESGIDHAS_SETRESUIDHAS_SETREUIDHAS_SETSIDHAS_SHMHAS_SHMAT_PROTOTYPEHAS_SIGACTIONHAS_SIGSETJMPHAS_SOCKETHAS_SOCKETPAIRHAS_STRCOLLHAS_STRXFRMHAS_SYMLINKHAS_SYSCALLHAS_SYSCONFHAS_SYS_ERRLISTHAS_SYSTEMHAS_TCGETPGRPHAS_TCSETPGRPHAS_TELLDIRHAS_TIMESHAS_TRUNCATEHAS_TZNAMEHAS_UMASKHAS_UNAMEHAS_WAIT4HAS_WAITPIDHAS_WCSTOMBSHAS_WCTOMBHEf_SVKEYHeHASHHeKEYHeKLENHeSVKEYHeSVKEY_forceHeVALhv_clearhv_deletehv_delete_enthv_existshv_exists_enthv_fetchhv_fetch_enthv_fetchsHvFILLhv_iterinithv_iterkeyhv_iterkeysvhv_iternexthv_iternextsvhv_itervalhv_ksplit(undocumented)hv_magicHvNAMEHvNAMELEN_gethv_storehv_store_enthv_storeshv_undefI_32ibcmpI_DIRENTI_DLFCNI_GRPI_LOCALEI_NETINET_ININ_PERL_COMPILETIMEinstrINT16_CINT2PTRINT32_CINTMAX_CINTSIZEI_PWDisALNUMisALNUM_AisALNUMCisALNUMC_AisALNUMC_L1isALPHAisALPHA_AisALPHA_L1isALPHANUMERICisALPHANUMERIC_AisALPHANUMERIC_L1isASCIIisASCII_AisASCII_L1isASCII_LCisASCII_utf8_safeisASCII_uvchrisBLANKisBLANK_AisBLANK_L1isBLANK_LCisCNTRLisCNTRL_AisCNTRL_L1isDIGITisDIGIT_AisDIGIT_L1isGRAPHisGRAPH_AisGRAPH_L1isGV_with_GPisIDCONTisIDCONT_AisIDCONT_L1isIDFIRSTisIDFIRST_AisIDFIRST_L1isLOWERisLOWER_AisLOWER_L1IS_NUMBER_GREATER_THAN_UV_MAXIS_NUMBER_INFINITYIS_NUMBER_IN_UVIS_NUMBER_NANIS_NUMBER_NEGIS_NUMBER_NOT_INTisOCTALisOCTAL_AisOCTAL_L1isPRINTisPRINT_AisPRINT_L1isPSXSPCisPSXSPC_AisPSXSPC_L1isPUNCTisPUNCT_AisPUNCT_L1isSPACEisSPACE_AisSPACE_L1isUPPERisUPPER_AisUPPER_L1isWORDCHARisWORDCHAR_AisWORDCHAR_L1isXDIGITisXDIGIT_AisXDIGIT_L1isXDIGIT_LCI_SYS_DIRI_SYS_FILEI_SYS_IOCTLI_SYS_PARAMI_SYS_RESOURCEI_SYS_SELECTI_SYS_STATI_SYS_TIMEI_SYS_TIMESI_SYS_TYPESI_SYS_UNI_SYS_WAITitemsI_TERMIOSI_TIMEI_UNISTDI_UTIMEI_VIVdfIV_MAXIV_MINIVSIZEIVTYPEixLATIN1_TO_NATIVELEAVEleave_scope(undocumented)LIKELYload_moduleLOC_SEDLONGSIZElooks_like_numberMalloc_tMARKMEM_ALIGNBYTESmemCHRsmemEQmemEQsmemNEmemNEsmemzeromg_clearmg_copymg_findmg_findextmg_freemg_getmg_magicalmg_setMode_tMoveMoveDmPUSHimPUSHnmPUSHpmPUSHsmPUSHuMUTABLE_AVMUTABLE_CVMUTABLE_GVMUTABLE_HVMUTABLE_IOMUTABLE_PTRMUTABLE_SVmXPUSHimXPUSHnmXPUSHpmXPUSHsmXPUSHumy_exitmy_pclose(undocumented)my_popen(undocumented)my_setenvmy_sprintf(DEPRECATED)my_strlcatmy_strlcpymy_strnlenNATIVE_TO_LATIN1NATIVE_TO_UNInewANONHASH(undocumented)newANONLIST(undocumented)newANONSUB(undocumented)newASSIGNOPnewAVnewAVREF(undocumented)newBINOPnewCONDOPnewCONSTSUBnewCVREF(undocumented)newFORM(undocumented)newGVgen(undocumented)newGVOPnewGVREF(undocumented)newHVnewHVREF(undocumented)newIO(undocumented)newLISTOPnewLOGOPnewLOOPEXnewLOOPOPnewNULLLISTnewOPnewPMOPnewPROG(undocumented)newPVOPnewRANGEnewRVnewRV_incnewRV_noinc
phew, that's the whole pre-5.003_07 family, bestie ๐ฎ๐จ. they're iconic, they're legacy, they're literally the blueprint ๐. but wait, there's more coming up, so don't touch that dial โจ.
okay bestie we're deep in the lineup now โ no context, no warm-up, just names hitting you back to back like a group chat at 2am ๐ and honestly? every single one of these made the cut, so we're showing them all some love.
newSLICEOPโ she's here ๐newSTATEOPโ and her โจnewSUBโ iconic, no notesnewSVโ THE main character of this whole section, ngl ๐newSVivโ a classic, we love a classicnewSVnvโ and her numeric bestienewSVOPโ pulled up looking cutenewSVpvโ oh she's everywhere, you already know hernewSVpvnโ her sibling, equally valid ๐ซถnewSVpvn_flagsโ walked in with flags, respectnewSVpvn_shareโ sharing is caring ๐ธnewSVpvn_utf8โ utf8 girlie ๐newSVpvsโ pvs queen, periodt ๐newSVpvs_flagsโ pvs and flags, double threat โจnewSVpvs_shareโ she contains multitudes ๐ฆnewSVREFโ (undocumented ๐ซฃ) she's shy, we respect her privacynewSVrvโ here she isnewSVsvโ no thoughts, iconic energynewSVsv_flagsโ same vibe, now with flagsnewSVsv_nomgโ the_nomggirlie, she's got a whole aestheticnewSV_typeโ she has a type, and she's not sorrynewSVuvโ unsigned and unbothered ๐newUNOPโ present and accounted for โจ
the New* fam walked in together, matching outfits, absolutely ate:
Newxโ the original โจNewxcโ she brought a c ๐Newxzโ and she brought a z, thorough queenninstrโ here she is, iconic in her own quiet way ๐NOOPโ doing literally nothing and doing it flawlessly, that's the vibe ๐NOT_REACHEDโ (undocumented ๐ซฃ) mysterious, cryptic, kinda slayNullavโ (DEPRECATED ๐) retired, darling, let her restNullchโ still here though โจNullcvโ (DEPRECATED ๐) she left the group chatNullhvโ (DEPRECATED ๐) so did she ๐ญNullsvโ keeping the family name alive ๐ซถNVefโ the float one, lowkey elegantNVffโ and her friendNVgfโ and the third one, a trio ๐ธNVTYPEโ the type itself, main character ๐Off_tโ a whole type, she's built differentOPf_KIDSโ the flag that says there are kids ๐งop_freeโ she frees, she's generous ๐OpHAS_SIBLINGโ sibling energy, real ๐OpLASTSIB_setโ setting the last sibling, iconicOpMAYBESIB_setโ maybe, maybe not, she's mysterious ๐ซฃOpMORESIB_setโ more siblings, more chaosOPpENTERSUB_AMPERโ long name, big presence โจOpSIBLINGโ the sibling her*self* ๐ORIGMARKโ the original mark, the blueprint โจOSNAMEโ she knows where you live ๐ฅpackWARNโ warning girliepackWARN2โ warning girlie, level twopackWARN3โ level three, she's escalatingpackWARN4โ level four, final boss energy ๐
the PERL_ and Perl_ crew, honestly a whole supergroup:
PERL_ABSโ abs, but make it Perl ๐perl_allocโ she allocates โจPERL_BCDVERSIONโ (undocumented ๐ซฃ)perl_constructโ constructing, as one doesPerl_croakโ (undocumented ๐ซฃ) and yet so famousPerl_dieโ (undocumented ๐ซฃ) an iconPerl_eval_pvโ (undocumented ๐ซฃ)Perl_eval_svโ (undocumented ๐ซฃ)perl_freeโ she frees too, generous queen ๐PERL_HASHโ the hash, periodtPERL_INT_MAXโ the biggest int, main character ๐PERL_INT_MINโ the smallest, humble but essentialPerlIO_canset_cntโ she can set cnt, and she'll tell youPerlIO_exportFILEโ exports, cosmopolitan โจPerlIO_fast_getsโ fast gets, she's speedy ๐ฆPerlIO_fdopenโ fds, opened ๐PerlIO_findFILEโ she finds files, a sleuth ๐PerlIO_getcโ one character, one vibePerlIO_getposโ she gets pos ๐ธPerlIO_has_baseโ she has base ๐PerlIO_has_cntptrโ she has cntptr, lowkey flexPerlIO_importFILEโ imports, also cosmopolitan โจPerlIO_openโ open for businessPerlIO_printfโ printf, but IO-flavored ๐PerlIO_putcโ putc girliePerlIO_putsโ and her louder sisterPerlIO_releaseFILEโ she releases, generous againPerlIO_reopenโ opening, again, because why notPerlIO_rewindโ rewind, iconic behavior โชPerlIO_setposโ set pos, satisfiedPerlIO_stdoutfโ stdout flavored ๐PerlIO_ungetcโ un-getc, a plot twistPerlIO_vprintfโ the v version, very demurePERL_LOADMOD_DENYโ deny, she said no ๐PERL_LOADMOD_IMPORT_OPSโ import ops, she's thoroughPERL_LOADMOD_NOIMPORTโ no import, respectfully โจPERL_LONG_MAXโ long max, big energyPERL_LONG_MINโ long min, small energy
โจ okay and now, the โจmagicโจ block. this is a whole friend group and we're honoring every single member:
PERL_MAGIC_arylenโ magic girl ๐PERL_MAGIC_backrefโ magic girl โจPERL_MAGIC_bmโ magic girl ๐PERL_MAGIC_collxfrmโ magic girl ๐ธPERL_MAGIC_dbfileโ magic girl ๐ฆPERL_MAGIC_dblineโ magic girl ๐PERL_MAGIC_defelemโ magic girl ๐ซถPERL_MAGIC_envโ magic girl ๐PERL_MAGIC_envelemโ magic girl ๐PERL_MAGIC_extโ magic girl โญPERL_MAGIC_fmโ magic girl ๐PERL_MAGIC_globโ (undocumented ๐ซฃ) the mysterious one, love that for herPERL_MAGIC_isaโ magic girl ๐PERL_MAGIC_isaelemโ magic girl โจPERL_MAGIC_mutexโ (undocumented ๐ซฃ) locked and mysterious ๐PERL_MAGIC_nkeysโ magic girl ๐PERL_MAGIC_overloadโ (undocumented ๐ซฃ) she's doing the most, quietlyPERL_MAGIC_overload_elemโ (undocumented ๐ซฃ) and her elems tooPERL_MAGIC_overload_tableโ the table though? documented queen ๐PERL_MAGIC_posโ magic girl ๐ฆPERL_MAGIC_qrโ magic girl ๐PERL_MAGIC_regdataโ magic girl โญPERL_MAGIC_regdatumโ magic girl ๐ธPERL_MAGIC_regex_globalโ magic girl ๐PERL_MAGIC_sharedโ magic girl ๐คPERL_MAGIC_shared_scalarโ magic girl ๐PERL_MAGIC_sigโ magic girl ๐ฅPERL_MAGIC_sigelemโ magic girl โจPERL_MAGIC_substrโ magic girl ๐PERL_MAGIC_svโ magic girl ๐PERL_MAGIC_taintโ magic girl ๐ซถPERL_MAGIC_tiedโ magic girl ๐PERL_MAGIC_tiedelemโ magic girl ๐PERL_MAGIC_tiedscalarโ magic girl ๐PERL_MAGIC_utf8โ magic girl ๐ฆPERL_MAGIC_uvarโ magic girl ๐PERL_MAGIC_uvar_elemโ magic girl โญPERL_MAGIC_vecโ magic girl โจPERL_MAGIC_vstringโ magic girl ๐ธ
no notes, the whole magic fam ate ๐
Perl_my_snprintfโ (undocumented ๐ซฃ) snprintf but make it hersPERL_PV_ESCAPE_ALLโ escape all of it, she's thorough ๐PERL_PV_ESCAPE_FIRSTCHARโ just the first char, humblePERL_PV_ESCAPE_NOBACKSLASHโ no backslashes allowed, boundary queen โPERL_PV_ESCAPE_NOCLEARโ she does NOT clear, respectPERL_PV_ESCAPE_QUOTEโ quoting girlie ๐PERL_PV_ESCAPE_REโ re flavored โจPERL_PV_ESCAPE_UNIโ uni flavored ๐PERL_PV_ESCAPE_UNI_DETECTโ and she detects, smart queen ๐งPERL_PV_PRETTY_ELLIPSESโ pretty and has ellipsesโฆ ๐PERL_PV_PRETTY_LTGTโ pretty with lt/gt, specific iconPERL_PV_PRETTY_QUOTEโ pretty with quotes, final pretty girlie ๐PERL_QUAD_MAXโ quad max, bigPERL_QUAD_MINโ quad min, smallperl_runโ she RUNS ๐โโ๏ธPERL_SCAN_ALLOW_UNDERSCORESโ underscores allowed, generous โจPERL_SCAN_DISALLOW_PREFIXโ prefix? not on her watch ๐PERL_SCAN_GREATER_THAN_UV_MAXโ greater thanUV_MAX, dramatic and validPERL_SCAN_SILENT_ILLDIGITโ silent about it, demure ๐ซฃPERL_SHORT_MAXโ short maxPERL_SHORT_MINโ short minPERL_SIGNALS_UNSAFE_FLAGโ the unsafe flag โ ๏ธ noted, bestiePERL_SUBVERSIONโ (DEPRECATED ๐) she's retired, do not text herPERL_SYS_INITโ sys init, starts the whole thing ๐ฌPERL_SYS_TERMโ sys term, ends the whole thing ๐ฌPERL_UCHAR_MAXโ biggest uchar, slayPERL_UCHAR_MINโ smallest uchar, also slayPERL_UINT_MAXโ biggest uint ๐PERL_UINT_MINโ smallest uintPERL_ULONG_MAXโ biggest ulongPERL_ULONG_MINโ smallest ulongPERL_UNUSED_ARGโ she silences unused args like a legend ๐คซPERL_UNUSED_CONTEXTโ same but for context ๐ซถPERL_UNUSED_DECLโ same but for decls โจPERL_UNUSED_RESULTโ she ignores results with grace ๐PERL_UNUSED_VARโ and vars, no complaintsPERL_UQUAD_MAXโ biggest uquad ๐ฆPERL_UQUAD_MINโ smallest uquadPERL_USE_GCC_BRACE_GROUPSโ brace groups girlie ๐ธPERL_USHORT_MAXโ biggest ushortPERL_USHORT_MINโ smallest ushortPERL_VERSIONโ (DEPRECATED ๐) iconic name, retired queen, RIPPERL_VERSION_GEโ version ge, she compares ๐PERL_VERSION_GTโ version gt, she compares strictlyPERL_VERSION_LEโ version le, gentle comparison โจPERL_VERSION_LTโ version lt, strict but sweetPerl_warnโ (undocumented ๐ซฃ) warns anyway, legendPL_bufendโ (undocumented ๐ซฃ)PL_bufptrโ (undocumented ๐ซฃ)PL_compilingโ (undocumented ๐ซฃ) she's busy compiling, don't talk to herPL_coplineโ (undocumented ๐ซฃ)PL_curcopโ documented icon โจ no marker, just vibesPL_curstashโ same, unmarked and unbothered ๐PL_DBsignalโ (undocumented ๐ซฃ)PL_debstashโ (undocumented ๐ซฃ)PL_defgvโ documented, mysterious, main character energy ๐PL_diehookโ (undocumented ๐ซฃ) the hook, the legendPL_dirtyโ (undocumented ๐ซฃ) living up to her namePL_errgvโ documented girlie ๐PL_error_countโ (undocumented ๐ซฃ) counting errors quietlyPL_expectโ (undocumented ๐ซฃ)PL_hexdigitโ documented, iconic, hex queen ๐PL_hintsโ (undocumented ๐ซฃ)PL_in_myโ (undocumented ๐ซฃ) in her my eraPL_laststatvalโ (undocumented ๐ซฃ)PL_lex_stateโ (undocumented ๐ซฃ) lexing state of mindPL_lex_stuffโ (undocumented ๐ซฃ) stuff. just stuff. iconic ๐PL_linestrโ (undocumented ๐ซฃ)PL_naโ documented and famous, the little one everybody knows ๐PL_no_modifyโ (undocumented ๐ซฃ)PL_parserโ documented queen of parsing ๐PL_perldbโ (undocumented ๐ซฃ)PL_perl_destruct_levelโ documented but the name is terrifying, anyway ๐PL_ppaddrโ (undocumented ๐ซฃ)PL_rsfpโ (undocumented ๐ซฃ)PL_rsfp_filtersโ (undocumented ๐ซฃ) and her filtersPL_signalsโ (undocumented ๐ซฃ)PL_stack_baseโ (undocumented ๐ซฃ) the base of the stack, foundational but shyPL_stack_spโ (undocumented ๐ซฃ) the sp, also shyPL_statcacheโ (undocumented ๐ซฃ)PL_stdingvโ (undocumented ๐ซฃ)PL_sv_arenarootโ (undocumented ๐ซฃ)PL_sv_noโ documented and iconic ๐PL_sv_undefโ the undef one, THE undef one ๐PL_sv_yesโ and yes, obviously โจPL_taintedโ (undocumented ๐ซฃ) tainted and thrivingPL_taintingโ (undocumented ๐ซฃ)PL_tokenbufโ (undocumented ๐ซฃ)PL_Xpvโ (undocumented ๐ซฃ) capital X, mysterious
Poisonโ poison girlie ๐ iconic name, iconic jobPoisonFreeโ poisoned on freePoisonNewโ poisoned when newPoisonWithโ poisoned with, you choose, custom queen ๐POPiโ pop i, she pops โจPOPlโ pop l, she also popsPOPnโ pop n, still poppingPOPpโ pop p, popping with style ๐ธPOPsโ pop s, the pop everyone knows best ๐pop_scopeโ (undocumented ๐ซฃ)pregexecโ documented, regex-running royalty ๐pregfreeโ (undocumented ๐ซฃ) she frees the preg, quietlyPRIVLIBโ the privlib, iconic path energy ๐PRIVLIB_EXPโ her_EXPtwin, expanded and readypTHXโ the thx king ๐ everybody knows himpTHX_โ same but with a trailing underscore, tiny detail, big difference ๐PTR2IVโ ptr to iv, conversions are her whole personality โจPTR2natโ ptr to nat, natural girliePTR2NVโ ptr to nv, nv flavoredPTR2ulโ ptr to ul, ul flavoredPTR2UVโ ptr to uv, uv flavoredPTRVโ (undocumented ๐ซฃ)PUSHiโ push i, pushing โจPUSHMARKโ THE pushmark, legendary ๐PUSHmortalโ pushes a mortal, dramatic but valid ๐ซถPUSHnโ push nPUSHpโ push pPUSHsโ push spush_scopeโ (undocumented ๐ซฃ)PUSHuโ push uPUTBACKโ put it BACK ๐ iconic command energypv_displayโ displays pv, she's a showgirl ๐pv_escapeโ escapes pv, slippery queen ๐pv_prettyโ the prettiest of the three, no competition ๐Quad_tโ a whole type, built differentRANDBITSโ random bits, chaotic but make it cute ๐ฒRD_NODATAโ no data, respectfully ๐Renewโ renew girlie, fresh start every time โจRenewcโ and her c bestierepeatcpyโ (undocumented ๐ซฃ) repeating and copying, multitasking queenREPLACEMENT_CHARACTER_UTF8โ the replacement character, dramatic name, dramatic job ๐ฆRETVALโ the return value, main character of every XS function ๐rninstrโ the r version of ninstr, reverse girlie โชSafefreeโ frees safely, she's careful ๐ซถsave_aptrโ saves an aptr, a saver ๐save_aryโ saves an array, generous queenSAVE_DEFSVโ saves the defsv, important workSAVEDELETEโ saves the delete, she remembers so you don't have to ๐งSAVEFREEPVโ saves free pv, a whole combo meal ๐SAVEFREESVโ saves free sv, same but sv flavoredsave_hashโ saves a hash, the hero we needsave_hptrโ saves an hptr, pointer saverSAVEI32โ saves an i32, precise โจSAVEINTโ saves an int, classicsave_itemโ saves an item, she's literally just saving items ๐ธSAVEIVโ saves an iv, iv girliesave_listโ (DEPRECATED ๐) retired, bestie, don't call herSAVELONGโ saves a long, long live hersave_nogvโ (DEPRECATED ๐) (undocumented ๐ซฃ) double icon behavior, honestlySAVEPPTRโ saves a pptr, pptr saviorsavepvโ saves a pv, she's saving all of them, one by onesavepvnโ and the n version, keep her name out your mouthsave_scalarโ saves a scalar, noble work ๐SAVESPTRโ saves an sptr, keep the streak goingsavestack_growโ (undocumented ๐ซฃ) growing the savestack, literallysave_svrefโ saves an svref, final saver of this block โจSAVETMPSโ saves tmps, a classic move ๐scan_hexโ scans hex, hex girlie ๐scan_octโ scans oct, oct girlieSelect_fd_set_tโ a whole type, very specific queenShmat_tโ another whole type, mystery girlie ๐ซฃSH_PATHโ the shell path, iconic constant ๐Sigjmp_bufโ a buffer, a sig one, built differentSiglongjmpโ the long jump but sig flavored ๐ฆSignal_tโ a signal type, present and accounted forSIG_NAMEโ the sig name, she names them ๐ธSIG_NUMโ the sig number, she numbers themSigsetjmpโ the sig setjmp, completing the jump familySITEARCHโ sitearch, path queen ๐SITEARCH_EXPโ and her expanded twin โจSITELIBโ sitelib, also a path queenSITELIB_EXPโ expanded and thriving ๐Size_tโ THE size type, main character ๐SPโ the stack pointer, two letters, immense powerSPAGAINโ sp, again ๐ iconicSSize_tโ the signed one, she has layersSTโ the stack top, also two letters, also immenseSTART_EXTERN_Cโ starts the extern C, she begins things โจSTARTPERLโ starts perl, literally starts everything ๐ฌstart_subparseโ (undocumented ๐ซฃ) starts the subparse, behind the scenes queenSTDCHARโ the standard char, dependable ๐STMT_ENDโ ends the statement, closer energySTMT_STARTโ starts the statement, opener energy, they're a duo ๐ซstrEQโ string eq, she compares politely ๐strGEโ string ge, she's generous with her comparisonsstrGTโ string gt, strict queenSTRINGIFYโ she stringifies, that's her whole thing โจstrLEโ string le, gentle againstrLTโ string lt, strict againstrNEโ string ne, she says not equal, respectfully ๐ซถstrnEQโ string n eq, with a length, precise girliestrnNEโ string n ne, also precise, also says noStructCopyโ copies structs, structural icon ๐๏ธSTR_WITH_LENโ the classic combo, str plus len, married ๐sv_2cvโ sv to cv, converting queen ๐ธsv_2ioโ sv to io, also convertingsv_2mortalโ sv to mortal, dramatic ๐ iconicsv_2pvbyteโ sv to pvbyte, very specific, very validSvAMAGIC_offโ (undocumented ๐ซฃ) off girlieSvAMAGIC_onโ (undocumented ๐ซฃ) on girliesv_backoffโ she backs off, respectfully ๐ถโโ๏ธsv_blessโ she blesses, generous queen ๐sv_catpvโ concatenates pv, cat girlie ๐ฑsv_catpv_mgโ same but_mg, she has extra layerssv_catpvnโ concatenates pvn, the n versionsv_catpvn_mgโ pvn and mg, double threatsv_catpvn_nomgโ nomg this time, she said not todaysv_catpvsโ concatenates pvs, pvs girlie ๐sv_catsvโ concatenates sv, sv girliesv_catsv_mgโ sv plus mg, again with layers โจsv_catsv_nomgโ sv, no mg, no notessv_chopโ she chops, brutal but chic ๐ชsv_clearโ she clears, immaculate vibe โจsv_cmpโ she compares, judgmentally but correctly ๐SV_CONST_RETURNโ (undocumented ๐ซฃ) const and mysteriousSV_COW_DROP_PVโ the COW one, moo, iconic ๐SV_COW_SHARED_HASH_KEYSโ (undocumented ๐ซฃ) shared hash keys, cow editionSvCURโ the cur, a legend ๐SvCUR_setโ and her setter, a duosv_decโ she decrements, going down โฌ๏ธsv_dumpโ she dumps, for debugging purposes, no judgmentSvENDโ the end, dramatic โจsv_eqโ she equals, fair and squareSVfโ the f format flag, tiny but mighty ๐SVfARGโ the f arg version, tiny but mighty, twicesv_freeโ she frees, again, generous ๐SVf_UTF8โ the utf8 f flag, ๐ girlieSvGETMAGICโ gets the magic, magician behavior ๐ฉsv_getsโ she gets, plain and simpleSV_GMAGICโ the g magic flag, magical ๐ซSvGROWโ she GROWS ๐ growth mindset queenSV_HAS_TRAILING_NULโ has a trailing nul, and she's not ashamed ๐ซถSV_IMMEDIATE_UNREFโ immediate unref, no waiting, she's direct ๐sv_incโ she increments, going up โฌ๏ธsv_insertโ she inserts, respectfullySvIOKโ iok girlie, checking โ๏ธSvIOK_offโ iok offSvIOK_onโ iok onSvIOK_onlyโ iok only, exclusive ๐SvIOKpโ iokp, the private-ish one ๐ซฃsv_isaโ she isa, identifying queens ๐sv_isobjectโ she asks if it's an object, valid questionSvIVโ THE iv accessor, a whole legend ๐SvIV_nomgโ no mg, just ivSvIV_setโ sets the iv, setter queenSvIVXโ the big X version, mysterious and powerfulSvIVxโ the little x version, lowercase chaossv_lenโ the length, she measures ๐SvLENโ the LEN, capital, authoritativeSvLEN_setโ sets the LEN, definitivesv_magicโ she does magic, literally โจSvMAGIC_setโ sets the magic, magician's assistant ๐ฉsv_mortalcopyโ makes a mortal copy, dramatic but necessary ๐sv_mortalcopy_flagsโ same, with flags, extraSV_MUTABLE_RETURNโ (undocumented ๐ซฃ) mutable and mysterioussv_newmortalโ makes a new mortal, she's spawning ๐ซSvNIOKโ the niok checker, a triple threat ๐SvNIOK_offโ niok offSvNIOKpโ niokp, private vibesSvNOKโ nok girlie โจSvNOK_offโ nok offSvNOK_onโ nok onSvNOK_onlyโ nok only, exclusive again ๐SvNOKpโ nokp, private againSV_NOSTEALโ no steal, hands off bestie โSvNVโ the nv accessor, legendary โจSvNV_nomgโ no mg, just nvSvNV_setโ sets the nv, setter girlieSvNVXโ big X again, so mysteriousSvNVxโ little x again, so lowercaseSvOKโ ok? she's checking ๐SvOOKโ ook, the other check, equally validSvOOK_offโ ook offSvPOKโ pok girlie, checking the p ๐SvPOK_offโ pok offSvPOK_onโ pok onSvPOK_onlyโ pok only, exclusiveSvPOKpโ pokp, privateSvPVโ the pv accessor, an absolute legend ๐SvPVbyteโ pv, byte flavored ๐ธSvPV_constโ pv, const flavored, nothing changesSvPV_flagsโ pv with flags โจSvPV_flags_constโ flags and const, double wrappedSvPV_flags_mutableโ flags and mutable, she changesSvPV_forceโ pv FORCED ๐ชSvPV_force_flagsโ forced, with flagsSvPV_force_flags_mutableโ forced, flagged, and mutable, the full setSvPV_force_flags_nolenโ forced, flagged, no len, trimmed downSvPV_force_mutableโ forced and mutable, a comboSvPV_force_nolenโ forced, no lenSvPV_force_nomgโ forced, no mgSvPV_force_nomg_nolenโ forced, no mg, no len, absolutely stripped backSvPV_mutableโ mutable pv, she's flexiblesv_pvn_force_flagsโ the function form, flags includedSvPV_nolenโ pv, no len, classicSvPV_nolen_constโ no len and constSvPV_nomgโ pv, no mgSvPV_nomg_constโ no mg, constSvPV_nomg_const_nolenโ no mg, const, no len, the whole trioSvPV_nomg_nolenโ no mg, no lenSvPV_renewโ pv renewed, fresh start โจSvPV_setโ sets the pv, setter girlieSvPVXโ big X pv, powerful and mysterious ๐SvPVxโ little x pv, lowercase and cuteSvPVX_constโ big X plus const, unchangeable powerSvPVX_mutableโ big X plus mutable, changeable powerSvPVx_nolen_constโ little x, no len, const, the full stack ๐SvPVXxโ two X's, she's twice as mysterious, we don't even ask ๐ซฃSvREADONLYโ READ ONLY, do not touch, she said what she said ๐ซโจ
okay and we are still not done, the list keeps going, she does not stop, she's a marathon girlie and honestly? respect ๐ซถ
okay bestie, we're still deep in the backported API tea โ๏ธ โ don't worry, we're almost through it, and every single name matters. here's the rest of the list, no cap:
SvREADONLY_offSvREADONLY_onSvREFCNTSvREFCNT_decSvREFCNT_incSvREFCNT_inc_NNSvREFCNT_inc_simpleSvREFCNT_inc_simple_NNSvREFCNT_inc_simple_voidSvREFCNT_inc_simple_void_NNSvREFCNT_inc_voidSvREFCNT_inc_void_NNsv_reftypesv_replacesv_report_usedsv_resetSvROKSvROK_offSvROK_onSvRVSvRV_setSvRXSvRXOKsv_setivsv_setiv_mgSvSETMAGICsv_setnvsv_setnv_mgsv_setpvsv_setpv_mgsv_setpvnsv_setpvn_mgsv_setpvssv_setref_ivsv_setref_nvsv_setref_pvsv_setref_pvnsv_setsvSvSetSVsv_setsv_flagssv_setsv_mgsv_setsv_nomgsv_setuvsv_setuv_mgSvSHARED_HASHSV_SMAGICSvSTASHSvSTASH_setSVs_TEMPSvTAINTSVt_IVSVt_NULLSVt_NVSVt_PVSVt_PVAVSVt_PVCVSVt_PVFMSVt_PVGVSVt_PVHVSVt_PVIOSVt_PVIVSVt_PVLVSVt_PVMGSVt_PVNVSvTRUESvTRUE_nomgSvTRUExSvTYPEsvtype(undocumented)sv_unmagicsv_unmagicextsv_unrefsv_upgradeSvUPGRADEsv_usepvnsv_usepvn_mgSvUTF8SV_UTF8_NO_ENCODING(DEPRECATED)SvUVSvUV_nomgSvUV_setSvUVXSvUVxSvUVXx(DEPRECATED)SvVSTRING_mgswitch_to_global_localesync_localetaint_env(undocumented)taint_proper(undocumented)TARGTHISTime_ttoLOWERtoUPPERUid_tUINT16_CUINT32_CUINTMAX_CUNDERBARUNICODE_REPLACEMENTUNI_TO_NATIVEUNLIKELYunsharepvn(undocumented)USE_DYNAMIC_LOADINGUTF8fUTF8fARGUTF8_IS_INVARIANTUTF8_MAXBYTES_CASEU_VUVCHR_IS_INVARIANTUVCHR_SKIPUV_MAXUV_MINUVofUVSIZEUVTYPEUVufUVxfVAL_EAGAINVAL_O_NONBLOCKvload_modulevwarnWARN_ALLWARN_AMBIGUOUSWARN_ASSERTIONS(undocumented)WARN_BAREWORDWARN_CLOSEDWARN_CLOSUREWARN_DEBUGGINGWARN_DEPRECATEDWARN_DIGITWARN_EXECWARN_EXITINGWARN_GLOBWARN_INPLACEWARN_INTERNALWARN_IOWARN_LAYERWARN_MALLOCWARN_MISCWARN_NEWLINEWARN_NUMERICWARN_ONCEWARN_OVERFLOWWARN_PACKWARN_PARENTHESISWARN_PIPEWARN_PORTABLEWARN_PRECEDENCEWARN_PRINTFWARN_PROTOTYPEWARN_QWWARN_RECURSIONWARN_REDEFINEWARN_REGEXPWARN_RESERVEDWARN_SEMICOLONWARN_SEVEREWARN_SIGNALWARN_SUBSTRwarn_svWARN_SYNTAXWARN_TAINTWARN_THREADSWARN_UNINITIALIZEDWARN_UNOPENEDWARN_UNPACKWARN_UNTIEWARN_UTF8WARN_VOIDwhichsigWIDEST_UTYPE(undocumented)XCPT_CATCHXCPT_RETHROWXCPT_TRY_ENDXCPT_TRY_STARTXPUSHiXPUSHmortalXPUSHnXPUSHpXPUSHsXPUSHuXS(undocumented)XSprePUSH(undocumented)XSPROTO(undocumented)XSRETURNXSRETURN_EMPTYXSRETURN_IVXSRETURN_NOXSRETURN_NVXSRETURN_PVXSRETURN_UNDEFXSRETURN_UVXSRETURN_YESXST_mIVXST_mNOXST_mNVXST_mPVXST_mUNDEFXST_mUVXST_mYESXS_VERSIONXS_VERSION_BOOTCHECKZeroZeroD
๐ป Backported version unknown ๐ป
these ones? we don't even know which version they came from, bestie. spooky. but here they are:
LC_NUMERIC_LOCK(undocumented)LC_NUMERIC_UNLOCK(undocumented)LOCK_NUMERIC_STANDARD(undocumented)NUM2PTR(undocumented)PERLIO_FUNCS_CAST(undocumented)PERLIO_FUNCS_DECL(undocumented)PERL_STACK_OFFSET_DEFINED(undocumented)PERL_STACK_REALIGN(undocumented)Stack_off_t(undocumented)Stack_off_t_MAX(undocumented)STORE_LC_NUMERIC_SET_STANDARD(undocumented)STORE_NUMERIC_SET_STANDARD(undocumented)SvPV_flags_const_nolen(undocumented)SvVSTRING(undocumented)UNLOCK_NUMERIC_STANDARD(undocumented)XSPROTO(undocumented)
๐ BUGS ๐
if you find any bugs, or Devel::PPPort just won't build on your system, or any of its tests are acting up โ please send a bug report to https://github.com/Dual-Life/Devel-PPPort/issues/new. we appreciate you, fr fr.
๐ AUTHORS ๐
- Version 1.x of Devel::PPPort was written by Kenneth Albanowski.
- Version 2.x was ported to the Perl core by Paul Marquess.
- Version 3.x was ported back to CPAN by Marcus Holland-Moritz.
- Versions >= 3.22 are maintained by perl5 porters.
๐ COPYRIGHT ๐
- Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
- Copyright (C) 2018-2020, The perl5 porters.
- Version 2.x, Copyright (C) 2001, Paul Marquess.
- Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
๐ SEE ALSO ๐
See h2xs, ppport.h.
and that's the whole tea, bestie ๐ this was perl v5.44.0, dated 2026-10-17, from Devel::PPPort(3perl). stay iconic, keep slaying those XS projects ๐ โจ๐ฆ
๐ฆ where this page comes from
- arch rolling: perl 5.44.0-1 ยท Artistic-1.0-Perl AND GPL-1.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms