Devel::PPPort(3pm)

๐Ÿ’… Devel::PPPort(3pm) โ€” Perl Programmers Reference Guide

okay so bestie, this is Devel::PPPort โ€” Perl/Pollution/Portability โ€” and it's genuinely one of those modules that quietly keeps the whole XS ecosystem from falling apart. let's get into it ๐ŸŒธ


โœจ NAME โœจ

Devel::PPPort โ€” Perl/Pollution/Portability. yes that's the whole name, she's got range ๐ŸŽ€


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

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');

โญ Start using Devel::PPPort for XS projects

like, the whole vibe in five lines:

$ 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

slay. that's the workflow. copy it, love it, live it ๐Ÿ’–


๐ŸŒˆ DESCRIPTION ๐ŸŒˆ

Perl's API has literally changed over time โ€” gaining new features, new functions, increasing its flexibility, and reducing the impact on the C namespace environment (that's the reduced pollution part, iykyk). The header file written by this module, typically ppport.h, attempts to bring some of the newer Perl API features to older versions of Perl, so that you can worry less about keeping track of old releases โ€” but users can still reap the benefit. everyone wins, no cap โœจ

Devel::PPPort contains two functions, WriteFile and GetFileContents. WriteFile's only purpose is to write the ppport.h C header file. This file contains a series of macros and, if explicitly requested, functions that allow XS modules to be built using older versions of Perl. Currently, Perl versions from 5.003_07 to 5.35.9 are supported. (yes, that's a lot of Perls, she's been busy ๐Ÿ‘‘

GetFileContents can be used to retrieve the file contents rather than writing it out. same energy, different delivery method ๐Ÿซถ

This module is used by h2xs to write the file ppport.h. iconic collaboration honestly.

๐Ÿ’œ Why use ppport.h?

You should use ppport.h in modern code so that your code will work with the widest range of Perl interpreters possible, without significant additional work. literally free compatibility, why would you not ๐ŸŒธ

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! ๐Ÿ˜ญ By adapting to it now, you'll gain compatibility and a sense of having done the electronic ecology some good. main character eco-warrior energy fr fr ๐ŸŒฑ

๐ŸŽ€ How to use ppport.h

Don't direct the users of your module to download Devel::PPPort. They are most probably not XS writers. Also, don't make ppport.h optional. Rather, 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. ship it with the header, bestie, don't make people go hunting ๐Ÿ“ฆ

It is important to use the most recent version of ppport.h. You do need to test before shipping a newer version than 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. they're literally asking, so tell them ๐Ÿ™ˆ

๐Ÿงš 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. like a little portability fairy godmother ๐Ÿงšโœจ 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. self-documenting queen ๐Ÿ‘‘


๐Ÿ”ฅ 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. simple. honest. reliable. we love her ๐Ÿ’…

๐Ÿ“ GetFileContents

GetFileContents behaves like WriteFile above, but returns the contents of the would-be file rather than writing it out. so it's WriteFile but it hands you the goods instead of putting them on disk ๐Ÿซดโœจ


๐Ÿ‘‘ COMPATIBILITY ๐Ÿ‘‘

ppport.h supports Perl versions from 5.003_07 to 5.35.9 in threaded and non-threaded configurations. both flavors, all the way back, she's got you ๐ŸŒˆ

๐ŸŒธ 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 the 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.) so like, check the version table before you assume, bestie ๐Ÿ’œ

okay so before we start unpacking individual entries one by one, here's the whole entire roll call ๐Ÿ’– this is the master list, alphabetically sorted, and it is long โ€” but that's the point. Every single name here got a back-compat glow-up from Devel::PPPort, so if you're porting some crusty XS code and wanna know "does PPPort have my back on this one?", you scroll this list.

no skips. no "and so on". no cap.


๐Ÿ“‹ LIST OF API FUNCTIONS โœจ

read it like a menu, bestie โ€” find your name, then go find its entry. a couple of things to keep in mind while you scan:

  • the ordering is plain alphabetical, so yes, the very first entry starts with an underscore and the case-sensitivity is exactly how it looks ๐Ÿซถ
  • capital letters matter, lowercase matters, trailing underscores matter. aMY_CXT, aMY_CXT_, and _aMY_CXT are three different things and they all live here. the way that C does not play about naming ๐Ÿ’€
  • do not "clean up" any of these when you copy them into your source. copy them character for character or the compiler will simply not recognize you ๐Ÿ™ˆ
  • there are groups in here that lowkey look like families (the is* character-class posse, the PERL_MAGIC_* collection, the PL_* globals) and they are โ€” vibe with them, don't merge them ๐ŸŒธ

and now, the list ๐Ÿ’…

_aMY_CXT
aMY_CXT
aMY_CXT_
__ASSERT_
ASSUME
aTHX
aTHX_
aTHXR
aTHXR_
av_count
AvFILLp
av_tindex
av_top_index
BOM_UTF8
boolSV
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
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
END_EXTERN_C
ERRSV
eval_pv
eval_sv
EXTERN_C
foldEQ_utf8
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
HEf_SVKEY
HeUTF8
hv_fetchs
HvNAME_get
HvNAMELEN_get
hv_stores
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
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
LATIN1_TO_NATIVE
LC_NUMERIC_LOCK
LC_NUMERIC_UNLOCK
LIKELY
load_module
LOCK_LC_NUMERIC_STANDARD
LOCK_NUMERIC_STANDARD
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
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
OpHAS_SIBLING
OpLASTSIB_set
OpMAYBESIB_set
OpMORESIB_set
OpSIBLING
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
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
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
_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
REPLACEMENT_CHARACTER_UTF8
RESTORE_LC_NUMERIC
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

okay that was a lot of scrolling and you ate every single line, iconic behavior honestly ๐Ÿ‘‘ this list is your lookup table โ€” half the battle in XS porting is just knowing the exact spelling of the thing you want, and now you have it, verbatim, no guessing, no typo-induced despair ๐Ÿ˜ญ

keep it open in a split pane, Ctrl+F your way through it, and remember: nothing here is decorative. every name is a real thing you can reach for when your extension needs to work on older perls too ๐Ÿฆ‹

  • STR_WITH_LEN
  • sv_2pv
  • sv_2pvbyte
  • sv_2pvbyte_nolen
  • sv_2pv_flags
  • sv_2pv_nolen
  • sv_2uv
  • sv_catpvf_mg
  • sv_catpvf_mg_nocontext
  • sv_catpv_mg
  • sv_catpvn_mg
  • sv_catpvn_nomg
  • sv_catpvs
  • sv_catsv_mg
  • sv_catsv_nomg
  • SV_CONST_RETURN
  • SV_COW_DROP_PV
  • SV_COW_SHARED_HASH_KEYS
  • SVf
  • SVfARG
  • SVf_UTF8
  • SvGETMAGIC
  • SV_GMAGIC
  • SV_HAS_TRAILING_NUL
  • SV_IMMEDIATE_UNREF
  • SvIV_nomg
  • sv_len_utf8
  • sv_len_utf8_nomg
  • sv_magic_portable
  • SvMAGIC_set
  • sv_mortalcopy_flags
  • SV_MUTABLE_RETURN
  • SV_NOSTEAL
  • SvNV_nomg
  • SvPVbyte
  • SvPVCLEAR
  • SvPV_const
  • SvPV_flags
  • SvPV_flags_const
  • SvPV_flags_const_nolen
  • SvPV_flags_mutable
  • SvPV_force
  • SvPV_force_flags
  • SvPV_force_flags_mutable
  • SvPV_force_flags_nolen
  • SvPV_force_mutable
  • SvPV_force_nolen
  • SvPV_force_nomg
  • SvPV_force_nomg_nolen
  • SvPV_mutable
  • sv_pvn_force_flags
  • sv_pvn_nomg
  • SvPV_nolen
  • SvPV_nolen_const
  • SvPV_nomg
  • SvPV_nomg_const
  • SvPV_nomg_const_nolen
  • SvPV_nomg_nolen
  • SvPV_renew
  • SvPVX_const
  • SvPVX_mutable
  • SvPVx_nolen_const
  • SvREFCNT_dec_NN
  • SvREFCNT_inc
  • SvREFCNT_inc_NN
  • SvREFCNT_inc_simple
  • SvREFCNT_inc_simple_NN
  • SvREFCNT_inc_simple_void
  • SvREFCNT_inc_simple_void_NN
  • SvREFCNT_inc_void
  • SvREFCNT_inc_void_NN
  • SvRV_set
  • SvRX
  • SvRXOK
  • sv_setiv_mg
  • sv_setnv_mg
  • sv_setpvf_mg
  • sv_setpvf_mg_nocontext
  • sv_setpv_mg
  • sv_setpvn_mg
  • sv_setpvs
  • sv_setsv_flags
  • sv_setsv_mg
  • sv_setsv_nomg
  • sv_setuv
  • sv_setuv_mg
  • SvSHARED_HASH
  • SV_SMAGIC
  • SvSTASH_set
  • SvTRUE_nomg
  • sv_unmagicext
  • SvUOK
  • sv_usepvn_mg
  • SvUTF8
  • SV_UTF8_NO_ENCODING
  • sv_uv
  • SvUV
  • SvUV_nomg
  • SvUV_set
  • SvUVX
  • SvUVx
  • SvUVXx
  • sv_vcatpvf
  • sv_vcatpvf_mg
  • SvVOK
  • sv_vsetpvf
  • sv_vsetpvf_mg
  • SvVSTRING
  • sv_vstring_get
  • SvVSTRING_mg
  • switch_to_global_locale
  • sync_locale
  • toFOLD_utf8_safe
  • toFOLD_uvchr
  • toLOWER_utf8_safe
  • toLOWER_uvchr
  • toTITLE_utf8_safe
  • toTITLE_uvchr
  • toUPPER_utf8_safe
  • toUPPER_uvchr
  • UNDERBAR
  • UNICODE_REPLACEMENT
  • UNI_TO_NATIVE
  • UNLIKELY
  • UNLOCK_LC_NUMERIC_STANDARD
  • UNLOCK_NUMERIC_STANDARD
  • UTF8_CHK_SKIP
  • UTF8f
  • UTF8fARG
  • UTF8_IS_INVARIANT
  • UTF8_MAXBYTES
  • UTF8_MAXBYTES_CASE
  • UTF8_SAFE_SKIP
  • UTF8_SKIP
  • utf8_to_uvchr
  • utf8_to_uvchr_buf
  • UVCHR_IS_INVARIANT
  • UVCHR_SKIP
  • UVof
  • UVSIZE
  • UVTYPE
  • UVuf
  • UVXf
  • UVxf
  • vload_module
  • vmess
  • vnewSVpvf
  • vwarner
  • WARN_ALL
  • WARN_AMBIGUOUS
  • WARN_ASSERTIONS
  • WARN_BAREWORD
  • WARN_CLOSED
  • WARN_CLOSURE
  • WARN_DEBUGGING
  • WARN_DEPRECATED
  • WARN_DIGIT
  • warner
  • WARN_EXEC
  • WARN_EXITING
  • WARN_GLOB
  • WARN_INPLACE
  • WARN_INTERNAL
  • WARN_IO
  • WARN_LAYER
  • WARN_MALLOC
  • WARN_MISC
  • WARN_NEWLINE
  • warn_nocontext
  • WARN_NUMERIC
  • WARN_ONCE
  • WARN_OVERFLOW
  • WARN_PACK
  • WARN_PARENTHESIS
  • WARN_PIPE
  • WARN_PORTABLE
  • WARN_PRECEDENCE
  • WARN_PRINTF
  • WARN_PROTOTYPE
  • WARN_QW
  • WARN_RECURSION
  • WARN_REDEFINE
  • WARN_REGEXP
  • WARN_RESERVED
  • WARN_SEMICOLON
  • WARN_SEVERE
  • WARN_SIGNAL
  • WARN_SUBSTR
  • warn_sv
  • WARN_SYNTAX
  • WARN_TAINT
  • WARN_THREADS
  • WARN_UNINITIALIZED
  • WARN_UNOPENED
  • WARN_UNPACK
  • WARN_UNTIE
  • WARN_UTF8
  • WARN_VOID
  • WIDEST_UTYPE
  • XCPT_CATCH
  • XCPT_RETHROW
  • XCPT_TRY_END
  • XCPT_TRY_START
  • XPUSHmortal
  • XPUSHu
  • XSprePUSH
  • XSPROTO
  • XSRETURN
  • XSRETURN_UV
  • XST_mUV
  • ZeroD

โœจ Supported Perl API, sorted by version โœจ

Okay so this table is the whole entire tea: it lists every Perl API element that's available, sorted by the version where support starts. And yes, that means it includes everything ppport.h helps you out with plus the stuff it doesn't. ๐Ÿ’…

Some cases it just doesn't make practical sense to support an element earlier than it already is โ€” like, UTF-8 functionality isn't provided prior to the release where it was first introduced. That's just how the timeline goes, bestie. ๐Ÿ•ฐ๏ธ

But in other cases, it's simply that no one has implemented support yet. Patches welcome, fr fr! Some elements are ported backward for some releases, but not all the way to 5.003_07.

So if an element โ€” call it ELEMENT โ€” isn't on this list, run this and find out why:

perl ppport.h --api-info=ELEMENT

A few entries below are marked as DEPRECATED. Do not use those for new code, and if you've already got them in existing code you should be converting those uses to something better. Periodt. ๐Ÿ’€

Some entries are marked "experimental". That means you should not generally use them โ€” they may be removed or changed without notice. Wanna know why something's experimental? You can ask by sending email to perl5-porters@perl.org. ๐Ÿ“ง

And some entries are marked "undocumented". That means they aren't necessarily considered stable, and could be changed or removed in some future release without warning. So it's a bad idea to use them without further checking. It could be that they're considered perl-core-use-only; or it could be that Devel::PPPort doesn't know where to find their documentation, or that it's just an oversight that they haven't been documented. If you want to use one โ€” and potentially have it backported โ€” first send mail to perl5-porters@perl.org. ๐Ÿซถ

perl 5.35.9

  • NV_ZERO_IS_ALLBITS_ZERO
  • PERL_INC_VERSION_LIST
  • sv_numeq
  • sv_numeq_flags
  • sv_streq
  • sv_streq_flags
  • USE_C_BACKTRACE
  • WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES
  • WARN_EXPERIMENTAL__BUILTIN

perl 5.35.8

  • op_wrap_finally (marked experimental)

perl 5.35.7

  • phase_name

perl 5.35.6

  • CopFILEAVn
  • sv_setpvn_fresh

perl 5.35.5

  • SAVESTRLEN
  • WARN_EXPERIMENTAL__FOR_LIST

perl 5.35.4

  • newDEFEROP (marked experimental)
  • PERL_THREAD_LOCAL
  • ST_DEV_SIGN
  • ST_DEV_SIZE
  • SvIsBOOL
  • sv_setbool
  • sv_setbool_mg
  • sv_setrv_inc
  • sv_setrv_inc_mg
  • sv_setrv_noinc
  • sv_setrv_noinc_mg
  • WARN_EXPERIMENTAL__DEFER

perl 5.35.1

  • av_new_alloc
  • HAS_FFS
  • HAS_FFSL
  • HAS_NL_LANGINFO_L
  • HAS_NON_INT_BITFIELDS
  • HAS_STRXFRM_L
  • newAV_alloc_x
  • newAV_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_pv
  • cop_hints_exists_pvn
  • cop_hints_exists_pvs
  • cop_hints_exists_sv

perl 5.33.7

  • newTRYCATCHOP (marked experimental)
  • WARN_EXPERIMENTAL__TRY

perl 5.33.5

  • GETENV_PRESERVES_OTHER_THREAD
  • pad_compname_type (DEPRECATED)

perl 5.33.2

  • pack_cat (DEPRECATED)

perl 5.32.1

  • GDBMNDBM_H_USES_PROTOTYPES
  • HAS_DBMINIT_PROTO
  • HAS_SOCKADDR_STORAGE
  • I_DBM
  • I_NDBM
  • NDBM_H_USES_PROTOTYPES

perl 5.31.9

  • UNI_DISPLAY_BACKSPACE

perl 5.31.7

  • HASATTRIBUTE_ALWAYS_INLINE
  • HAS_ISLESS
  • HAS_WCRTOMB
  • sv_isa_sv (marked experimental)
  • WARN_EXPERIMENTAL__ISA

perl 5.31.5

  • isALPHANUMERIC_utf8
  • isALPHA_utf8
  • isASCII_utf8
  • isBLANK_utf8
  • isCNTRL_utf8
  • isDIGIT_utf8
  • isGRAPH_utf8
  • isIDCONT_utf8
  • isIDFIRST_utf8
  • isLOWER_utf8
  • isPRINT_utf8
  • isPSXSPC_utf8
  • isPUNCT_utf8
  • isSPACE_utf8
  • isUPPER_utf8
  • isWORDCHAR_utf8
  • isXDIGIT_utf8
  • toFOLD_utf8
  • toLOWER_utf8
  • toTITLE_utf8
  • toUPPER_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_nomg
  • SvPVbyte_or_null
  • SvPVbyte_or_null_nomg
  • SvPVutf8_nomg
  • SvPVutf8_or_null
  • SvPVutf8_or_null_nomg
  • sv_utf8_downgrade_flags
  • sv_utf8_downgrade_nomg

perl 5.31.3

  • parse_subsignature (marked experimental)
  • SANE_ERRSV
  • STORE_LC_NUMERIC_SET_TO_NEEDED_IN
  • WITH_LC_NUMERIC_SET_TO_NEEDED
  • WITH_LC_NUMERIC_SET_TO_NEEDED_IN

perl 5.29.10

  • my_strtod
  • Strtod

perl 5.29.9

  • HAS_TOWLOWER
  • HAS_TOWUPPER
  • I_WCTYPE
  • WARN_EXPERIMENTAL__PRIVATE_USE
  • WARN_EXPERIMENTAL__UNIPROP_WILDCARDS
  • WARN_EXPERIMENTAL__VLB

perl 5.27.11

  • HAS_DUPLOCALE
  • HAS_STRTOD_L

perl 5.27.9

  • PERL_MAGIC_nonelem
  • thread_locale_init (marked experimental) (undocumented)
  • thread_locale_term (marked experimental) (undocumented)
  • utf8n_to_uvchr_msgs
  • uvchr_to_utf8_flags_msgs
  • WARN_EXPERIMENTAL__ALPHA_ASSERTIONS

perl 5.27.8

  • HAS_ACCEPT4
  • HAS_DUP3
  • HAS_MKOSTEMP
  • HAS_PIPE2
  • newWHENOP
  • WARN_EXPERIMENTAL__SCRIPT_RUN

perl 5.27.7

  • WARN_SHADOW

perl 5.27.6

  • HAS_MBRLEN
  • HAS_MBRTOWC
  • HAS_NANOSLEEP
  • HAS_STRNLEN
  • HAS_STRTOLD_L
  • HAS_THREAD_SAFE_NL_LANGINFO_L
  • I_WCHAR
  • wrap_keyword_plugin (marked experimental)

perl 5.27.5

  • HAS_MEMRCHR

perl 5.27.4 ๐Ÿ’–

the compatibility lineup says:

  • HAS_FCHMODAT
  • HAS_LINKAT
  • HAS_OPENAT
  • HAS_RENAMEAT
  • HAS_UNLINKAT
  • mg_freeext
  • Perl_langinfo
  • sv_rvunweaken

perl 5.27.3 ๐ŸŒธ

tiny but iconic batch:

  • cv_get_call_checker_flags
  • PL_sv_zero
  • sv_string_from_errnum

perl 5.27.2 ๐Ÿฆ‹

okay, locale + UTF8 extended-flag girlies:

  • Perl_setlocale
  • UNICODE_DISALLOW_PERL_EXTENDED
  • UNICODE_WARN_PERL_EXTENDED
  • UTF8_DISALLOW_PERL_EXTENDED
  • UTF8_GOT_PERL_EXTENDED
  • UTF8_WARN_PERL_EXTENDED

perl 5.27.1 โœจ

just one, but she ate:

  • is_utf8_invariant_string_loc

perl 5.25.11 ๐ŸŽ€

single-entry moment:

  • DEFAULT_INC_EXCLUDES_DOT

perl 5.25.10 ๐Ÿ’…

another solo star:

  • op_class

perl 5.25.9 ๐ŸŒˆ

yes bestie:

  • isASCII_LC_utf8_safe

perl 5.25.8 ๐Ÿซถ

one more:

  • sv_set_undef

perl 5.25.7 ๐Ÿ”ฅ

this batch is giving double-format lore + utf8 hopping:

  • CLEAR_ERRSV
  • DOUBLE_HAS_NEGATIVE_ZERO
  • DOUBLE_HAS_SUBNORMALS
  • DOUBLE_STYLE_IEEE
  • LONG_DOUBLE_STYLE_IEEE
  • LONG_DOUBLE_STYLE_IEEE_EXTENDED
  • utf8_hop_back
  • utf8_hop_forward
  • utf8_hop_safe

perl 5.25.6 ๐Ÿ‘‘

big UTF8 + float-format energy:

  • DOUBLE_IS_CRAY_SINGLE_64_BIT
  • DOUBLE_IS_IBM_DOUBLE_64_BIT
  • DOUBLE_IS_IBM_SINGLE_32_BIT
  • is_c9strict_utf8_string
  • is_c9strict_utf8_string_loc
  • is_c9strict_utf8_string_loclen
  • is_strict_utf8_string
  • is_strict_utf8_string_loc
  • is_strict_utf8_string_loclen
  • is_utf8_fixed_width_buf_flags
  • is_utf8_fixed_width_buf_loc_flags
  • is_utf8_fixed_width_buf_loclen_flags
  • is_utf8_string_flags
  • is_utf8_string_loc_flags
  • is_utf8_string_loclen_flags
  • SvPVCLEAR
  • sv_setpv_bufsize
  • UTF8_GOT_CONTINUATION
  • UTF8_GOT_EMPTY
  • UTF8_GOT_LONG
  • UTF8_GOT_NONCHAR
  • UTF8_GOT_NON_CONTINUATION
  • UTF8_GOT_OVERFLOW
  • UTF8_GOT_SHORT
  • UTF8_GOT_SUPER
  • UTF8_GOT_SURROGATE
  • utf8n_to_uvchr_error

perl 5.25.5 ๐Ÿ’œ

strict UTF8 checks + illegal C9 interchange flags:

  • isC9_STRICT_UTF8_CHAR
  • isSTRICT_UTF8_CHAR
  • isUTF8_CHAR_flags
  • is_utf8_valid_partial_char
  • is_utf8_valid_partial_char_flags
  • UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE
  • UNICODE_WARN_ILLEGAL_C9_INTERCHANGE
  • UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE
  • UTF8_WARN_ILLEGAL_C9_INTERCHANGE

perl 5.25.4 ๐Ÿงš

short and sweet:

  • HAS_GAI_STRERROR
  • I_XLOCALE
  • LONG_DOUBLE_IS_VAX_H_FLOAT

perl 5.25.3 ๐Ÿ“

float vibes + one experimental heads-up:

  • DOUBLE_HAS_INF
  • DOUBLE_HAS_NAN
  • DOUBLE_IS_VAX_D_FLOAT
  • DOUBLE_IS_VAX_F_FLOAT
  • DOUBLE_IS_VAX_G_FLOAT
  • hv_bucket_ratio (marked experimental)
  • WARN_EXPERIMENTAL__DECLARED_REFS

perl 5.25.2 โญ

one tiny icon:

  • HAS_STRERROR_L

perl 5.25.1 ๐Ÿฆ„

solo entry:

  • op_parent

perl 5.24.0 ๐ŸŒท

one more:

  • HAS_MEMMEM

perl 5.23.9 ๐Ÿ’ซ

locale trio:

  • HAS_FREELOCALE
  • HAS_NEWLOCALE
  • HAS_USELOCALE

perl 5.23.8 ๐Ÿฉท

siginfo constants + some mysterious docs situations:

  • clear_defarray (undocumented)
  • HAS_SIGINFO_SI_ADDR
  • HAS_SIGINFO_SI_BAND
  • HAS_SIGINFO_SI_ERRNO
  • HAS_SIGINFO_SI_PID
  • HAS_SIGINFO_SI_STATUS
  • HAS_SIGINFO_SI_UID
  • HAS_SIGINFO_SI_VALUE
  • leave_adjust_stacks (marked experimental) (undocumented)
  • Perl_savetmps (undocumented)

perl 5.23.6 ๐ŸŽง

doubledouble endianness constants + above-31-bit flags:

  • LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
  • LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE
  • LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE
  • LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE
  • UNICODE_DISALLOW_ABOVE_31_BIT
  • UNICODE_WARN_ABOVE_31_BIT

perl 5.23.5 ๐ŸŒฟ

filesystem/statfs + locale headers + sv_ref:

  • HAS_FSTATFS
  • HAS_FSTATVFS
  • HAS_GETMNTENT
  • HAS_HASMNTOPT
  • HAS_STRUCT_STATFS
  • HAS_STRUCT_STATFS_F_FLAGS
  • HAS_USTAT
  • I_MNTENT
  • I_SYS_MOUNT
  • I_SYS_STATFS
  • I_SYS_STATVFS
  • I_SYS_VFS
  • I_USTAT
  • sv_ref

perl 5.23.2 ๐ŸŒผ

integer + UTF8 classification crew:

  • INT64_C
  • UINT64_C
  • UTF8_IS_NONCHAR
  • UTF8_IS_SUPER
  • UTF8_IS_SURROGATE

perl 5.23.0 ๐Ÿซง

float-byte-size constants:

  • DOUBLEINFBYTES
  • DOUBLEMANTBITS
  • DOUBLENANBYTES
  • LONGDBLINFBYTES
  • LONGDBLMANTBITS
  • LONGDBLNANBYTES
  • NVMANTBITS

perl 5.21.10 ๐Ÿง

LC_NUMERIC manipulation crew:

  • DECLARATION_FOR_LC_NUMERIC_MANIPULATION
  • RESTORE_LC_NUMERIC
  • STORE_LC_NUMERIC_FORCE_TO_UNDERLYING
  • STORE_LC_NUMERIC_SET_TO_NEEDED

perl 5.21.9 ๐Ÿชž

rounding has_* checks + experimental bitwise warning:

  • HAS_LLRINTL
  • HAS_LLROUNDL
  • HAS_LRINTL
  • HAS_LROUNDL
  • WARN_EXPERIMENTAL__BITWISE

perl 5.21.8 ๐Ÿฌ

one experimental function + two experimental warnings:

  • sv_get_backrefs (marked experimental)
  • WARN_EXPERIMENTAL__CONST_ATTR
  • WARN_EXPERIMENTAL__RE_STRICT

perl 5.21.7 ๐Ÿงธ

padname/padlist era + gdbm headers:

  • HAS_REGCOMP
  • HAS_STAT
  • I_GDBM
  • I_GDBMNDBM
  • newPADNAMELIST (marked experimental)
  • newPADNAMEouter (marked experimental)
  • newPADNAMEpvn (marked experimental)
  • newUNOP_AUX
  • padnamelist_fetch (marked experimental)
  • PadnamelistREFCNT (marked experimental)
  • PadnamelistREFCNT_dec (marked experimental)
  • padnamelist_store (marked experimental)
  • PadnameREFCNT (marked experimental)
  • PadnameREFCNT_dec (marked experimental)
  • PADNAMEt_OUTER

perl 5.21.6 ๐Ÿ’ฅ

bestie, this one is a whole era. block ops, IEEE double formats, DOUBLEKIND, and a mountain of math HAS_* checks:

  • block_end
  • block_start
  • DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
  • DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
  • DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN
  • DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN
  • DOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIAN
  • DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN
  • DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
  • DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
  • DOUBLE_IS_UNKNOWN_FORMAT
  • DOUBLEKIND
  • HAS_ASINH
  • HAS_ATANH
  • HAS_CBRT
  • HAS_COPYSIGN
  • HAS_ERF
  • HAS_ERFC
  • HAS_EXP2
  • HAS_EXPM1
  • HAS_FDIM
  • HAS_FMA
  • HAS_FMAX
  • HAS_FMIN
  • HAS_HYPOT
  • HAS_ILOGB
  • HAS_ISNORMAL
  • HAS_LGAMMA
  • HAS_LGAMMA_R
  • HAS_LLRINT
  • HAS_LLROUND
  • HAS_LOG1P
  • HAS_LOG2
  • HAS_LOGB
  • HAS_LRINT
  • HAS_LROUND
  • HAS_NAN
  • HAS_NEARBYINT
  • HAS_NEXTAFTER
  • HAS_NEXTTOWARD
  • HAS_REMAINDER
  • HAS_REMQUO
  • HAS_RINT
  • HAS_ROUND
  • HAS_SCALBN
  • HAS_TGAMMA
  • HAS_TRUNC
  • intro_my
  • newDEFSVOP
  • op_convert_list
  • WARN_LOCALE

perl 5.21.5 ๐Ÿงšโ€โ™€๏ธ

cv + method ops + magic + SV byte/utf8 cats + refaliasing warning:

  • cv_name
  • CV_NAME_NOTQUAL
  • HAS_LC_MONETARY_2008
  • newMETHOP
  • newMETHOP_named
  • PERL_MAGIC_debugvar
  • PERL_MAGIC_lvref
  • SV_CATBYTES
  • SV_CATUTF8
  • WARN_EXPERIMENTAL__REFALIASING

perl 5.21.4 ๐Ÿงฎ

call-checker flags, inf/nan grokking, fegetround/fenv, and a bunch of math functions:

  • CALL_CHECKER_REQUIRE_GV
  • cv_set_call_checker_flags
  • grok_infnan
  • HAS_ACOSH
  • HAS_FEGETROUND
  • HAS_FPCLASSIFY
  • HAS_ISFINITE
  • HAS_ISINFL
  • HAS_J0
  • HAS_J0L
  • HAS_TRUNCL
  • I_FENV
  • isinfnan
  • I_STDINT
  • Perl_acos
  • Perl_asin
  • Perl_atan
  • Perl_cosh
  • Perl_log10
  • Perl_sinh
  • Perl_tan
  • Perl_tanh

perl 5.21.3 ๐ŸŒ™

long-double format lore + LONG_DOUBLEKIND + Perl_ldexp:

  • HAS_LDEXPL
  • LONG_DOUBLE_IS_DOUBLE
  • LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN
  • LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN
  • LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
  • LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
  • LONG_DOUBLE_IS_UNKNOWN_FORMAT
  • LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN
  • LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN
  • LONG_DOUBLEKIND
  • Perl_ldexp

perl 5.21.2 ๐ŸŒบ

number grokking + op sibling splicing + scan/warn constants:

  • grok_number_flags
  • op_sibling_splice
  • PERL_SCAN_TRAILING
  • WARN_MISSING
  • WARN_REDUNDANT

perl 5.21.1 ๐Ÿซ

backtrace/dladdr/pointer-diff/wide-char checks + execinfo + one undocumented:

  • HAS_BACKTRACE
  • HAS_DLADDR
  • HAS_PTRDIFF_T
  • HAS_WCSCMP
  • HAS_WCSXFRM
  • I_EXECINFO
  • markstack_grow (undocumented)

perl 5.19.10 ๐Ÿš

single op-type check:

  • OP_TYPE_IS_OR_WAS

perl 5.19.9 ๐Ÿชฉ

one experimental signatures warning:

  • WARN_EXPERIMENTAL__SIGNATURES

perl 5.19.7 ๐ŸŽฏ

solo:

  • OP_TYPE_IS

perl 5.19.5 ๐ŸงŠ

one experimental postderef warning:

  • WARN_EXPERIMENTAL__POSTDEREF

perl 5.19.4 ๐Ÿ›ผ

safe syscall macros/functions + syscall warning:

  • IS_SAFE_SYSCALL
  • is_safe_syscall
  • WARN_SYSCALLS

perl 5.19.3 ๐Ÿงต

exit constants + a byte-to-UTF8 position function:

  • PERL_EXIT_ABORT
  • PERL_EXIT_WARN
  • sv_pos_b2u_flags

perl 5.19.2 ๐ŸŽˆ

just one:

  • G_METHOD_NAMED

perl 5.19.1 ๐ŸŒป

fold/lower/title/upper case macro crew:

  • toFOLD
  • toFOLD_A
  • toLOWER_A
  • toLOWER_L1
  • toTITLE
  • toTITLE_A
  • toUPPER_A

perl 5.18.0 ๐ŸŒต

one undocumented:

  • hv_rand_set (undocumented)

perl 5.17.11 ๐Ÿช

one experimental smartmatch warning:

  • WARN_EXPERIMENTAL__SMARTMATCH

perl 5.17.8 ๐ŸŒŠ

locale checks + experimental regex sets warning:

  • isALPHANUMERIC_LC_uvchr
  • isIDCONT_LC_uvchr
  • WARN_EXPERIMENTAL__REGEX_SETS

perl 5.17.7 ๐Ÿ‰

locale category checks + refcount/true fast macros:

  • isALNUMC_LC_uvchr
  • isASCII_LC_uvchr
  • isBLANK_LC_uvchr
  • isPSXSPC_LC_uvchr
  • isWORDCHAR_LC_uvchr
  • isXDIGIT_LC_uvchr
  • SvREFCNT_dec_NN
  • SvTRUE_NN
  • SvTRUE_nomg_NN

perl 5.17.6 ๐Ÿงƒ

one:

  • READ_XDIGIT

perl 5.17.5 ๐Ÿชด

one experimental lexical subs warning:

  • WARN_EXPERIMENTAL__LEXICAL_SUBS

perl 5.17.4 ๐ŸŽช

super-gv + IP MREQ source + a whole pad/padlist/padname situation + experimental warnings:

  • GV_SUPER
  • HAS_IP_MREQ_SOURCE
  • newMYSUB (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

perl 5.17.2 ๐ŸŒธ

IP MREQ + relocatable inc + sv-copypv/vcatpvfn flags:

  • HAS_IP_MREQ
  • PERL_RELOCATABLE_INC
  • sv_copypv_flags
  • sv_copypv_nomg
  • sv_vcatpvfn_flags

perl 5.17.1 ๐ŸŒŸ

one experimental + one cop stash setter:

  • alloccopstash (marked experimental)
  • CopSTASHPV_set

perl 5.16.0 ๐ŸŽ€

cop label length crew:

  • CopLABEL_len
  • CopLABEL_len_flags

perl 5.15.8 ๐Ÿฆ‹

IPv6 MREQ + sockaddr_in6 + utf8 char buf + op checker wrapper:

  • HAS_IPV6_MREQ
  • HAS_SOCKADDR_IN6
  • is_utf8_char_buf
  • wrap_op_checker

perl 5.15.7 ๐ŸŒผ

one:

  • HAS_ISBLANK

perl 5.15.6 ๐Ÿ’ซ

one:

  • newCONSTSUB_flags

๐Ÿ’œ perl 5.15.4 ๐Ÿ’œ

Okay bestie, this drop is giving autoload era and honestly the gv_* family is eating:

  • 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_pv
  • gv_fetchmeth_pv_autoload
  • gv_fetchmeth_pvn
  • gv_fetchmeth_pvn_autoload
  • gv_fetchmeth_sv
  • gv_fetchmeth_sv_autoload
  • gv_init_pv
  • gv_init_sv
  • HvENAMELEN
  • HvENAMEUTF8
  • HvNAMELEN
  • HvNAMEUTF8
  • newGVgen_flags โ€” (undocumented)
  • sv_derived_from_pv
  • sv_derived_from_pvn
  • sv_derived_from_sv
  • sv_does_pv
  • sv_does_pvn
  • sv_does_sv
  • whichsig_pv
  • whichsig_pvn
  • whichsig_sv

โœจ perl 5.15.3 โœจ

  • GV_ADDMG
  • gv_fetchsv_nomg
  • GV_NO_SVGMAGIC
  • I_STDBOOL
  • QUAD_IS___INT64

๐ŸŽ€ perl 5.15.2 ๐ŸŽ€

  • ST_INO_SIGN
  • ST_INO_SIZE
  • XS_EXTERNAL โ€” (undocumented)
  • XS_INTERNAL โ€” (undocumented)

๐Ÿฆ‹ perl 5.15.1 ๐Ÿฆ‹

The pad squad arrived and they brought friends:

  • cv_clone
  • pad_add_anon
  • pad_add_name_pv
  • pad_add_name_pvn
  • pad_add_name_pvs
  • pad_add_name_sv
  • pad_alloc โ€” (marked experimental)
  • pad_findmy_pv
  • pad_findmy_pvn
  • pad_findmy_pvs
  • pad_findmy_sv
  • pad_new
  • pad_tidy โ€” (marked experimental)

๐ŸŒธ perl 5.13.10 ๐ŸŒธ

  • WARN_NONCHAR
  • WARN_NON_UNICODE
  • WARN_SURROGATE

๐Ÿ’… perl 5.13.9 ๐Ÿ’…

This one is the whole unicode-disallow/warn collection and it is so much, but every single one is here, no cap:

  • HAS_SIN6_SCOPE_ID
  • PERL_PV_ESCAPE_NONASCII
  • UNICODE_DISALLOW_ILLEGAL_INTERCHANGE
  • UNICODE_DISALLOW_NONCHAR
  • UNICODE_DISALLOW_SUPER
  • UNICODE_DISALLOW_SURROGATE
  • UNICODE_IS_NONCHAR
  • UNICODE_IS_SUPER
  • UNICODE_WARN_ILLEGAL_INTERCHANGE
  • UNICODE_WARN_NONCHAR
  • UNICODE_WARN_SUPER
  • UNICODE_WARN_SURROGATE
  • UTF8_DISALLOW_ILLEGAL_INTERCHANGE
  • UTF8_DISALLOW_NONCHAR
  • UTF8_DISALLOW_SUPER
  • UTF8_DISALLOW_SURROGATE
  • UTF8_WARN_ILLEGAL_INTERCHANGE
  • UTF8_WARN_NONCHAR
  • UTF8_WARN_SUPER
  • UTF8_WARN_SURROGATE

๐Ÿซถ perl 5.13.8 ๐Ÿซถ

Four parse_* besties, all four experimental, all four iconic:

  • parse_arithexpr โ€” (marked experimental)
  • parse_fullexpr โ€” (marked experimental)
  • parse_listexpr โ€” (marked experimental)
  • parse_termexpr โ€” (marked experimental)

๐Ÿ˜ญ perl 5.13.7 ๐Ÿ˜ญ

The cophh era, lowkey legendary. Buckle in:

  • amagic_deref_call โ€” (undocumented)
  • bytes_cmp_utf8
  • cophh_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_UTF8
  • cophh_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_2hv
  • cop_hints_fetch_pv
  • cop_hints_fetch_pvn
  • cop_hints_fetch_pvs
  • cop_hints_fetch_sv
  • dirp_dup โ€” (undocumented)
  • HvENAME
  • lex_start โ€” (marked experimental)
  • newFOROP
  • newWHILEOP
  • OP_CLASS
  • op_lvalue โ€” (marked experimental)
  • op_scope โ€” (marked experimental)
  • parse_barestmt โ€” (marked experimental)
  • parse_block โ€” (marked experimental)
  • parse_label โ€” (marked experimental)
  • PARSE_OPTIONAL
  • Perl_custom_op_register โ€” (undocumented)
  • PL_phase
  • XopDISABLE
  • XopENABLE
  • XopENTRY
  • XopENTRYCUSTOM
  • XopENTRY_set
  • XopFLAGS

๐Ÿ”ฅ perl 5.13.6 ๐Ÿ”ฅ

Big list, big slay. The call-checker girlies and the sv_*_flags squad both showed up:

  • ck_entersub_args_list
  • ck_entersub_args_proto
  • ck_entersub_args_proto_or_list
  • cv_get_call_checker
  • cv_set_call_checker
  • gv_fetchpvn
  • lex_stuff_pv โ€” (marked experimental)
  • LINKLIST
  • load_module_nocontext
  • mg_free_type
  • newSVpv_share
  • op_append_elem
  • op_append_list
  • op_contextualize
  • op_linklist
  • op_prepend_elem
  • parse_stmtseq โ€” (marked experimental)
  • PERL_MAGIC_checkcall
  • rv2cv_op_cv
  • RV2CVOPCV_MARK_EARLY
  • RV2CVOPCV_RETURN_NAME_GV
  • save_pushi32ptr โ€” (undocumented)
  • save_pushptrptr โ€” (undocumented)
  • savesharedpvs
  • savesharedsvpv
  • sv_catpv_flags
  • sv_catpv_nomg
  • sv_catpvs_flags
  • sv_catpvs_mg
  • sv_catpvs_nomg
  • sv_cmp_flags
  • sv_cmp_locale_flags
  • sv_collxfrm_flags
  • sv_eq_flags
  • sv_setpvs_mg
  • sv_setref_pvs

โญ perl 5.13.5 โญ

  • hv_copy_hints_hv
  • lex_stuff_pvs โ€” (marked experimental)
  • parse_fullstmt โ€” (marked experimental)
  • PL_rpeepp
  • save_hints โ€” (undocumented)

๐Ÿ’– perl 5.13.4 ๐Ÿ’–

Static inline nation rise:

  • HAS_STATIC_INLINE
  • PERL_STATIC_INLINE
  • XS_APIVERSION_BOOTCHECK

๐ŸŒˆ perl 5.13.3 ๐ŸŒˆ

  • Perl_blockhook_register โ€” (undocumented)

๐Ÿ“ perl 5.13.2 ๐Ÿ“

  • find_rundefsv
  • foldEQ
  • foldEQ_locale
  • Perl_clone_params_del โ€” (undocumented)
  • Perl_clone_params_new โ€” (undocumented)
  • Perl_hv_fill โ€” (undocumented)
  • sv_dec_nomg
  • sv_dup_inc โ€” (undocumented)
  • sv_inc_nomg

๐Ÿงš perl 5.13.1 ๐Ÿงš

  • sv_2nv_flags

๐Ÿ’œ perl 5.13.0 ๐Ÿ’œ

  • HAS_PRCTL
  • HAS_PRCTL_SET_NAME

๐ŸŽ€ perl 5.11.5 ๐ŸŽ€

  • sv_pos_u2b_flags

๐Ÿฆ‹ perl 5.11.4 ๐Ÿฆ‹

  • prescan_version
  • WARN_ILLEGALPROTO

๐ŸŒธ perl 5.11.2 ๐ŸŒธ

The lexer girlies arrived and it's giving main character energy:

  • CHARBITS
  • ENTER_with_name
  • LEAVE_with_name
  • lex_bufutf8 โ€” (marked experimental)
  • lex_discard_to โ€” (marked experimental)
  • lex_grow_linestr โ€” (marked experimental)
  • LEX_KEEP_PREVIOUS
  • lex_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_UTF8
  • lex_unstuff โ€” (marked experimental)
  • PL_keyword_plugin โ€” (marked experimental)
  • toLOWER_LATIN1

๐Ÿ’… perl 5.11.0 ๐Ÿ’…

  • gv_add_by_type โ€” (undocumented)
  • Gv_AMupdate โ€” (undocumented)
  • is_ascii_string
  • is_invariant_string
  • is_utf8_invariant_string
  • PL_opfreehook
  • PUSH_MULTICALL
  • re_dup_guts
  • save_adelete โ€” (undocumented)
  • save_aelem_flags โ€” (undocumented)
  • save_hdelete โ€” (undocumented)
  • save_helem_flags โ€” (undocumented)
  • setdefout
  • SV_FORCE_UTF8_UPGRADE
  • SvOOK_offset
  • SVt_REGEXP
  • sv_utf8_upgrade_flags_grow
  • WARN_IMPRECISION

๐Ÿซถ perl 5.10.1 ๐Ÿซถ

  • GMTIME_MAX
  • GMTIME_MIN
  • HASATTRIBUTE_DEPRECATED
  • HAS_BUILTIN_EXPECT
  • HAS_GETADDRINFO
  • HAS_GETNAMEINFO
  • HAS_INETNTOP
  • HAS_INETPTON
  • HAS_TIMEGM
  • HvMROMETA
  • I_SYS_POLL
  • LOCALTIME_MAX
  • LOCALTIME_MIN
  • MRO_GET_PRIVATE_DATA
  • NV_OVERFLOWS_INTEGERS_AT
  • Perl_mro_get_from_name โ€” (undocumented)
  • Perl_mro_register โ€” (undocumented)
  • Perl_mro_set_mro โ€” (undocumented)
  • Perl_mro_set_private_data โ€” (undocumented)
  • PERL_USE_DEVEL
  • SAVEFREEOP
  • save_op โ€” (undocumented)
  • save_padsv_and_mortalize โ€” (undocumented)
  • save_pushptr โ€” (undocumented)
  • sv_insert_flags

๐Ÿ˜ญ perl 5.10.0 ๐Ÿ˜ญ

Look at all these _R reentrant checks, genuinely so many, but every one gets its moment:

  • HAS_ASCTIME_R
  • HAS_CRYPT_R
  • HAS_CTIME_R
  • HAS_DRAND48_R
  • HAS_GETGRENT_R
  • HAS_GETGRGID_R
  • HAS_GETGRNAM_R
  • HAS_GETHOSTBYADDR_R
  • HAS_GETHOSTBYNAME_R
  • HAS_GETHOSTENT_R
  • HAS_GETLOGIN_R
  • HAS_GETNETBYADDR_R
  • HAS_GETNETBYNAME_R
  • HAS_GETNETENT_R
  • HAS_GETPROTOBYNAME_R
  • HAS_GETPROTOBYNUMBER_R
  • HAS_GETPROTOENT_R
  • HAS_GETPWENT_R
  • HAS_GETPWNAM_R
  • HAS_GETPWUID_R
  • HAS_GETSERVBYNAME_R
  • HAS_GETSERVBYPORT_R
  • HAS_GETSERVENT_R
  • HAS_GETSPNAM_R
  • HAS_GMTIME_R
  • HAS_LOCALTIME_R
  • HAS_OFF64_T
  • HAS_PTHREAD_ATFORK
  • HAS_RANDOM_R
  • HAS_READDIR64_R
  • HAS_READDIR_R
  • HAS_SETRESGID_PROTO
  • HAS_SETRESUID_PROTO
  • HAS_SRAND48_R
  • HAS_SRANDOM_R
  • HAS_STRERROR_R
  • HAS_TMPNAM_R
  • HAS_TTYNAME_R
  • LOCALTIME_R_NEEDS_TZSET
  • START_MY_CXT
  • sv_destroyable
  • USE_ITHREADS
  • UVf โ€” (DEPRECATED)
Heads up bestie: UVf is DEPRECATED, so likeโ€ฆ don't build your whole personality on it, mwah.

๐Ÿ”ฅ perl 5.9.5 ๐Ÿ”ฅ

  • CopLABEL
  • find_runcv
  • gv_fetchfile_flags
  • HAS_CTERMID
  • HAS_PTHREAD_YIELD
  • HAS_SIGNBIT
  • L_R_TZSET
  • mro_get_linear_isa
  • mro_method_changed_in
  • my_dirfd โ€” (undocumented)
  • Perl_av_create_and_push โ€” (undocumented)
  • Perl_av_create_and_unshift_one โ€” (undocumented)
  • Perl_signbit โ€” (marked experimental)
  • pregcomp
  • PRINTF_FORMAT_NULL_OK
  • ptr_table_fetch โ€” (undocumented)
  • ptr_table_free โ€” (undocumented)
  • ptr_table_new โ€” (undocumented)
  • ptr_table_split โ€” (undocumented)
  • ptr_table_store โ€” (undocumented)
  • re_compile โ€” (undocumented)
  • savesharedpvn
  • scan_vstring โ€” (undocumented)
  • upg_version

๐Ÿ’œ perl 5.9.4 ๐Ÿ’œ

  • gv_name_set โ€” (undocumented)
  • GV_NOTQUAL
  • HAS_BUILTIN_CHOOSE_EXPR
  • HAS_C99_VARIADIC_MACROS
  • my_vsnprintf
  • newXS_flags โ€” (marked experimental) (undocumented)
  • PERL_MAGIC_hints
  • PERL_MAGIC_hintselem
  • Perl_PerlIO_context_layers โ€” (undocumented)
  • sv_does
  • sv_nounlocking โ€” (DEPRECATED)
  • sv_usepvn_flags
Another one, bestie: sv_nounlocking is DEPRECATED too. Not me warning you twice in one page ๐Ÿ’€

okay so this is the actual timeline of when each little symbol slid into core perl โ€” Devel::PPPort backports them all so ur XS code can vibe on older perls. here we go, chronologically backwards, as one does ๐Ÿ’…


perl 5.9.3 ๐Ÿฆ‹

the 5.9.3 drop, and she brought a whole crowd:

  • dMULTICALL
  • doref โ€” (undocumented), no docs anywhere, she's a mystery ๐Ÿ™ˆ
  • gv_const_sv
  • GV_NOADD_NOINIT
  • GV_NOEXPAND
  • HASATTRIBUTE_FORMAT
  • HASATTRIBUTE_MALLOC
  • HASATTRIBUTE_NONNULL
  • HASATTRIBUTE_NORETURN
  • HASATTRIBUTE_PURE
  • HASATTRIBUTE_UNUSED
  • HASATTRIBUTE_WARN_UNUSED_RESULT
  • HAS_CLEARENV
  • HAS_FUTIMES
  • HAS_MODFL_PROTO
  • HAS_SNPRINTF
  • HAS_UNSETENV
  • HAS_VSNPRINTF
  • hv_name_set โ€” (undocumented)
  • is_utf8_string_loclen
  • LIBM_LIB_VERSION
  • MULTICALL
  • newGIVENOP
  • newSVhek
  • Perl_hv_eiter_p โ€” (undocumented)
  • Perl_hv_eiter_set โ€” (undocumented)
  • Perl_hv_placeholders_get โ€” (undocumented)
  • Perl_hv_placeholders_set โ€” (undocumented)
  • Perl_hv_riter_p โ€” (undocumented)
  • Perl_hv_riter_set โ€” (undocumented)
  • PERLIO_FUNCS_DECL โ€” (undocumented)
  • PERL_MAGIC_arylen_p
  • PERL_MAGIC_rhash
  • PERL_MAGIC_symtab
  • POP_MULTICALL
  • savepvs
  • seed โ€” (undocumented)
  • share_hek โ€” (undocumented)
  • sortsv_flags
  • SvPVbytex_nolen
  • SvPV_free
  • SvPVx_const
  • SvPVx_nolen
  • vverify

perl 5.9.2 ๐ŸŒธ

smaller batch, but she's got range:

  • find_rundefsvoffset โ€” (DEPRECATED), she's been retired ๐Ÿ’€
  • op_refcnt_lock โ€” (undocumented)
  • op_refcnt_unlock โ€” (undocumented)
  • PERL_MALLOC_WRAP
  • savesvpv
  • SvPVbyte_force
  • vnormal

perl 5.9.1 ๐ŸŽ€

six little icons, no notes:

  • hv_clear_placeholders
  • hv_scalar
  • Perl_ceil
  • scan_version
  • sv_2iv_flags
  • sv_2uv_flags

perl 5.9.0 โœจ

the versioning era begins, and the MY_CXT family ate:

  • _aMY_CXT
  • aMY_CXT
  • aMY_CXT_
  • dMY_CXT
  • hek_dup โ€” (undocumented)
  • MY_CXT
  • MY_CXT_CLONE
  • MY_CXT_INIT
  • new_version
  • parser_dup โ€” (undocumented)
  • Perl_my_cxt_init โ€” (undocumented)
  • _pMY_CXT
  • pMY_CXT
  • pMY_CXT_
  • save_set_svflags โ€” (undocumented)
  • SVs_PADSTALE
  • vcmp
  • vnumify
  • vstringify

perl 5.8.9 ๐Ÿ’œ

a single solitary queen:

  • Perl_hv_assert โ€” (undocumented), no docs, just vibes ๐Ÿ™ˆ

perl 5.8.8 ๐Ÿ“

just two, matching energy:

  • __ASSERT_
  • rvpv_dup โ€” (undocumented)

perl 5.8.3 ๐ŸŒˆ

the copy-on-write girlies arrive:

  • SvIsCOW
  • SvIsCOW_shared_hash

perl 5.8.1 ๐Ÿงš

okay this one's stacked, and two of them are flagged (marked experimental) so lowkey tread carefully:

  • CvPADLIST โ€” (marked experimental)
  • HAS_COPYSIGNL
  • HAS_FAST_STDIO
  • HAS_ILOGBL
  • HAS_PTHREAD_ATTR_SETSCOPE
  • HAS_SCALBNL
  • HAS_TM_TM_GMTOFF
  • IN_PERL_RUNTIME
  • is_utf8_string_loc
  • packlist
  • PL_comppad โ€” (marked experimental)
  • SAVEBOOL
  • savestack_grow_cnt โ€” (undocumented)
  • sv_cat_decode
  • sv_setpviv โ€” (DEPRECATED) ๐Ÿ’€
  • sv_setpviv_mg โ€” (DEPRECATED) ๐Ÿ’€
  • SvVOK
  • unpackstring

perl 5.8.0 ๐Ÿซถ

this is the _R_PROTO era bestie, she showed up with the entire thread-safety collection and honestly? iconic. also a few strays tagged (marked experimental) and one that's both (marked experimental) and (undocumented):

  • ASCTIME_R_PROTO
  • CRYPT_R_PROTO
  • CTERMID_R_PROTO
  • CTIME_R_PROTO
  • DRAND48_R_PROTO
  • ENDGRENT_R_PROTO
  • ENDHOSTENT_R_PROTO
  • ENDNETENT_R_PROTO
  • ENDPROTOENT_R_PROTO
  • ENDPWENT_R_PROTO
  • ENDSERVENT_R_PROTO
  • GETGRENT_R_PROTO
  • GETGRGID_R_PROTO
  • GETGRNAM_R_PROTO
  • GETHOSTBYADDR_R_PROTO
  • GETHOSTBYNAME_R_PROTO
  • GETHOSTENT_R_PROTO
  • GETLOGIN_R_PROTO
  • GETNETBYADDR_R_PROTO
  • GETNETBYNAME_R_PROTO
  • GETNETENT_R_PROTO
  • GETPROTOBYNAME_R_PROTO
  • GETPROTOBYNUMBER_R_PROTO
  • GETPROTOENT_R_PROTO
  • GETPWENT_R_PROTO
  • GETPWNAM_R_PROTO
  • GETPWUID_R_PROTO
  • GETSERVBYNAME_R_PROTO
  • GETSERVBYPORT_R_PROTO
  • GETSERVENT_R_PROTO
  • GETSPNAM_R_PROTO
  • GMTIME_R_PROTO
  • HAS_TIME
  • HAS_TM_TM_ZONE
  • HeUTF8
  • hv_iternext_flags โ€” (marked experimental)
  • HV_ITERNEXT_WANTPLACEHOLDERS
  • hv_store_flags โ€” (marked experimental) and (undocumented)
  • I_CRYPT
  • LOCALTIME_R_PROTO
  • nothreadhook
  • RANDOM_R_PROTO
  • READDIR64_R_PROTO
  • READDIR_R_PROTO
  • SETGRENT_R_PROTO
  • SETHOSTENT_R_PROTO
  • SETLOCALE_R_PROTO
  • SETNETENT_R_PROTO
  • SETPROTOENT_R_PROTO
  • SETPWENT_R_PROTO
  • SETSERVENT_R_PROTO
  • SRAND48_R_PROTO
  • SRANDOM_R_PROTO
  • STRERROR_R_PROTO
  • TMPNAM_R_PROTO
  • TTYNAME_R_PROTO

perl 5.7.3 ๐Ÿ’ซ

okay 5.7.3 is serving a lot โ€” dup functions, the PerlIO crew, the UNI_DISPLAY flags, all of it:

  • atfork_lock โ€” (undocumented)
  • atfork_unlock โ€” (undocumented)
  • custom_op_desc โ€” (DEPRECATED) ๐Ÿ’€
  • custom_op_name โ€” (DEPRECATED) ๐Ÿ’€
  • debstack โ€” (undocumented)
  • debstackptrs โ€” (undocumented)
  • foldEQ_utf8
  • fp_dup โ€” (undocumented)
  • gp_dup โ€” (undocumented)
  • gv_fetchmeth_autoload
  • HAS_DIRFD
  • HAS_FINITE
  • HAS_FINITEL
  • HAS_ISINF
  • HAS_PROCSELFEXE
  • he_dup โ€” (undocumented)
  • ibcmp_utf8
  • mg_dup โ€” (undocumented)
  • my_fork โ€” (undocumented)
  • my_socketpair โ€” (undocumented)
  • OP_DESC
  • OP_NAME
  • Perl_deb โ€” (undocumented)
  • Perl_deb_nocontext โ€” (undocumented)
  • perl_destruct
  • PERL_EXIT_DESTRUCT_END
  • PerlIO_clearerr
  • PerlIO_close
  • PerlIO_eof
  • PerlIO_error
  • PerlIO_fileno
  • PerlIO_flush
  • PerlIO_get_base
  • PerlIO_get_bufsiz
  • PerlIO_get_cnt
  • PerlIO_get_ptr
  • PERLIO_K_MULTIARG
  • PerlIO_read
  • PerlIO_seek
  • PerlIO_set_cnt
  • PerlIO_setlinebuf
  • PerlIO_set_ptrcnt
  • PerlIO_stderr
  • PerlIO_stdin
  • PerlIO_stdout
  • PerlIO_tell
  • PerlIO_unread โ€” (undocumented)
  • PerlIO_write
  • Perl_isfinite
  • Perl_isinf
  • PL_peepp
  • PROCSELFEXE_PATH
  • pv_uni_display
  • savesharedpv
  • save_shared_pvref โ€” (undocumented)
  • si_dup โ€” (undocumented)
  • sortsv
  • ss_dup โ€” (undocumented)
  • sv_copypv
  • sv_dup โ€” (undocumented)
  • SvLOCK
  • sv_magicext
  • sv_nosharing
  • sv_recode_to_utf8
  • SvSHARE
  • sv_uni_display
  • SvUNLOCK
  • UNI_DISPLAY_BACKSLASH
  • UNI_DISPLAY_ISPRINT
  • UNI_DISPLAY_QQ
  • UNI_DISPLAY_REGEX
  • unpack_str โ€” (DEPRECATED) ๐Ÿ’€
  • uvchr_to_utf8_flags
  • vdeb โ€” (undocumented)

perl 5.7.2 ๐ŸŒŸ

the Berkeley DB constants, the locale stuff, and a whole row of (undocumented) allocator friends:

  • DB_VERSION_MAJOR_CFG
  • DB_VERSION_MINOR_CFG
  • DB_VERSION_PATCH_CFG
  • getcwd_sv
  • HAS_FCHDIR
  • HAS_FLOCK_PROTO
  • HAS_NL_LANGINFO
  • HAS_SOCKATMARK_PROTO
  • HAS_STRFTIME
  • HAS_SYSCALL_PROTO
  • HAS_USLEEP_PROTO
  • I_LANGINFO
  • init_tm โ€” (undocumented)
  • mini_mktime
  • op_null
  • OSVERS
  • Perl_calloc โ€” (undocumented)
  • Perl_malloc โ€” (undocumented)
  • Perl_mfree โ€” (undocumented)
  • Perl_my_strftime โ€” (undocumented)
  • Perl_realloc โ€” (undocumented)
  • PERL_TARGETARCH
  • sv_catpvn_flags
  • sv_catsv_flags
  • sv_utf8_upgrade_flags
  • sv_utf8_upgrade_nomg
  • U_32
  • UNICODE_IS_REPLACEMENT

perl 5.7.1 ๐Ÿ”ฅ

this one is so long, she's giving main character energy. the is*_LC_uvchr family, the whole PERLIO_F_* flag set, and bytes_from_utf8 is (marked experimental):

  • bytes_from_utf8 โ€” (marked experimental)
  • do_openn โ€” (undocumented)
  • FCNTL_CAN_LOCK
  • gv_handler โ€” (undocumented)
  • HAS_FSYNC
  • HAS_GETITIMER
  • HAS_GETPAGESIZE
  • HAS_READV
  • HAS_RECVMSG
  • HAS_SBRK_PROTO
  • HAS_SENDMSG
  • HAS_SETITIMER
  • HAS_SIGPROCMASK
  • HAS_SOCKATMARK
  • HAS_STRTOQ
  • HAS_STRUCT_CMSGHDR
  • HAS_STRUCT_MSGHDR
  • HAS_UALARM
  • HAS_USLEEP
  • HAS_WRITEV
  • isALNUM_LC_uvchr
  • isALPHA_LC_uvchr
  • isCNTRL_LC_uvchr
  • isDIGIT_LC_uvchr
  • isGRAPH_LC_uvchr
  • isIDFIRST_LC_uvchr
  • isLOWER_LC_uvchr
  • is_lvalue_sub โ€” (undocumented)
  • isPRINT_LC_uvchr
  • isPUNCT_LC_uvchr
  • isSPACE_LC_uvchr
  • isUPPER_LC_uvchr
  • my_popen_list โ€” (undocumented)
  • NEED_VA_COPY
  • PerlIO_apply_layers
  • PerlIO_binmode
  • PerlIO_debug
  • PERLIO_F_APPEND
  • PERLIO_F_CANREAD
  • PERLIO_F_CANWRITE
  • PERLIO_F_CRLF
  • PERLIO_F_EOF
  • PERLIO_F_ERROR
  • PERLIO_F_FASTGETS
  • PERLIO_F_LINEBUF
  • PERLIO_F_OPEN
  • PERLIO_F_RDBUF
  • PERLIO_F_TEMP
  • PERLIO_F_TRUNCATE
  • PERLIO_F_UNBUF
  • PERLIO_F_UTF8
  • PERLIO_F_WRBUF
  • PERLIO_K_BUFFERED
  • PERLIO_K_CANCRLF
  • PERLIO_K_FASTGETS
  • PERLIO_K_RAW
  • Perl_printf_nocontext โ€” (undocumented)
  • POPpbytex
  • SAVEMORTALIZESV
  • SIG_SIZE
  • STDIO_PTR_LVAL_SETS_CNT
  • sv_force_normal_flags
  • sv_setref_uv
  • sv_unref_flags
  • sv_utf8_upgrade
  • U32_ALIGNMENT_REQUIRED
  • UNICODE_IS_SURROGATE
  • USE_PERLIO
  • UTF8_CHECK_ONLY
  • utf8_length
  • utf8n_to_uvchr
  • uvchr_to_utf8
  • UVXf

perl 5.7.0 โญ

tiny era, big FILE_* energy:

  • FILE_base
  • FILE_bufsiz
  • FILE_cnt
  • FILE_ptr
  • PerlIO_fill โ€” (undocumented)

perl 5.6.1 ๐ŸŽ€

the oldest one in this batch, and she's a mixed bag โ€” two (marked experimental), one that's (marked experimental) and (undocumented), and one (DEPRECATED) ๐Ÿ’€:

  • apply_attrs_string โ€” (marked experimental) and (undocumented)
  • bytes_to_utf8 โ€” (marked experimental)
  • gv_efullname4 โ€” (undocumented)
  • gv_fullname4 โ€” (undocumented)
  • HAS_FREXPL
  • HAS_ISNAN
  • HAS_ISNANL
  • HAS_MODFL
  • isPSXSPC_LC
  • isUTF8_CHAR
  • is_utf8_string
  • NV_PRESERVES_UV_BITS
  • NVSIZE
  • Perl_isnan
  • PERL_PRIeldbl
  • PERL_SCNfldbl
  • save_generic_pvref โ€” (undocumented)
  • SvGAMAGIC
  • utf8_to_bytes โ€” (marked experimental)
  • utf8_to_uvchr โ€” (DEPRECATED) ๐Ÿ’€
  • utf8_to_uvchr_buf

๐ŸŒธ perl 5.6.0

okay so THIS is the big one โ€” 5.6.0 is giving main character energy with the longest roster in the whole list ๐Ÿ˜ญ buckle up bestie, we're going through every single one ๐Ÿ’…

  • av_delete
  • av_exists
  • call_atexit โ€” (undocumented)
  • caller_cx
  • CopLINE
  • CPPLAST
  • CPPRUN
  • do_open9 โ€” (DEPRECATED) (undocumented)
  • DO_UTF8
  • Drand01
  • dump_all
  • dump_eval โ€” (undocumented)
  • dump_form โ€” (undocumented)
  • dump_packsubs
  • dump_sub โ€” (undocumented)
  • FFLUSH_NULL
  • get_context โ€” (undocumented)
  • get_ppaddr โ€” (undocumented)
  • Gid_t_f
  • Gid_t_sign
  • Gid_t_size
  • gv_dump โ€” (undocumented)
  • HAS_ACCESS
  • HAS_ATOLL
  • HAS_DRAND48_PROTO
  • HAS_EACCESS
  • HAS_FD_SET
  • HAS_FSEEKO
  • HAS_FTELLO
  • HAS_GETCWD
  • HAS_GETHOSTNAME
  • HAS_GETSPNAM
  • HAS_INT64_T
  • HAS_LDBL_DIG
  • HAS_LSEEK_PROTO
  • HAS_MADVISE
  • HAS_MKDTEMP
  • HAS_MKSTEMP
  • HAS_MKSTEMPS
  • HAS_MMAP
  • HAS_MPROTECT
  • HAS_MSYNC
  • HAS_MUNMAP
  • HAS_SQRTL
  • HAS_STRTOLD
  • HAS_STRTOLL
  • HAS_STRTOULL
  • HAS_STRTOUQ
  • HAS_TELLDIR_PROTO
  • I16SIZE
  • I16TYPE
  • I32SIZE
  • I32TYPE
  • I64SIZE
  • I64TYPE
  • I8SIZE
  • I8TYPE
  • I_INTTYPES
  • I_NETINET_TCP
  • I_POLL
  • isALNUMC_LC
  • isALPHA_LC_utf8_safe
  • isALPHANUMERIC_LC_utf8_safe
  • isALPHANUMERIC_utf8_safe
  • isALPHANUMERIC_uvchr
  • isALPHA_utf8_safe
  • isALPHA_uvchr
  • isBLANK_LC_utf8_safe
  • isBLANK_utf8_safe
  • isBLANK_uvchr
  • isCNTRL_LC
  • isCNTRL_LC_utf8_safe
  • isCNTRL_utf8_safe
  • isCNTRL_uvchr
  • isDIGIT_LC_utf8_safe
  • isDIGIT_utf8_safe
  • isDIGIT_uvchr
  • isGRAPH_LC
  • isGRAPH_LC_utf8_safe
  • isGRAPH_utf8_safe
  • isGRAPH_uvchr
  • I_SHADOW
  • isIDCONT_LC_utf8_safe
  • isIDCONT_utf8_safe
  • isIDCONT_uvchr
  • isIDFIRST_LC_utf8_safe
  • isIDFIRST_utf8_safe
  • isIDFIRST_uvchr
  • isLOWER_LC_utf8_safe
  • isLOWER_utf8_safe
  • isLOWER_uvchr
  • isPRINT_LC_utf8_safe
  • isPRINT_utf8_safe
  • isPRINT_uvchr
  • isPSXSPC_LC_utf8_safe
  • isPSXSPC_utf8_safe
  • isPSXSPC_uvchr
  • isPUNCT_LC
  • isPUNCT_LC_utf8_safe
  • isPUNCT_utf8_safe
  • isPUNCT_uvchr
  • isSPACE_LC_utf8_safe
  • isSPACE_utf8_safe
  • isSPACE_uvchr
  • isUPPER_LC_utf8_safe
  • isUPPER_utf8_safe
  • isUPPER_uvchr
  • is_utf8_char โ€” (DEPRECATED)
  • isWORDCHAR_LC_utf8_safe
  • isWORDCHAR_utf8_safe
  • isWORDCHAR_uvchr
  • isXDIGIT_LC_utf8_safe
  • isXDIGIT_utf8_safe
  • isXDIGIT_uvchr
  • I_SYSLOG
  • I_SYSUIO
  • I_SYSUTSNAME
  • LSEEKSIZE
  • magic_dump โ€” (undocumented)
  • Mmap_t
  • MULTIPLICITY
  • my_atof
  • my_fflush_all โ€” (undocumented)
  • newANONATTRSUB โ€” (undocumented)
  • newATTRSUB
  • newXS
  • newXSproto
  • Off_t_size
  • op_dump
  • OPpEARLY_CV
  • PERL_ASYNC_CHECK
  • Perl_atan2
  • Perl_cos
  • PERL_EXIT_EXPECTED
  • Perl_exp
  • Perl_floor
  • Perl_fmod
  • Perl_frexp
  • Perl_log
  • Perl_modf
  • perl_parse
  • Perl_pow
  • PERL_PRIfldbl
  • PERL_PRIgldbl
  • PERL_REVISION โ€” (DEPRECATED)
  • Perl_sin
  • Perl_sqrt
  • PERL_SYS_INIT3
  • PHOSTNAME
  • PL_check
  • PL_exit_flags
  • PL_runops
  • pmop_dump โ€” (undocumented)
  • POPul
  • QUAD_IS_INT
  • QUAD_IS_INT64_T
  • QUAD_IS_LONG
  • QUAD_IS_LONG_LONG
  • QUADKIND
  • Rand_seed_t
  • require_pv
  • safesyscalloc
  • safesysfree
  • safesysmalloc
  • safesysrealloc
  • save_alloc โ€” (undocumented)
  • SAVEDESTRUCTOR
  • SAVEDESTRUCTOR_X
  • SAVEI8
  • save_vptr โ€” (undocumented)
  • scan_bin
  • SCHED_YIELD
  • seedDrand01
  • set_context โ€” (undocumented)
  • SITELIB_STEM
  • Size_t_size
  • Sock_size_t
  • STDIO_PTR_LVALUE
  • STDIO_STREAM_ARRAY
  • Strtol
  • Strtoul
  • sv_2pvutf8
  • sv_force_normal
  • SvIOK_notUV
  • SvIOK_only_UV
  • SvIOK_UV
  • sv_len_utf8
  • sv_len_utf8_nomg
  • SvPOK_only_UTF8
  • sv_pos_b2u
  • sv_pos_u2b
  • SvPVbyte_nolen
  • SvPVbytex
  • SvPVbytex_force
  • SvPVutf8
  • SvPVutf8_force
  • SvPVutf8_nolen
  • SvPVutf8x
  • SvPVutf8x_force
  • sv_rvweaken
  • SvUOK
  • sv_utf8_decode
  • sv_utf8_downgrade
  • sv_utf8_encode
  • SvUTF8_off
  • SvUTF8_on
  • toFOLD_utf8_safe
  • toFOLD_uvchr
  • toLOWER_utf8_safe
  • toLOWER_uvchr
  • toTITLE_utf8_safe
  • toTITLE_uvchr
  • toUPPER_utf8_safe
  • toUPPER_uvchr
  • U16SIZE
  • U16TYPE
  • U32SIZE
  • U32TYPE
  • U64SIZE
  • U64TYPE
  • U8SIZE
  • U8TYPE
  • Uid_t_f
  • Uid_t_sign
  • Uid_t_size
  • Uquad_t
  • USE_64_BIT_ALL
  • USE_64_BIT_INT
  • USE_LARGE_FILES
  • USE_STDIO_BASE
  • USE_STDIO_PTR
  • USE_THREADS
  • UTF8_CHK_SKIP
  • utf8_distance
  • utf8_hop
  • UTF8_MAXBYTES
  • UTF8_SAFE_SKIP
  • UTF8_SKIP
  • UTF8SKIP
  • vcroak
  • vform

likeโ€ฆ that's a whole vibe all by itself, no notes ๐Ÿ’€


๐Ÿฆ‹ perl 5.005_03

short and sweet, which honestly after that last list is a relief bestie ๐Ÿ˜ฎโ€๐Ÿ’จ

  • get_vtbl โ€” (undocumented)
  • I_PTHREAD
  • POPpx
  • save_generic_svref โ€” (undocumented)
  • SELECT_MIN_BITS
  • SvTIED_obj
  • USE_STAT_BLOCKS

๐ŸŽ€ perl 5.005

and now we're back to a chunky one, of course we are ๐Ÿ™ˆ

  • debop โ€” (undocumented)
  • debprofdump โ€” (undocumented)
  • DOUBLESIZE
  • fbm_compile
  • fbm_instr
  • get_op_descs โ€” (undocumented)
  • get_op_names โ€” (undocumented)
  • GRPASSWD
  • HAS_CSH
  • HAS_ENDGRENT
  • HAS_ENDHOSTENT
  • HAS_ENDNETENT
  • HAS_ENDPROTOENT
  • HAS_ENDPWENT
  • HAS_ENDSERVENT
  • HAS_GETGRENT
  • HAS_GETHOSTBYADDR
  • HAS_GETHOSTBYNAME
  • HAS_GETHOST_PROTOS
  • HAS_GETNETBYADDR
  • HAS_GETNETBYNAME
  • HAS_GETNETENT
  • HAS_GETNET_PROTOS
  • HAS_GETPROTOBYNAME
  • HAS_GETPROTOBYNUMBER
  • HAS_GETPROTOENT
  • HAS_GETPROTO_PROTOS
  • HAS_GETPWENT
  • HAS_GETSERVBYNAME
  • HAS_GETSERVBYPORT
  • HAS_GETSERVENT
  • HAS_GETSERV_PROTOS
  • HAS_LCHOWN
  • HAS_LONG_DOUBLE
  • HAS_LONG_LONG
  • HAS_SCHED_YIELD
  • HAS_SETGRENT
  • HAS_SETHOSTENT
  • HAS_SETNETENT
  • HAS_SETPROTOENT
  • HAS_SETPWENT
  • HAS_SETSERVENT
  • HAS_SETVBUF
  • I_ARPA_INET
  • I_NETDB
  • init_stacks โ€” (undocumented)
  • LONG_DOUBLESIZE
  • LONGLONGSIZE
  • mg_length โ€” (DEPRECATED)
  • mg_size โ€” (undocumented)
  • Netdb_hlen_t
  • Netdb_host_t
  • Netdb_name_t
  • Netdb_net_t
  • newHVhv โ€” (undocumented)
  • new_stackinfo โ€” (undocumented)
  • Pid_t
  • PL_curpad โ€” (marked experimental)
  • PL_in_my_stash โ€” (undocumented)
  • PL_maxsysfd
  • PL_modglobal
  • PL_restartop
  • PTRSIZE
  • PWPASSWD
  • regdump โ€” (undocumented)
  • sv_peek โ€” (undocumented)
  • sv_pvn_nomg โ€” (DEPRECATED) (undocumented)
  • SvPVx_force

okay PL_curpad being marked experimental is so real of it ๐Ÿซถ


โœจ perl 5.004_05

tiny era, big "I was there" energy ๐Ÿ’ซ

  • do_binmode โ€” (DEPRECATED) (undocumented)
  • GV_NOINIT
  • HAS_CHSIZE
  • HAS_GNULIBC
  • PWGECOS
  • save_aelem โ€” (undocumented)
  • save_helem โ€” (undocumented)
  • USE_SEMCTL_SEMID_DS
  • USE_SEMCTL_SEMUN

๐ŸŒˆ perl 5.004

and we wrap this part on 5.004 โ€” vintage bestie hours ๐Ÿ“ literally the old guard, and there's a LOT of them:

  • ARCHNAME
  • BIN_EXP
  • block_gimme โ€” (undocumented)
  • call_list โ€” (undocumented)
  • delimcpy
  • GIMME_V
  • gv_autoload4
  • gv_fetchmethod_autoload
  • G_VOID
  • HAS_GETTIMEOFDAY
  • HAS_INET_ATON
  • HAS_SETGROUPS
  • HAS_STRTOD
  • HAS_STRTOL
  • HAS_STRTOUL
  • HePV
  • HeSVKEY_set
  • hv_delayfree_ent โ€” (undocumented)
  • hv_free_ent โ€” (undocumented)
  • ibcmp_locale
  • IN_LOCALE
  • IN_LOCALE_COMPILETIME
  • IN_LOCALE_RUNTIME
  • isALNUM_LC
  • isALPHA_LC
  • isALPHANUMERIC_LC
  • isDIGIT_LC
  • isIDCONT_LC
  • isIDFIRST_LC
  • isLOWER_LC
  • isPRINT_LC
  • isSPACE_LC
  • isUPPER_LC
  • isWORDCHAR_LC
  • JMPENV_JUMP
  • mess_sv
  • my_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)
  • POPu
  • rsignal
  • rsignal_state โ€” (undocumented)
  • save_gp
  • SAVEI16
  • SAVESTACK_POS
  • SHORTSIZE
  • sv_cmp_locale
  • sv_derived_from
  • sv_magic_portable โ€” (undocumented)
  • SvSetMagicSV
  • SvSetMagicSV_nosteal
  • SvSetSV_nosteal
  • SvTAINTED
  • SvTAINTED_off
  • SvTAINTED_on
  • sv_vcatpvf
  • sv_vcatpvf_mg
  • sv_vcatpvfn
  • sv_vsetpvf
  • sv_vsetpvf_mg
  • sv_vsetpvfn
  • Timeval
  • toLOWER_LC
  • vmess
  • vnewSVpvf
  • vwarner

and that's the 5.004 block done ๐Ÿซก but bestie we are SO not finished โ€” slide into the next part, there's more coming ๐Ÿ‘€๐Ÿ’–

perl 5.003_07 (or maybe earlier)

okay bestie, buckle in โ€” this chunk of the list is the ancient era, like the Unix equivalent of finding your mom's old mixtapes ๐Ÿ’€ everything here is old-old, and the ones marked undocumented are basically the "no thoughts, head empty" of the API โ€” they exist, that's all we're legally allowed to say ๐Ÿ™ˆ

  • amagic_call (undocumented)
  • ARCHLIB
  • ARCHLIB_EXP
  • ASSUME
  • aTHX
  • aTHX_
  • aTHXR (undocumented)
  • aTHXR_ (undocumented)
  • AvARRAY
  • av_clear
  • av_count
  • av_extend
  • av_fetch
  • av_fill
  • AvFILL
  • av_len
  • av_make
  • av_pop
  • av_push
  • av_shift
  • av_store
  • av_tindex
  • av_top_index
  • av_undef
  • av_unshift
  • ax
  • BIN
  • BOM_UTF8
  • boolSV
  • BYTEORDER
  • call_argv
  • call_method
  • call_pv
  • call_sv
  • C_ARRAY_END
  • C_ARRAY_LENGTH
  • CASTFLAGS
  • CASTNEGFLOAT
  • CAT2
  • cBOOL
  • ckWARN
  • ckWARN2
  • ckWARN2_d
  • ckWARN3
  • ckWARN3_d
  • ckWARN4
  • ckWARN4_d
  • ckWARN_d
  • CLASS
  • CopFILE
  • CopFILEAV
  • CopFILEGV
  • CopFILEGV_set
  • CopFILE_set
  • CopFILESV
  • CopSTASH
  • CopSTASH_eq
  • CopSTASHPV
  • CopSTASH_set
  • Copy
  • CopyD
  • CPERLscope (DEPRECATED)
  • CPPMINUS
  • CPPSTDIN
  • croak_no_modify
  • croak_sv
  • croak_xs_usage
  • CSH
  • cv_const_sv
  • CvDEPTH (undocumented)
  • CvGV
  • CvSTASH
  • cv_undef
  • dAX
  • dAXMARK
  • DB_Hash_t
  • DB_Prefix_t
  • DEFSV
  • DEFSV_set
  • die_sv
  • Direntry_t
  • dITEMS
  • dMARK
  • dMY_CXT_SV
  • dNOOP
  • do_close (undocumented)
  • do_join (undocumented)
  • do_open (undocumented)
  • dORIGMARK
  • do_sprintf (undocumented)
  • dounwind (undocumented)
  • dowantarray (undocumented)
  • dSP
  • dTARGET
  • dTHR
  • dTHX
  • dTHXa
  • dTHXoa
  • dTHXR (undocumented)
  • dUNDERBAR
  • dVAR
  • dXCPT
  • dXSARGS
  • dXSI32
  • dXSTARG (undocumented)
  • END_EXTERN_C
  • ENTER
  • EOF_NONBLOCK
  • ERRSV
  • eval_pv
  • eval_sv
  • EXTEND
  • EXTERN_C
  • filter_add
  • filter_del (undocumented)
  • filter_read
  • FLEXFILENAMES
  • Fpos_t
  • Free_t
  • FREETMPS
  • Gconvert
  • G_DISCARD
  • get_av
  • get_cv
  • get_cvn_flags
  • get_cvs
  • get_hv
  • get_sv
  • G_EVAL
  • Gid_t
  • GIMME (DEPRECATED)
  • G_KEEPERR
  • G_LIST
  • G_METHOD
  • G_NOARGS
  • gp_free (undocumented)
  • gp_ref (undocumented)
  • G_RETHROW
  • grok_bin
  • grok_hex
  • grok_number
  • GROK_NUMERIC_RADIX
  • grok_numeric_radix
  • grok_oct
  • Groups_t
  • G_SCALAR
  • GV_ADD
  • GV_ADDMULTI
  • GV_ADDWARN
  • GvAV
  • gv_AVadd (undocumented)
  • GvCV
  • gv_efullname (DEPRECATED) (undocumented)
  • gv_efullname3 (undocumented)
  • gv_fetchfile
  • gv_fetchmeth
  • gv_fetchmethod
  • gv_fetchpv
  • gv_fetchpvn_flags
  • gv_fetchpvs
  • gv_fetchsv
  • gv_fullname (DEPRECATED) (undocumented)
  • gv_fullname3 (undocumented)
  • GvHV
  • gv_HVadd (undocumented)
  • gv_init
  • gv_init_pvn
  • gv_IOadd (undocumented)
  • gv_stashpv
  • gv_stashpvn
  • gv_stashpvs
  • gv_stashsv
  • GvSV
  • GvSVn

the way the HAS_* block just goes off for like a hundred lines ๐Ÿ˜ญ this is the "does your system even have this syscall" era, and honestly? iconic. no notes.

  • HAS_ALARM
  • HAS_CHOWN
  • HAS_CHROOT
  • HAS_CRYPT
  • HAS_CUSERID
  • HAS_DIFFTIME
  • HAS_DLERROR
  • HAS_DUP2
  • HAS_FCHMOD
  • HAS_FCHOWN
  • HAS_FCNTL
  • HAS_FGETPOS
  • HAS_FLOCK
  • HAS_FORK
  • HAS_FPATHCONF
  • HAS_FSETPOS
  • HAS_GETGROUPS
  • HAS_GETHOSTENT
  • HAS_GETLOGIN
  • HAS_GETPGID
  • HAS_GETPGRP
  • HAS_GETPPID
  • HAS_GETPRIORITY
  • HAS_HTONL
  • HAS_HTONS
  • HAS_ISASCII
  • HAS_KILLPG
  • HAS_LINK
  • HAS_LOCALECONV
  • HAS_LOCKF
  • HAS_LSTAT
  • HAS_MBLEN
  • HAS_MBSTOWCS
  • HAS_MBTOWC
  • HAS_MKDIR
  • HAS_MKFIFO
  • HAS_MKTIME
  • HAS_MSG
  • HAS_NICE
  • HAS_NTOHL
  • HAS_NTOHS
  • HAS_OPEN3
  • HAS_PATHCONF
  • HAS_PAUSE
  • HAS_PIPE
  • HAS_POLL
  • HAS_QUAD
  • HAS_READDIR
  • HAS_READLINK
  • HAS_RENAME
  • HAS_REWINDDIR
  • HAS_RMDIR
  • HAS_SEEKDIR
  • HAS_SELECT
  • HAS_SEM
  • HAS_SETEGID
  • HAS_SETEUID
  • HAS_SETLINEBUF
  • HAS_SETLOCALE
  • HAS_SETPGID
  • HAS_SETPGRP
  • HAS_SETPRIORITY
  • HAS_SETREGID
  • HAS_SETRESGID
  • HAS_SETRESUID
  • HAS_SETREUID
  • HAS_SETSID
  • HAS_SHM
  • HAS_SHMAT_PROTOTYPE
  • HAS_SIGACTION
  • HAS_SIGSETJMP
  • HAS_SOCKET
  • HAS_SOCKETPAIR
  • HAS_STRCOLL
  • HAS_STRXFRM
  • HAS_SYMLINK
  • HAS_SYSCALL
  • HAS_SYSCONF
  • HAS_SYS_ERRLIST
  • HAS_SYSTEM
  • HAS_TCGETPGRP
  • HAS_TCSETPGRP
  • HAS_TELLDIR
  • HAS_TIMES
  • HAS_TRUNCATE
  • HAS_TZNAME
  • HAS_UMASK
  • HAS_UNAME
  • HAS_WAIT4
  • HAS_WAITPID
  • HAS_WCSTOMBS
  • HAS_WCTOMB

then we slam straight into the hash internals and it's giving "I have seen things" energy ๐Ÿซถ

  • HEf_SVKEY
  • HeHASH
  • HeKEY
  • HeKLEN
  • HeSVKEY
  • HeSVKEY_force
  • HeVAL
  • hv_clear
  • hv_delete
  • hv_delete_ent
  • hv_exists
  • hv_exists_ent
  • hv_fetch
  • hv_fetch_ent
  • hv_fetchs
  • HvFILL
  • hv_iterinit
  • hv_iterkey
  • hv_iterkeysv
  • hv_iternext
  • hv_iternextsv
  • hv_iterval
  • hv_ksplit (undocumented)
  • hv_magic
  • HvNAME
  • HvNAMELEN_get
  • hv_store
  • hv_store_ent
  • hv_stores
  • hv_undef
  • I_32
  • ibcmp
  • I_DIRENT
  • I_DLFCN
  • I_GRP
  • I_LOCALE
  • I_NETINET_IN
  • IN_PERL_COMPILETIME
  • instr
  • INT16_C
  • INT2PTR
  • INT32_C
  • INTMAX_C
  • INTSIZE
  • I_PWD

the is* family, aka the character-classification girlies ๐ŸŒธ they come in flavors: plain, _A, _L1, and sometimes _LC or _utf8_safe or _uvchr โ€” don't mix up your suffixes, bestie, it's a whole alphabet soup situation ๐Ÿ’…

  • isALNUM
  • isALNUM_A
  • isALNUMC
  • isALNUMC_A
  • isALNUMC_L1
  • isALPHA
  • isALPHA_A
  • isALPHA_L1
  • isALPHANUMERIC
  • isALPHANUMERIC_A
  • isALPHANUMERIC_L1
  • isASCII
  • isASCII_A
  • isASCII_L1
  • isASCII_LC
  • isASCII_utf8_safe
  • isASCII_uvchr
  • isBLANK
  • isBLANK_A
  • isBLANK_L1
  • isBLANK_LC
  • isCNTRL
  • isCNTRL_A
  • isCNTRL_L1
  • isDIGIT
  • isDIGIT_A
  • isDIGIT_L1
  • isGRAPH
  • isGRAPH_A
  • isGRAPH_L1
  • isGV_with_GP
  • isIDCONT
  • isIDCONT_A
  • isIDCONT_L1
  • isIDFIRST
  • isIDFIRST_A
  • isIDFIRST_L1
  • isLOWER
  • isLOWER_A
  • isLOWER_L1
  • 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
  • isPSXSPC
  • isPSXSPC_A
  • isPSXSPC_L1
  • isPUNCT
  • isPUNCT_A
  • isPUNCT_L1
  • isSPACE
  • isSPACE_A
  • isSPACE_L1
  • isUPPER
  • isUPPER_A
  • isUPPER_L1
  • isWORDCHAR
  • isWORDCHAR_A
  • isWORDCHAR_L1
  • isXDIGIT
  • isXDIGIT_A
  • isXDIGIT_L1
  • isXDIGIT_LC
  • I_SYS_DIR
  • I_SYS_FILE
  • I_SYS_IOCTL
  • I_SYS_PARAM
  • I_SYS_RESOURCE
  • I_SYS_SELECT
  • I_SYS_STAT
  • I_SYS_TIME
  • I_SYS_TIMES
  • I_SYS_TYPES
  • I_SYS_UN
  • I_SYS_WAIT
  • items
  • I_TERMIOS
  • I_TIME
  • I_UNISTD
  • I_UTIME
  • I_V
  • IVdf
  • IV_MAX
  • IV_MIN
  • IVSIZE
  • IVTYPE
  • ix
  • LATIN1_TO_NATIVE
  • LEAVE
  • leave_scope (undocumented)
  • LIKELY
  • load_module
  • LOC_SED
  • LONGSIZE
  • looks_like_number
  • Malloc_t
  • MARK
  • MEM_ALIGNBYTES
  • memCHRs
  • memEQ
  • memEQs
  • memNE
  • memNEs
  • memzero
  • mg_clear
  • mg_copy
  • mg_find
  • mg_findext
  • mg_free
  • mg_get
  • mg_magical
  • mg_set
  • Mode_t
  • Move
  • 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_exit
  • my_pclose (undocumented)
  • my_popen (undocumented)
  • my_setenv
  • my_sprintf (DEPRECATED)
  • my_strlcat
  • my_strlcpy
  • my_strnlen
  • NATIVE_TO_LATIN1
  • NATIVE_TO_UNI
  • newANONHASH (undocumented)
  • newANONLIST (undocumented)
  • newANONSUB (undocumented)
  • newASSIGNOP
  • newAV
  • newAVREF (undocumented)
  • newBINOP
  • newCONDOP
  • newCONSTSUB
  • newCVREF (undocumented)
  • newFORM (undocumented)
  • newGVgen (undocumented)
  • newGVOP
  • newGVREF (undocumented)
  • newHV
  • newHVREF (undocumented)
  • newIO (undocumented)
  • newLISTOP
  • newLOGOP
  • newLOOPEX
  • newLOOPOP
  • newNULLLIST
  • newOP
  • newPMOP
  • newPROG (undocumented)
  • newPVOP
  • newRANGE
  • newRV
  • newRV_inc
  • newRV_noinc

and that's where we pause, mid-new* roll call, because there is so much more coming ๐Ÿ”ฅ

  • SvIV_nomg โ€” name's right there, no blurb in the index, don't shoot the messenger ๐Ÿซถ
  • SvIV_set โ€” that's the entry, that's the whole tea
  • SvIVX โ€” capital X bestie, living loud
  • SvIVx โ€” lowercase x bestie, living quiet
  • sv_len โ€” function-style, lowercase, doing its thing
  • SvLEN โ€” uppercase, all caps, main character
  • SvLEN_set โ€” the _set sibling, matching energy
  • sv_magic โ€” lowercase sv_ crowd, we see you ๐Ÿ‘€
  • SvMAGIC_set โ€” uppercase counterpart, slay
  • sv_mortalcopy โ€” no description in the source, so no guesses from me, periodt
  • sv_mortalcopy_flags โ€” the _flags upgrade, icon behaviour
  • SV_MUTABLE_RETURN โ€” (undocumented) ๐Ÿซฃ the docs ghosted us
  • sv_newmortal โ€” listed, iconic, next
  • SvNIOK โ€” the N-I-OK spelling goes hard ngl
  • SvNIOK_off โ€” _off variant, present and accounted for
  • SvNIOKp โ€” trailing p, no explanation, mystery
  • SvNOK โ€” same family, same vibe
  • SvNOK_off โ€” _off, yes
  • SvNOK_on โ€” _on, also yes
  • SvNOK_only โ€” _only, the extra one ๐Ÿ’…
  • SvNOKp โ€” p again, we move
  • SV_NOSTEAL โ€” uppercase flag, loud about it
  • SvNV โ€” the NV branch reporting for duty
  • SvNV_nomg โ€” _nomg twin ๐Ÿซถ
  • SvNV_set โ€” _set twin
  • SvNVX โ€” capital X, again
  • SvNVx โ€” lowercase x, again
  • SvOK โ€” the shortest one, ate
  • SvOOK โ€” double O, no notes
  • SvOOK_off โ€” _off, correct
  • SvPOK โ€” POK era begins โœจ
  • SvPOK_off โ€” _off
  • SvPOK_on โ€” _on
  • SvPOK_only โ€” _only
  • SvPOKp โ€” p
  • SvPV โ€” okay THE one, the legend, the moment ๐Ÿ‘‘ everybody knows her name
  • SvPVbyte โ€” SvPV but she brought byte, no further comment from me
  • SvPV_const โ€” _const, classy
  • SvPV_flags โ€” _flags, the flexible one
  • SvPV_flags_const โ€” both suffixes, overachiever ๐ŸŽ€
  • SvPV_flags_mutable โ€” _mutable, different vibe altogether
  • SvPV_force โ€” the force line of the family, dramatic
  • SvPV_force_flags โ€” _force + _flags
  • SvPV_force_flags_mutable โ€” three suffixes deep, unstoppable
  • SvPV_force_flags_nolen โ€” same, plus _nolen
  • SvPV_force_mutable โ€” the pairing continues
  • SvPV_force_nolen โ€” yup
  • SvPV_force_nomg โ€” _nomg enters the chat
  • SvPV_force_nomg_nolen โ€” the whole combo, respect
  • SvPV_mutable โ€” _mutable solo, iconic
  • sv_pvn_force_flags โ€” note the lowercase function spelling, bestie ๐Ÿซถ
  • SvPV_nolen โ€” the classic _nolen, we know her
  • SvPV_nolen_const โ€” two suffixes, still slaying
  • SvPV_nomg โ€” _nomg, again
  • SvPV_nomg_const โ€” doubled up
  • SvPV_nomg_const_nolen โ€” longest name in this whole stretch, she ate ๐Ÿ’…
  • SvPV_nomg_nolen โ€” nearly the same, one suffix lighter
  • SvPV_renew โ€” _renew, present
  • SvPV_set โ€” _set, present
  • SvPVX โ€” big X energy
  • SvPVx โ€” small x energy
  • SvPVX_const โ€” big X plus _const
  • SvPVX_mutable โ€” big X plus _mutable
  • SvPVx_nolen_const โ€” small x and then everything else ๐Ÿ˜ญ
  • SvPVXx โ€” the double-x situation, legendary
  • SvREADONLY โ€” and that's the last one in this part, all caps, closing us out like the queen she is ๐Ÿ‘‘

okay that's the chunk done bestie ๐Ÿ’– the source lists these as names only โ€” no blurbs, no params, no return values โ€” so I'm not about to sit here and invent lore, that's not the move ๐Ÿซฃ anything marked (undocumented) genuinely has no entry in the page, and (DEPRECATED) means the page says deprecated, so treat that as a warning, not a vibe ๐ŸŒธ

more coming in the next part, don't go anywhere โœจ

โ€ฆand we're back, bestie ๐Ÿ’… still deep in the list, still thriving. Grab a snack, this stretch is a lot of names but every single one is here, promise ๐Ÿซถ

  • SvREADONLY_off, SvREADONLY_on, SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvREFCNT_inc_NN, SvREFCNT_inc_simple, SvREFCNT_inc_simple_NN, SvREFCNT_inc_simple_void, SvREFCNT_inc_simple_void_NN, SvREFCNT_inc_void, SvREFCNT_inc_void_NN
  • sv_reftype, sv_replace, sv_report_used, sv_reset, SvROK, SvROK_off, SvROK_on, SvRV, SvRV_set, SvRX, SvRXOK
  • sv_setiv, sv_setiv_mg, SvSETMAGIC, sv_setnv, sv_setnv_mg, sv_setpv, sv_setpv_mg, sv_setpvn, sv_setpvn_mg, sv_setpvs, sv_setref_iv, sv_setref_nv, sv_setref_pv, sv_setref_pvn, sv_setsv, SvSetSV, sv_setsv_flags, sv_setsv_mg, sv_setsv_nomg, sv_setuv, sv_setuv_mg
  • SvSHARED_HASH, SV_SMAGIC, SvSTASH, SvSTASH_set, SVs_TEMP, SvTAINT
  • SVt_IV, SVt_NULL, SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVFM, SVt_PVGV, SVt_PVHV, SVt_PVIO, SVt_PVIV, SVt_PVLV, SVt_PVMG, SVt_PVNV
  • SvTRUE, SvTRUE_nomg, SvTRUEx, SvTYPE, svtype (undocumented), sv_unmagic, sv_unmagicext, sv_unref, sv_upgrade, SvUPGRADE, sv_usepvn, sv_usepvn_mg, SvUTF8, SV_UTF8_NO_ENCODING (DEPRECATED), SvUV, SvUV_nomg, SvUV_set, SvUVX, SvUVx, SvUVXx (DEPRECATED), SvVSTRING_mg
Heads up ๐ŸŒธ: SV_UTF8_NO_ENCODING and SvUVXx are both flagged DEPRECATED in the original list โ€” so the vibe is "it's giving retired icon", not "use me".
  • switch_to_global_locale, sync_locale, taint_env (undocumented), taint_proper (undocumented), TARG, THIS, Time_t, toLOWER, toUPPER
  • Uid_t, UINT16_C, UINT32_C, UINTMAX_C, UNDERBAR, UNICODE_REPLACEMENT, UNI_TO_NATIVE, UNLIKELY, unsharepvn (undocumented), USE_DYNAMIC_LOADING, UTF8f, UTF8fARG, UTF8_IS_INVARIANT, UTF8_MAXBYTES_CASE, U_V, UVCHR_IS_INVARIANT, UVCHR_SKIP, UV_MAX, UV_MIN, UVof, UVSIZE, UVTYPE, UVuf, UVxf
  • VAL_EAGAIN, VAL_O_NONBLOCK, vload_module, vwarn
  • WARN_ALL, WARN_AMBIGUOUS, WARN_ASSERTIONS (undocumented), WARN_BAREWORD, WARN_CLOSED, WARN_CLOSURE, WARN_DEBUGGING, WARN_DEPRECATED, WARN_DIGIT, WARN_EXEC, WARN_EXITING, WARN_GLOB, WARN_INPLACE, WARN_INTERNAL, WARN_IO, WARN_LAYER, WARN_MALLOC, WARN_MISC, WARN_NEWLINE, WARN_NUMERIC, WARN_ONCE, WARN_OVERFLOW, WARN_PACK, WARN_PARENTHESIS, WARN_PIPE, WARN_PORTABLE, WARN_PRECEDENCE, WARN_PRINTF, WARN_PROTOTYPE, WARN_QW, WARN_RECURSION, WARN_REDEFINE, WARN_REGEXP, WARN_RESERVED, WARN_SEMICOLON, WARN_SEVERE, WARN_SIGNAL, WARN_SUBSTR, warn_sv, WARN_SYNTAX, WARN_TAINT, WARN_THREADS, WARN_UNINITIALIZED, WARN_UNOPENED, WARN_UNPACK, WARN_UNTIE, WARN_UTF8, WARN_VOID
  • whichsig, WIDEST_UTYPE (undocumented)
  • XCPT_CATCH, XCPT_RETHROW, XCPT_TRY_END, XCPT_TRY_START, XPUSHi, XPUSHmortal, XPUSHn, XPUSHp, XPUSHs, XPUSHu, XS (undocumented), XSprePUSH (undocumented), XSPROTO (undocumented), XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO, XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_UV, XSRETURN_YES, XST_mIV, XST_mNO, XST_mNV, XST_mPV, XST_mUNDEF, XST_mUV, XST_mYES, XS_VERSION, XS_VERSION_BOOTCHECK
  • Zero, ZeroD

And that's the whole alphabetical marathon done, we ate ๐Ÿ”ฅ


๐Ÿฆ‹ Backported version unknown

Okay so this next little pile is the "we literally don't know which version this landed in" club โ€” the manpage just files them here under the heading Backported version unknown. Every one of these also carries the (undocumented) tag, so keep that in mind, bestie ๐Ÿ‘€

  • 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

Found a bug? Devel::PPPort refusing to build on your system? A test throwing hands? ๐Ÿ˜ญ Please send a bug report to <https://github.com/Dual-Life/Devel-PPPort/issues/new> โ€” that's literally it, that's the whole ask ๐Ÿ’–


๐Ÿ‘‘ 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

Like, a whole relay race of legends handing off the baton ๐Ÿƒโ€โ™€๏ธโœจ


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 page, bestie โ€” you made it to the end, main character energy fr fr ๐Ÿ‘‘๐Ÿ’… This copy is perl v5.42.3, dated 2026-11-03, page Devel::PPPort(3pm) โ€” go forth and write some unhinged-but-correct XS ๐Ÿฆ‹๐Ÿ’–โœจ

๐Ÿ“ฆ where this page comes from