update ppport.h to 3.58
Karen Etheridge [Sun, 26 Apr 2020 16:26:22 +0000 (09:26 -0700)]
ppport.h

index 59122eb..6bb3017 100644 (file)
--- a/ppport.h
+++ b/ppport.h
@@ -4,9 +4,9 @@
 /*
 ----------------------------------------------------------------------
 
-    ppport.h -- Perl/Pollution/Portability Version 3.56
+    ppport.h -- Perl/Pollution/Portability Version 3.58
 
-    Automatically created by Devel::PPPort running under perl 5.010001.
+    Automatically created by Devel::PPPort running under perl 5.031010.
 
     Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
     includes in parts/inc/ instead.
@@ -21,7 +21,7 @@ SKIP
 
 =head1 NAME
 
-ppport.h - Perl/Pollution/Portability version 3.56
+ppport.h - Perl/Pollution/Portability version 3.58
 
 =head1 SYNOPSIS
 
@@ -56,7 +56,7 @@ ppport.h - Perl/Pollution/Portability version 3.56
 =head1 COMPATIBILITY
 
 This version of F<ppport.h> is designed to support operation with Perl
-installations back to 5.003_07, and has been tested up to 5.31.6.
+installations back to 5.003_07, and has been tested up to 5.31.10.
 
 =head1 OPTIONS
 
@@ -511,10 +511,12 @@ sub sort_api_lines  # Sort lines of the form flags|return|name|args...
 
 use strict;
 
+BEGIN { require warnings if "$]" > '5.006' }
+
 # Disable broken TRIE-optimization
 BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if "$]" >= 5.009004 && "$]" <= 5.009005 }
 
-my $VERSION = 3.56;
+my $VERSION = 3.58;
 
 my %opt = (
   quiet     => 0,
@@ -688,6 +690,7 @@ bytes_to_utf8|5.006001|5.006001|x
 call_argv|5.006000|5.003007|p
 call_atexit|5.006000|5.006000|u
 CALL_BLOCK_HOOKS|||xi
+CALL_CHECKER_REQUIRE_GV|5.021004|5.021004|
 caller_cx|5.013005|5.006000|p
 call_list|5.004000|5.004000|u
 call_method|5.006000|5.003007|p
@@ -736,7 +739,8 @@ clear_special_blocks|5.021003||Viu
 clone_params_del|5.013002|5.013002|nu
 clone_params_new|5.013002|5.013002|nu
 closest_cop|5.007002||Viu
-cntrl_to_mnemonic|5.021004||nViu
+cntrl_to_mnemonic|5.021004||ncViu
+compile_wildcard|5.031010||Viu
 compute_EXACTish|5.017003||nViu
 construct_ahocorasick_from_trie|5.021001||Viu
 cop_fetch_label|5.015001|5.015001|x
@@ -758,6 +762,7 @@ cophh_fetch_pvn|5.013007|5.013007|x
 cophh_fetch_pvs|5.013007|5.013007|x
 cophh_fetch_sv|5.013007|5.013007|x
 cophh_free|5.013007|5.013007|x
+COPHH_KEY_UTF8|5.013007|5.013007|
 cophh_new_empty|5.013007|5.013007|x
 cophh_store_pv|5.013007|5.013007|x
 cophh_store_pvn|5.013007|5.013007|x
@@ -797,9 +802,9 @@ croak_popstack|5.017008||ncViu
 croak_sv|5.013001|5.003007|p
 croak_xs_usage|5.010001|5.003007|pn
 cr_textfilter|5.006000||Viu
-csighandler1|||nu
-csighandler3|||nu
-csighandler|||nu
+csighandler1|5.031007|5.031007|nu
+csighandler3|5.031007|5.031007|nu
+csighandler|5.031007|5.031007|nu
 current_re_engine|5.017001||cViu
 curse|5.013009||Viu
 custom_op_desc|5.007003|5.007003|d
@@ -820,6 +825,7 @@ CvGV|5.003007|5.003007|u
 cvgv_from_hek|||ciu
 cvgv_set|5.013003||cViu
 cv_name|5.021005|5.021005|
+CV_NAME_NOTQUAL|5.021005|5.021005|
 CvPADLIST|5.008001|5.008001|x
 cv_set_call_checker|5.013006|5.013006|
 cv_set_call_checker_flags|5.021004|5.021004|
@@ -1014,6 +1020,7 @@ ERRSV|5.004005|5.003007|p
 eval_pv|5.006000|5.003007|p
 eval_sv|5.006000|5.003007|p
 exec_failed|5.009004||Viu
+execute_wildcard|5.031010||Viu
 expect_number|5.007001||Viu
 EXTEND|5.003007|5.003007|
 EXTERN_C|5.005000|5.003007|poVu
@@ -1031,7 +1038,7 @@ find_array_subscript|5.009004||Viu
 find_beginning|5.005000||Viu
 find_byclass|5.006000||Viu
 find_default_stash|5.019004||Viu
-find_first_differing_byte_pos|||nViu
+find_first_differing_byte_pos|5.031007||nViu
 find_hash_subscript|5.009004||Viu
 find_in_my_stash|5.006001||Viu
 find_lexical_cv|5.019001||Viu
@@ -1064,8 +1071,9 @@ force_version|5.005000||Viu
 force_word|5.003007||Viu
 forget_pmop|5.017007||Viu
 form|5.006000|5.004000|v
+form_alien_digit_msg|5.031009||cViu
+form_cp_too_large_msg|5.031009||cViu
 form_nocontext|5.006000||vnVu
-form_short_octal_warning|5.017008||Viu
 fp_dup|5.007003|5.007003|u
 fprintf_nocontext|5.006000||vndVu
 free_c_backtrace|5.021001||Vi
@@ -1122,9 +1130,10 @@ G_NOARGS|5.003007|5.003007|
 gp_dup|5.007003|5.007003|u
 gp_free|5.003007|5.003007|u
 gp_ref|5.003007|5.003007|u
-G_RETHROW||5.003007|p
+G_RETHROW|5.031002|5.003007|p
 grok_atoUV|5.021010||ncVi
 grok_bin|5.007003|5.003007|p
+grok_bin_oct_hex|5.031008||cVu
 grok_bslash_c|5.013001||cViu
 grok_bslash_N|5.017003||Viu
 grok_bslash_o|5.013003||cViu
@@ -1140,6 +1149,8 @@ group_end|5.007003||Viu
 G_SCALAR|5.003007|5.003007|
 GV_ADD|5.003007|5.003007|
 gv_add_by_type|5.011000|5.011000|u
+GV_ADDMG|5.015003|5.015003|
+GV_ADDMULTI|5.003007|5.003007|
 Gv_AMupdate|5.011000|5.011000|u
 gv_autoload4|5.004000|5.004000|u
 gv_autoload_pv|5.015004|5.015004|u
@@ -1191,6 +1202,9 @@ gv_magicalize|5.019004||Viu
 gv_magicalize_isa|5.013005||Viu
 gv_name_set|5.009004|5.009004|u
 GV_NOADD_MASK|5.009005|5.003007|poVu
+GV_NOADD_NOINIT|5.009003|5.009003|
+GV_NOEXPAND|5.009003|5.009003|
+GV_NOINIT|5.004005|5.004005|
 G_VOID|5.004000|5.004000|
 gv_override|5.019006||Viu
 gv_setref|5.021005||Viu
@@ -1260,6 +1274,7 @@ hv_iterkeysv|5.003007|5.003007|
 hv_iternext|5.003007|5.003007|
 hv_iternext_flags|5.008000|5.008000|x
 hv_iternextsv|5.003007|5.003007|
+HV_ITERNEXT_WANTPLACEHOLDERS|5.008000|5.008000|
 hv_iterval|5.003007|5.003007|
 hv_kill_backrefs|||xiu
 hv_ksplit|5.003007|5.003007|u
@@ -1349,7 +1364,7 @@ invlist_iterfinish|5.017008||nViu
 invlist_iterinit|5.015001||nViu
 invlist_iternext|5.015001||nViu
 _invlist_len|5.017004||nViu
-invlist_lowest|||nxViu
+invlist_lowest|5.031007||nxViu
 invlist_max|5.013010||nViu
 invlist_previous_index|5.017004||nViu
 invlist_replace_list_destroys_src|5.023009||Viu
@@ -1440,7 +1455,7 @@ isFOO_utf8_lc|5.017008||Viu
 isGCB|5.021009||Viu
 isGRAPH|5.006000|5.003007|p
 isGRAPH_A|5.013006|5.003007|p
-_is_grapheme|5.025009||Viu
+is_grapheme|5.031007||Viu
 isGRAPH_L1|5.013006|5.003007|p
 isGRAPH_LC|5.006000|5.006000|
 isGRAPH_LC_utf8_safe|5.025009|5.006000|p
@@ -1469,7 +1484,7 @@ isIDFIRST_utf8|5.031005|5.031005|
 isIDFIRST_utf8_safe|5.025009|5.006000|p
 isIDFIRST_uvchr|5.023009|5.006000|p
 isinfnan|5.021004|5.021004|n
-isinfnansv|5.021005||Viu
+isinfnansv|5.021005||Vi
 _is_in_locale_category|5.021001||cViu
 is_invariant_string|5.021007|5.011000|pn
 is_invlist|5.029002||nViu
@@ -1611,6 +1626,7 @@ LEAVE_with_name|5.011002|5.011002|
 lex_bufutf8|5.011002|5.011002|x
 lex_discard_to|5.011002|5.011002|x
 lex_grow_linestr|5.011002|5.011002|x
+LEX_KEEP_PREVIOUS|5.011002|5.011002|
 lex_next_chunk|5.011002|5.011002|x
 lex_peek_unichar|5.011002|5.011002|x
 lex_read_space|5.011002|5.011002|x
@@ -1621,11 +1637,13 @@ lex_stuff_pv|5.013006|5.013006|x
 lex_stuff_pvn|5.011002|5.011002|x
 lex_stuff_pvs|5.013005|5.013005|x
 lex_stuff_sv|5.011002|5.011002|x
+LEX_STUFF_UTF8|5.011002|5.011002|
 lex_unstuff|5.011002|5.011002|x
 LIKELY|5.009004|5.003007|p
 LINKLIST|5.013006|5.013006|
 list|5.003007||Viu
 listkids|5.003007||Viu
+load_charnames|5.031010||cViu
 load_module|5.006000|5.003007|pv
 load_module_nocontext|5.006000||vnVu
 localize|5.003007||Viu
@@ -1710,6 +1728,7 @@ matcher_matches_sv|5.027008||Viu
 maybe_multimagic_gv|5.019004||Viu
 mayberelocate|5.015006||Viu
 measure_struct|5.007003||Viu
+memCHRs|5.031008|5.003007|p
 mem_collxfrm|5.003007||dViu
 _mem_collxfrm|5.025002||Viu
 memEQ|5.004000|5.003007|p
@@ -1914,8 +1933,8 @@ newSVpvs_share|5.009003|5.003007|p
 newSVREF|5.003007|5.003007|u
 newSVrv|5.003007|5.003007|
 newSVsv|5.003007|5.003007|
-newSVsv_flags|5.029009|5.007002|pu
-newSVsv_nomg|5.029009|5.007003|p
+newSVsv_flags|5.029009|5.003007|pu
+newSVsv_nomg|5.029009|5.003007|p
 newSV_type|5.009005|5.003007|p
 newSVuv|5.006000|5.003007|p
 newUNOP|5.003007|5.003007|
@@ -1973,6 +1992,7 @@ op_dump|5.006000|5.006000|
 openn_cleanup|5.019010||Viu
 openn_setup|5.019010||Viu
 open_script|5.005000||Viu
+OPf_KIDS|5.003007|5.003007|
 op_free|5.003007|5.003007|
 OpHAS_SIBLING|5.021007|5.003007|p
 op_integerize|5.015003||Viu
@@ -1986,6 +2006,8 @@ OpMORESIB_set|5.021011|5.003007|p
 OP_NAME|5.007003|5.007003|
 op_null|5.007002|5.007002|
 op_parent|5.025001|5.025001|n
+OPpEARLY_CV|5.006000|5.006000|
+OPpENTERSUB_AMPER|5.003007|5.003007|
 op_prepend_elem|5.013006|5.013006|
 op_refcnt_dec|||xiu
 op_refcnt_inc|||xiu
@@ -2007,6 +2029,7 @@ op_unscope|5.017003||xViu
 ORIGMARK|5.003007|5.003007|
 OSNAME|5.003007|5.003007|
 OSVERS|5.007002|5.007002|
+output_non_portable|5.031008||Viu
 output_posix_warnings|5.029005||Viu
 package|5.003007||Viu
 package_version|5.011001||Viu
@@ -2071,6 +2094,7 @@ PadnamePV|5.017004|5.017004|x
 PadnameREFCNT|5.021007|5.021007|x
 PadnameREFCNT_dec|5.021007|5.021007|x
 PadnameSV|5.017004|5.017004|x
+PADNAMEt_OUTER|5.021007|5.021007|
 PadnameTYPE|||i
 PadnameUTF8|5.017004|5.017004|x
 pad_new|5.008001|5.008001|
@@ -2099,6 +2123,7 @@ parse_ident|5.017010||Viu
 parse_label|5.013007|5.013007|x
 parse_listexpr|5.013008|5.013008|x
 parse_lparen_question_flags|5.017009||Viu
+PARSE_OPTIONAL|5.013007|5.013007|
 parser_dup|5.009000|5.009000|u
 parser_free|5.009005||Viu
 parser_free_nexttoke_ops|5.017006||Viu
@@ -2119,6 +2144,12 @@ perl_clone_using|5.006000||nVu
 perl_construct|5.003007|5.003007|n
 Perl_custom_op_xop|5.013007||V
 perl_destruct|5.007003|5.007003|n
+Perl_eval_pv||5.003007|ou
+Perl_eval_sv||5.003007|ou
+PERL_EXIT_ABORT|5.019003|5.019003|
+PERL_EXIT_DESTRUCT_END|5.007003|5.007003|
+PERL_EXIT_EXPECTED|5.006000|5.006000|
+PERL_EXIT_WARN|5.019003|5.019003|
 perl_free|5.003007|5.003007|n
 PERL_HASH|5.003007|5.003007|p
 PERL_INT_MAX|5.003007|5.003007|p
@@ -2179,9 +2210,9 @@ PerlLIO_dup2_cloexec|5.027008||Viu
 PerlLIO_dup_cloexec|5.027008||Viu
 PerlLIO_open3_cloexec|5.027008||Viu
 PerlLIO_open_cloexec|5.027008||Viu
-PERL_LOADMOD_DENY||5.003007|ou
-PERL_LOADMOD_IMPORT_OPS||5.003007|ou
-PERL_LOADMOD_NOIMPORT||5.003007|ou
+PERL_LOADMOD_DENY|5.006000|5.003007|
+PERL_LOADMOD_IMPORT_OPS|5.006000|5.003007|
+PERL_LOADMOD_NOIMPORT|5.006000|5.003007|
 PERL_LONG_MAX|5.003007|5.003007|p
 PERL_LONG_MIN|5.003007|5.003007|p
 PERL_MAGIC_arylen|5.007002|5.003007|p
@@ -2287,7 +2318,7 @@ PERL_USE_GCC_BRACE_GROUPS|5.009004|5.004000|poVu
 PERL_USHORT_MAX|5.003007|5.003007|p
 PERL_USHORT_MIN|5.003007|5.003007|p
 PERL_VERSION|5.006000|5.003007|p
-perly_sighandler|||nu
+perly_sighandler|5.031007|5.031007|nu
 pidgone|5.003007||Viu
 PL_bufend||5.003007|pou
 PL_bufptr||5.003007|pou
@@ -2332,6 +2363,7 @@ PL_parser|5.009005|5.003007|p
 PL_peepp|5.007003|5.007003|
 PL_perldb|5.004005|5.003007|poVu
 PL_perl_destruct_level|5.004005|5.003007|p
+PL_phase|5.013007|5.013007|
 PL_ppaddr|5.006000|5.003007|poVu
 PL_rpeepp|5.013005|5.013005|
 PL_rsfp||5.003007|pou
@@ -2352,6 +2384,7 @@ PL_sv_zero|5.027003|5.027003|
 PL_tainted|5.004005|5.003007|poVu
 PL_tainting|5.004005|5.003007|poVu
 PL_tokenbuf||5.003007|pou
+PL_Xpv|5.005000|5.003007|poVu
 pm_description|5.009004||Viu
 pmop_dump|5.006000|5.006000|u
 pmruntime|5.003007||Viu
@@ -2426,13 +2459,13 @@ pv_pretty|5.009004|5.003007|p
 pv_uni_display|5.007003|5.007003|
 qerror|5.006000||cViu
 quadmath_format_needed|5.021004||nVi
-quadmath_format_valid|||nVi
+quadmath_format_valid|5.031007||nVi
 RANDBITS|5.003007|5.003007|
 READ_XDIGIT|5.017006|5.017006|
 realloc|5.007002|5.007002|n
 ReANY|||ncu
 re_compile|5.009005|5.009005|u
-re_croak2|||iu
+re_croak|||iu
 re_dup_guts|5.011000|5.011000|u
 reentrant_free|5.010000|5.010000|u
 reentrant_init|5.010000|5.010000|u
@@ -2495,6 +2528,7 @@ reg_numbered_buff_fetch|5.009005||cViu
 reg_numbered_buff_length|5.009005||cViu
 reg_numbered_buff_store|5.009005||cViu
 regpiece|5.005000||Viu
+regpnode|5.031010||Viu
 regprop|5.003007||Viu
 reg_qr_package|5.009005||cViu
 regrepeat|5.005000||Viu
@@ -2510,6 +2544,7 @@ re_intuit_string|5.006000||cVu
 Renew|5.003007|5.003007|
 Renewc|5.003007|5.003007|
 re_op_compile|5.017001||Viu
+re_op_compile_wrapper|5.031010||Viu
 repeatcpy|5.003007|5.003007|nu
 REPLACEMENT_CHARACTER_UTF8|5.025005|5.003007|p
 report_evil_fh|5.006001||Viu
@@ -2535,6 +2570,8 @@ runops_debug|5.005000|5.005000|u
 runops_standard|5.005000|5.005000|u
 run_user_filter|5.009003||Viu
 rv2cv_op_cv|5.013006|5.013006|
+RV2CVOPCV_MARK_EARLY|5.013006|5.013006|
+RV2CVOPCV_RETURN_NAME_GV|5.013006|5.013006|
 rvpv_dup|5.007003|5.007003|u
 rxres_free|5.004000||Viu
 rxres_restore|5.004000||Viu
@@ -2665,8 +2702,8 @@ share_hek_flags|5.008000||Viu
 SHORTSIZE|5.004000|5.004000|
 should_warn_nl|5.021001||nViu
 si_dup|5.007003|5.007003|u
-sighandler1|||nViu
-sighandler3|||nViu
+sighandler1|5.031007||nViu
+sighandler3|5.031007||nViu
 sighandler|5.003007||nViu
 simplify_sort|5.006000||Viu
 SITELIB|5.003007|5.003007|
@@ -2762,6 +2799,7 @@ sv_backoff|5.003007|5.003007|n
 sv_bless|5.003007|5.003007|
 sv_buf_to_ro|5.019008||Viu
 sv_buf_to_rw|5.019008||Viu
+SV_CATBYTES|5.021005|5.021005|
 sv_cat_decode|5.008001|5.008001|
 sv_catpv|5.003007|5.003007|
 sv_catpvf|5.006000|5.004000|v
@@ -2783,6 +2821,7 @@ sv_catsv|5.003007|5.003007|
 sv_catsv_flags|5.007002|5.007002|
 sv_catsv_mg|5.004005|5.003007|p
 sv_catsv_nomg|5.007002|5.003007|p
+SV_CATUTF8|5.021005|5.021005|
 sv_chop|5.003007|5.003007|
 sv_clean_all|5.003007||Vi
 sv_clean_objs|5.003007||Vi
@@ -2824,8 +2863,8 @@ SvEND|5.003007|5.003007|
 sv_eq|5.003007|5.003007|
 sv_eq_flags|5.013006|5.013006|
 sv_exp_grow|5.009003||Viu
-SVf|5.006000|5.003007|poVu
-SVfARG|5.009005|5.003007|pV
+SVf|5.006000|5.003007|p
+SVfARG|5.009005|5.003007|p
 sv_force_normal|5.006000|5.006000|
 sv_force_normal_flags|5.007001|5.007001|
 sv_free2|||xciu
@@ -2855,12 +2894,13 @@ SvIOK_only_UV|5.006000|5.006000|
 SvIOKp|5.003007|5.003007|
 SvIOK_UV|5.006000|5.006000|
 sv_isa|5.003007|5.003007|
+sv_isa_sv|5.031007|5.031007|x
 SvIsCOW|5.008003|5.008003|
 SvIsCOW_shared_hash|5.008003|5.008003|
 sv_isobject|5.003007|5.003007|
 SvIV|5.003007|5.003007|
 sv_iv|5.005000|5.005000|d
-SvIV_nomg|5.009001|5.007003|p
+SvIV_nomg|5.009001|5.003007|p
 SvIV_set|5.003007|5.003007|
 SvIVX|5.003007|5.003007|
 SvIVx|5.003007|5.003007|
@@ -2877,7 +2917,7 @@ sv_magicext_mglob|5.019002||cViu
 sv_magic_portable||5.004000|pou
 SvMAGIC_set|5.009003|5.003007|p
 sv_mortalcopy|5.003007|5.003007|
-sv_mortalcopy_flags|5.017005|5.007002|p
+sv_mortalcopy_flags|5.017005|5.003007|p
 SV_MUTABLE_RETURN|5.009003|5.003007|poVu
 sv_ncmp|5.009003||Viu
 sv_newmortal|5.003007|5.003007|
@@ -2892,11 +2932,11 @@ SvNOK_only|5.003007|5.003007|
 SvNOKp|5.003007|5.003007|
 sv_nolocking|5.007003|5.007003|d
 sv_nosharing|5.007003|5.007003|
-SV_NOSTEAL|5.009002|5.007003|p
+SV_NOSTEAL|5.009002|5.003007|p
 sv_nounlocking|5.007003|5.007003|d
 SvNV|5.006000|5.003007|
 sv_nv|5.006000|5.005000|d
-SvNV_nomg|5.013002|5.007003|p
+SvNV_nomg|5.013002|5.003007|p
 SvNV_set|5.006000|5.003007|
 SvNVX|5.006000|5.003007|
 SvNVx|5.006000|5.003007|
@@ -3035,7 +3075,7 @@ sv_setref_uv|5.007001|5.007001|
 sv_setsv|5.003007|5.003007|
 SvSetSV|5.003007|5.003007|
 sv_setsv_cow|5.009000||xcViu
-sv_setsv_flags|5.007002|5.007002|p
+sv_setsv_flags|5.007002|5.003007|p
 sv_setsv_mg|5.004005|5.003007|p
 sv_setsv_nomg|5.007002|5.003007|p
 SvSetSV_nosteal|5.004000|5.004000|
@@ -3045,6 +3085,7 @@ sv_setuv_mg|5.004005|5.003007|p
 SvSHARE|5.007003|5.007003|
 SvSHARED_HASH|5.009003||pVu
 SV_SMAGIC|5.009003|5.003007|p
+SVs_PADSTALE|5.009000|5.009000|
 SvSTASH|5.003007|5.003007|
 SvSTASH_set|5.009003|5.003007|p
 SVs_TEMP|5.003007|5.003007|
@@ -3074,7 +3115,7 @@ SVt_PVNV|5.003007|5.003007|
 SVt_REGEXP|5.011000|5.011000|
 SvTRUE|5.003007|5.003007|
 sv_true|5.005000|5.005000|
-SvTRUE_nomg|5.013006|5.007003|p
+SvTRUE_nomg|5.013006|5.003007|p
 SvTRUEx|5.003007|5.003007|
 SvTYPE|5.003007|5.003007|
 svtype|5.003007|5.003007|V
@@ -3092,7 +3133,7 @@ SvUPGRADE|5.003007|5.003007|
 sv_usepvn|5.003007|5.003007|
 sv_usepvn_flags|5.009004|5.009004|
 sv_usepvn_mg|5.004005|5.003007|p
-SvUTF8|5.006000|5.006000|
+SvUTF8|5.006000|5.003007|p
 sv_utf8_decode|5.006000|5.006000|
 sv_utf8_downgrade|5.006000|5.006000|
 sv_utf8_downgrade_flags|5.031004|5.031004|
@@ -3107,7 +3148,7 @@ sv_utf8_upgrade_flags_grow|5.011000|5.011000|
 sv_utf8_upgrade_nomg|5.007002|5.007002|
 SvUV|5.004000|5.003007|p
 sv_uv|5.005000|5.003007|pd
-SvUV_nomg|5.009001|5.007003|p
+SvUV_nomg|5.009001|5.003007|p
 SvUV_set|5.009003|5.003007|p
 SvUVX|5.004000|5.003007|p
 SvUVx|5.004000|5.003007|p
@@ -3211,10 +3252,17 @@ usage|5.005000||Viu
 utf16_textfilter|5.011001||Viu
 utf16_to_utf8|5.006000||cViu
 utf16_to_utf8_reversed|5.006000||cViu
+UTF8_CHECK_ONLY|5.007001|5.007001|
 UTF8_CHK_SKIP|5.031006|5.006000|p
+UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE|5.025005|5.025005|
+UTF8_DISALLOW_ILLEGAL_INTERCHANGE|5.013009|5.013009|
+UTF8_DISALLOW_NONCHAR|5.013009|5.013009|
+UTF8_DISALLOW_PERL_EXTENDED|5.027002|5.027002|
+UTF8_DISALLOW_SUPER|5.013009|5.013009|
+UTF8_DISALLOW_SURROGATE|5.013009|5.013009|
 utf8_distance|5.006000|5.006000|
-UTF8f|5.019001|5.019001|
-UTF8fARG|5.019002|5.019002|
+UTF8f|5.019001|5.003007|p
+UTF8fARG|5.019002|5.003007|p
 utf8_hop|5.006000|5.006000|n
 utf8_hop_back|5.025007|5.025007|n
 utf8_hop_forward|5.025007|5.025007|n
@@ -3232,7 +3280,7 @@ utf8n_to_uvchr|5.007001|5.007001|n
 utf8n_to_uvchr_error|5.025006|5.025006|n
 utf8n_to_uvchr_msgs|5.027009|5.027009|nx
 _utf8n_to_uvchr_msgs_helper|5.029001||ncVu
-utf8n_to_uvuni|5.007001||cV
+utf8n_to_uvuni|5.007001||dcV
 UTF8_SAFE_SKIP|5.029009|5.006000|p
 UTF8SKIP|5.006000|5.006000|
 UTF8_SKIP|5.023002|5.006000|p
@@ -3242,6 +3290,12 @@ utf8_to_uvchr_buf|5.015009|5.006001|p
 utf8_to_uvchr_buf_helper|5.031004||cVu
 utf8_to_uvuni|5.007001||dcV
 utf8_to_uvuni_buf|5.015009||dcV
+UTF8_WARN_ILLEGAL_C9_INTERCHANGE|5.025005|5.025005|
+UTF8_WARN_ILLEGAL_INTERCHANGE|5.013009|5.013009|
+UTF8_WARN_NONCHAR|5.013009|5.013009|
+UTF8_WARN_PERL_EXTENDED|5.027002|5.027002|
+UTF8_WARN_SUPER|5.013009|5.013009|
+UTF8_WARN_SURROGATE|5.013009|5.013009|
 utilize|5.003007||Viu
 UVCHR_IS_INVARIANT|5.019004|5.003007|p
 UVCHR_SKIP|5.022000|5.003007|p
@@ -3255,7 +3309,7 @@ UVSIZE|5.006000|5.003007|p
 UVTYPE|5.006000|5.003007|p
 UVuf|5.006000|5.003007|p
 uvuni_to_utf8|5.019004||cVu
-uvuni_to_utf8_flags|5.007003||cV
+uvuni_to_utf8_flags|5.007003||dcV
 UVxf|5.006000|5.003007|p
 UVXf|5.007001|5.007001|p
 validate_proto|5.019002||xcVi
@@ -3301,6 +3355,7 @@ WARN_EXPERIMENTAL__ALPHA_ASSERTIONS|5.027009|5.027009|
 WARN_EXPERIMENTAL__BITWISE|5.021009|5.021009|
 WARN_EXPERIMENTAL__CONST_ATTR|5.021008|5.021008|
 WARN_EXPERIMENTAL__DECLARED_REFS|5.025003|5.025003|
+WARN_EXPERIMENTAL__ISA|5.031007|5.031007|
 WARN_EXPERIMENTAL__LEXICAL_SUBS|5.017005|5.017005|
 WARN_EXPERIMENTAL__POSTDEREF|5.019005|5.019005|
 WARN_EXPERIMENTAL__PRIVATE_USE|5.029009|5.029009|
@@ -3455,8 +3510,8 @@ my($hint, $define, $function);
 
 sub find_api
 {
+  BEGIN { 'warnings'->unimport('uninitialized') if "$]" > '5.006' }
   my $code = shift;
-  no warnings 'uninitialized';
   $code =~ s{
     / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*)
   | "[^"\\]*(?:\\.[^"\\]*)*"
@@ -4771,6 +4826,7 @@ extern U32 DPPP_(my_PL_signals);
 #  define PL_DBsub                  DBsub
 #  define PL_DBtrace                DBtrace
 #  define PL_Sv                     Sv
+#  define PL_Xpv                    Xpv
 #  define PL_bufend                 bufend
 #  define PL_bufptr                 bufptr
 #  define PL_compiling              compiling
@@ -5158,7 +5214,19 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
 
 #endif
 
-/* These could become provided when they become part of the public API */
+#ifndef WIDEST_UTYPE
+# ifdef QUADKIND
+#  ifdef U64TYPE
+#   define WIDEST_UTYPE U64TYPE
+#  else
+#   define WIDEST_UTYPE unsigned Quad_t
+#  endif
+# else
+#  define WIDEST_UTYPE U32
+# endif
+#endif
+
+/* These could become provided if/when they become part of the public API */
 #ifndef withinCOUNT
 #  define withinCOUNT(c, l, n)           \
    (((WIDEST_UTYPE) (((c)) - ((l) | 0))) <= (((WIDEST_UTYPE) ((n) | 0))))
@@ -5172,6 +5240,14 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
     : (withinCOUNT(((WIDEST_UTYPE) (c)), (l), ((u) - (l)))))
 #endif
 
+/* The '| 0' part ensures a compiler error if c is not integer (like e.g., a
+ * pointer) */
+#undef FITS_IN_8_BITS   /* handy.h version uses a core-only constant */
+#ifndef FITS_IN_8_BITS
+#  define FITS_IN_8_BITS(c)              (   (sizeof(c) == 1)               \
+                                    || !(((WIDEST_UTYPE)((c) | 0)) & ~0xFF))
+#endif
+
 /* Create the macro for "is'macro'_utf8_safe(s, e)".  For code points below
  * 256, it calls the equivalent _L1 macro by converting the UTF-8 to code
  * point.  That is so that it can automatically get the bug fixes done in this
@@ -5527,18 +5603,6 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 
 #endif
 
-#ifndef WIDEST_UTYPE
-# ifdef QUADKIND
-#  ifdef U64TYPE
-#   define WIDEST_UTYPE U64TYPE
-#  else
-#   define WIDEST_UTYPE Quad_t
-#  endif
-# else
-#  define WIDEST_UTYPE U32
-# endif
-#endif
-
 /* On versions without NATIVE_TO_ASCII, only ASCII is supported */
 #if defined(EBCDIC) && defined(NATIVE_TO_ASCI)
 #ifndef NATIVE_TO_LATIN1
@@ -5841,7 +5905,7 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 
 #ifndef isBLANK_L1
 #  define isBLANK_L1(c)                  (    isBLANK(c)                                    \
-                             || (   (WIDEST_UTYPE) (c) < 256                   \
+                             || (   FITS_IN_8_BITS(c)                          \
                                  && NATIVE_TO_LATIN1((U8) c) == 0xA0))
 #endif
 
@@ -5850,7 +5914,7 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 #endif
 
 #ifndef isDIGIT
-#  define isDIGIT(c)                     ((c) <= '9' && (c) >= '0')
+#  define isDIGIT(c)                     inRANGE(c, '0', '9')
 #endif
 
 #ifndef isDIGIT_L1
@@ -5893,7 +5957,7 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 
 #ifndef isLOWER_L1
 #  define isLOWER_L1(c)                  (    isLOWER(c)                                    \
-                             || (   (WIDEST_UTYPE) (c) < 256                   \
+                             || (   FITS_IN_8_BITS(c)                          \
                                  && (  (   NATIVE_TO_LATIN1((U8) c) >= 0xDF    \
                                         && NATIVE_TO_LATIN1((U8) c) != 0xF7)   \
                                      || NATIVE_TO_LATIN1((U8) c) == 0xAA       \
@@ -5914,7 +5978,7 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 #endif
 
 #ifndef isPRINT_L1
-#  define isPRINT_L1(c)                  ((WIDEST_UTYPE) (c) < 256 && ! isCNTRL_L1(c))
+#  define isPRINT_L1(c)                  (FITS_IN_8_BITS(c) && ! isCNTRL_L1(c))
 #endif
 
 #ifndef isPSXSPC
@@ -5941,7 +6005,7 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 
 #ifndef isPUNCT_L1
 #  define isPUNCT_L1(c)                  (    isPUNCT(c)                                   \
-                              || (   (WIDEST_UTYPE) (c) < 256                  \
+                              || (  FITS_IN_8_BITS(c)                          \
                                   && (   NATIVE_TO_LATIN1((U8) c) == 0xA1      \
                                       || NATIVE_TO_LATIN1((U8) c) == 0xA7      \
                                       || NATIVE_TO_LATIN1((U8) c) == 0xAB      \
@@ -5958,14 +6022,14 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 
 #ifndef isSPACE_L1
 #  define isSPACE_L1(c)                  (    isSPACE(c)                                    \
-                             || (   (WIDEST_UTYPE) (c) < 256                   \
+                             || (FITS_IN_8_BITS(c)                             \
                                  && (   NATIVE_TO_LATIN1((U8) c) == 0x85       \
                                      || NATIVE_TO_LATIN1((U8) c) == 0xA0)))
 #endif
 
 #ifndef isUPPER_L1
 #  define isUPPER_L1(c)                  (   isUPPER(c)                                     \
-                             || (   (WIDEST_UTYPE) (c) < 256                   \
+                             || (FITS_IN_8_BITS(c)                             \
                                  && (   NATIVE_TO_LATIN1((U8) c) >= 0xC0       \
                                      && NATIVE_TO_LATIN1((U8) c) <= 0xDE       \
                                      && NATIVE_TO_LATIN1((U8) c) != 0xD7)))
@@ -6080,30 +6144,37 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 #endif
 
 #ifndef isASCII_uvchr
-#  define isASCII_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isASCII_L1(c) : 0)
+#  define isASCII_uvchr(c)               (FITS_IN_8_BITS(c) ? isASCII_L1(c) : 0)
 #endif
 
 #if (PERL_BCDVERSION >= 0x5006000)
+#  ifdef isALPHA_uni    /* If one defined, all are; this is just an exemplar */
+#    define D_PPP_is_ctype(upper, lower, c)                                 \
+        (FITS_IN_8_BITS(c)                                                  \
+        ? is ## upper ## _L1(c)                                             \
+        : is ## upper ## _uni((UV) (c)))    /* _uni is old synonym */
+#  else
+#    define D_PPP_is_ctype(upper, lower, c)                                 \
+        (FITS_IN_8_BITS(c)                                                  \
+        ? is ## upper ## _L1(c)                                             \
+        : is_uni_ ## lower((UV) (c)))     /* is_uni_ is even older */
+#  endif
 #ifndef isALPHA_uvchr
-#  define isALPHA_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isALPHA_L1(c) : is_uni_alpha((UV) (c)))
+#  define isALPHA_uvchr(c)               D_PPP_is_ctype(ALPHA, alpha, c)
 #endif
 
 #ifndef isALPHANUMERIC_uvchr
-#  define isALPHANUMERIC_uvchr(c)        ((WIDEST_UTYPE) (c) < 256                 \
-    ? isALPHANUMERIC_L1(c) : (is_uni_alpha((UV) (c)) || is_uni_digit((UV) (c))))
+#  define isALPHANUMERIC_uvchr(c)        (isALPHA_uvchr(c) || isDIGIT_uvchr(c))
 #endif
 
 #  ifdef is_uni_blank
 #ifndef isBLANK_uvchr
-#  define isBLANK_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isBLANK_L1(c) : is_uni_blank((UV) (c)))
+#  define isBLANK_uvchr(c)               D_PPP_is_ctype(BLANK, blank, c)
 #endif
 
 #  else
 #ifndef isBLANK_uvchr
-#  define isBLANK_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                   \
+#  define isBLANK_uvchr(c)               (FITS_IN_8_BITS(c)                          \
                                  ? isBLANK_L1(c)                            \
                                  : (   (UV) (c) == 0x1680 /* Unicode 3.0 */ \
                                     || inRANGE((UV) (c), 0x2000, 0x200A)    \
@@ -6114,18 +6185,15 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 
 #  endif
 #ifndef isCNTRL_uvchr
-#  define isCNTRL_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isCNTRL_L1(c) : is_uni_cntrl((UV) (c)))
+#  define isCNTRL_uvchr(c)               D_PPP_is_ctype(CNTRL, cntrl, c)
 #endif
 
 #ifndef isDIGIT_uvchr
-#  define isDIGIT_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isDIGIT_L1(c) : is_uni_digit((UV) (c)))
+#  define isDIGIT_uvchr(c)               D_PPP_is_ctype(DIGIT, digit, c)
 #endif
 
 #ifndef isGRAPH_uvchr
-#  define isGRAPH_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isGRAPH_L1(c) : is_uni_graph((UV) (c)))
+#  define isGRAPH_uvchr(c)               D_PPP_is_ctype(GRAPH, graph, c)
 #endif
 
 #ifndef isIDCONT_uvchr
@@ -6133,18 +6201,15 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 #endif
 
 #ifndef isIDFIRST_uvchr
-#  define isIDFIRST_uvchr(c)             ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isIDFIRST_L1(c) : is_uni_idfirst((UV) (c)))
+#  define isIDFIRST_uvchr(c)             D_PPP_is_ctype(IDFIRST, idfirst, c)
 #endif
 
 #ifndef isLOWER_uvchr
-#  define isLOWER_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isLOWER_L1(c) : is_uni_lower((UV) (c)))
+#  define isLOWER_uvchr(c)               D_PPP_is_ctype(LOWER, lower, c)
 #endif
 
 #ifndef isPRINT_uvchr
-#  define isPRINT_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isPRINT_L1(c) : is_uni_print((UV) (c)))
+#  define isPRINT_uvchr(c)               D_PPP_is_ctype(PRINT, print, c)
 #endif
 
 #ifndef isPSXSPC_uvchr
@@ -6152,28 +6217,24 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
 #endif
 
 #ifndef isPUNCT_uvchr
-#  define isPUNCT_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isPUNCT_L1(c) : is_uni_punct((UV) (c)))
+#  define isPUNCT_uvchr(c)               D_PPP_is_ctype(PUNCT, punct, c)
 #endif
 
 #ifndef isSPACE_uvchr
-#  define isSPACE_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isSPACE_L1(c) : is_uni_space((UV) (c)))
+#  define isSPACE_uvchr(c)               D_PPP_is_ctype(SPACE, space, c)
 #endif
 
 #ifndef isUPPER_uvchr
-#  define isUPPER_uvchr(c)               ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isUPPER_L1(c) : is_uni_upper((UV) (c)))
+#  define isUPPER_uvchr(c)               D_PPP_is_ctype(UPPER, upper, c)
 #endif
 
 #ifndef isXDIGIT_uvchr
-#  define isXDIGIT_uvchr(c)              ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isXDIGIT_L1(c) : is_uni_xdigit((UV) (c)))
+#  define isXDIGIT_uvchr(c)              D_PPP_is_ctype(XDIGIT, xdigit, c)
 #endif
 
 #ifndef isWORDCHAR_uvchr
-#  define isWORDCHAR_uvchr(c)            ((WIDEST_UTYPE) (c) < 256                 \
-                                   ? isWORDCHAR_L1(c) : is_uni_alnum((UV) (c)))
+#  define isWORDCHAR_uvchr(c)            (FITS_IN_8_BITS(c)                        \
+                               ? isWORDCHAR_L1(c) : isALPHANUMERIC_uvchr(c))
 #endif
 #ifndef isALPHA_utf8_safe
 #  define isALPHA_utf8_safe(s,e)         D_PPP_IS_GENERIC_UTF8_SAFE(s, e, ALPHA)
@@ -6941,13 +7002,22 @@ DPPP_(my_sv_setpvf_mg_nocontext)(SV * const sv, const char * const pat, ...)
 #  define SV_COW_SHARED_HASH_KEYS        0
 #endif
 
-#if (PERL_BCDVERSION < 0x5007002)
+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
+#ifndef sv_2pv_flags
+#  define sv_2pv_flags(sv, lp, flags)    ({ SV *_sv = (sv); const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &PL_na; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_2pv(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_2pv(_sv, _lp); })
+#endif
+
+#ifndef sv_pvn_force_flags
+#  define sv_pvn_force_flags(sv, lp, flags) ({ SV *_sv = (sv); const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &PL_na; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_pvn_force(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_pvn_force(_sv, _lp); })
+#endif
+
+#else
 #ifndef sv_2pv_flags
-#  define sv_2pv_flags(sv, lp, flags)    sv_2pv((sv), (lp) ? (lp) : &PL_na)
+#  define sv_2pv_flags(sv, lp, flags)    ((PL_Sv = (sv)), (!((flags) & SV_GMAGIC) && SvGMAGICAL(PL_Sv)) ? (SvGMAGICAL_off(PL_Sv), (PL_Xpv = (XPV *)sv_2pv(PL_Sv, (lp) ? (lp) : &PL_na)), SvGMAGICAL_on(PL_Sv), (char *)PL_Xpv) : sv_2pv(PL_Sv, (lp) ? (lp) : &PL_na))
 #endif
 
 #ifndef sv_pvn_force_flags
-#  define sv_pvn_force_flags(sv, lp, flags) sv_pvn_force((sv), (lp) ? (lp) : &PL_na)
+#  define sv_pvn_force_flags(sv, lp, flags) ((PL_Sv = (sv)), (!((flags) & SV_GMAGIC) && SvGMAGICAL(PL_Sv)) ? (SvGMAGICAL_off(PL_Sv), (PL_Xpv = (XPV *)sv_pvn_force(PL_Sv, (lp) ? (lp) : &PL_na)), SvGMAGICAL_on(PL_Sv), (char *)PL_Xpv) : sv_pvn_force(PL_Sv, (lp) ? (lp) : &PL_na))
 #endif
 
 #endif
@@ -7449,6 +7519,9 @@ DPPP_(my_my_strnlen)(const char *str, Size_t maxlen)
 #ifndef memNEs
 #  define memNEs(s1, l, s2)              !memEQs(s1, l, s2)
 #endif
+#ifndef memCHRs
+#  define memCHRs(s, c)                  ((const char *) memchr("" s "" , c, sizeof(s)-1))
+#endif
 #ifndef MoveD
 #  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t))
 #endif
@@ -7826,11 +7899,31 @@ DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params)
 #ifndef call_method
 #  define call_method                    perl_call_method
 #endif
+
 #ifndef eval_sv
 #  define eval_sv                        perl_eval_sv
 #endif
 
+#if (PERL_BCDVERSION >= 0x5003098) && (PERL_BCDVERSION < 0x5006000)
+#ifndef eval_pv
+#  define eval_pv                        perl_eval_pv
+#endif
+
+#endif
 /* Replace: 0 */
+
+#if (PERL_BCDVERSION < 0x5006000)
+#ifndef Perl_eval_sv
+#  define Perl_eval_sv                   perl_eval_sv
+#endif
+
+#if (PERL_BCDVERSION >= 0x5003098)
+#ifndef Perl_eval_pv
+#  define Perl_eval_pv                   perl_eval_pv
+#endif
+
+#endif
+#endif
 #ifndef PERL_LOADMOD_DENY
 #  define PERL_LOADMOD_DENY              0x1
 #endif
@@ -7887,8 +7980,7 @@ DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params)
 # endif
 #endif
 
-/* Replace perl_eval_pv with eval_pv */
-
+/* This is backport for Perl 5.3.97d and older which do not provide perl_eval_pv */
 #ifndef eval_pv
 #if defined(NEED_eval_pv)
 static SV * DPPP_(my_eval_pv)(const char * p, I32 croak_on_error);
@@ -8247,10 +8339,13 @@ DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
 # define newSVpvn_flags(s, len, flags) ((PL_Sv = newSVpvn(D_PPP_CONSTPV_ARG((s)), (len))), SvFLAGS(PL_Sv) |= ((flags) & SVf_UTF8), (((flags) & SVs_TEMP) ? sv_2mortal(PL_Sv) : PL_Sv))
 #endif
 #endif
+#ifndef SV_NOSTEAL
+#  define SV_NOSTEAL                     16
+#endif
 
 #if ( (PERL_BCDVERSION >= 0x5007003) && (PERL_BCDVERSION < 0x5008007) ) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009002) )
 #undef sv_setsv_flags
-#define SV_NOSTEAL 16
+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
 #define sv_setsv_flags(dstr, sstr, flags)                                          \
   STMT_START {                                                                     \
     if (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) {  \
@@ -8261,6 +8356,78 @@ DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
       Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL);            \
     }                                                                              \
   } STMT_END
+#else
+  (                                                                                \
+    (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) ? (   \
+      SvTEMP_off((SV *)(sstr)),                                                    \
+      Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL),            \
+      SvTEMP_on((SV *)(sstr)),                                                     \
+      1                                                                            \
+    ) : (                                                                          \
+      Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL),            \
+      1                                                                            \
+    )                                                                              \
+  )
+#endif
+#endif
+
+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
+#ifndef sv_setsv_flags
+#  define sv_setsv_flags(dstr, sstr, flags) \
+  STMT_START {                                                                     \
+    if (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) {  \
+      SvTEMP_off((SV *)(sstr));                                                    \
+      if (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) {          \
+        SvGMAGICAL_off((SV *)(sstr));                                              \
+        sv_setsv((dstr), (sstr));                                                  \
+        SvGMAGICAL_on((SV *)(sstr));                                               \
+      } else {                                                                     \
+        sv_setsv((dstr), (sstr));                                                  \
+      }                                                                            \
+      SvTEMP_on((SV *)(sstr));                                                     \
+    } else {                                                                       \
+      if (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) {          \
+        SvGMAGICAL_off((SV *)(sstr));                                              \
+        sv_setsv((dstr), (sstr));                                                  \
+        SvGMAGICAL_on((SV *)(sstr));                                               \
+      } else {                                                                     \
+        sv_setsv((dstr), (sstr));                                                  \
+      }                                                                            \
+    }                                                                              \
+  } STMT_END
+#endif
+
+#else
+#ifndef sv_setsv_flags
+#  define sv_setsv_flags(dstr, sstr, flags) \
+  (                                                                                \
+    (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) ? (   \
+      SvTEMP_off((SV *)(sstr)),                                                    \
+      (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) ? (           \
+        SvGMAGICAL_off((SV *)(sstr)),                                              \
+        sv_setsv((dstr), (sstr)),                                                  \
+        SvGMAGICAL_on((SV *)(sstr)),                                               \
+        1                                                                          \
+      ) : (                                                                        \
+        sv_setsv((dstr), (sstr)),                                                  \
+        1                                                                          \
+      ),                                                                           \
+      SvTEMP_on((SV *)(sstr)),                                                     \
+      1                                                                            \
+    ) : (                                                                          \
+      (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) ? (           \
+        SvGMAGICAL_off((SV *)(sstr)),                                              \
+        sv_setsv((dstr), (sstr)),                                                  \
+        SvGMAGICAL_on((SV *)(sstr)),                                               \
+        1                                                                          \
+      ) : (                                                                        \
+        sv_setsv((dstr), (sstr)),                                                  \
+        1                                                                          \
+      )                                                                            \
+    )                                                                              \
+  )
+#endif
+
 #endif
 
 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
@@ -8274,14 +8441,10 @@ DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
 #endif
 
 #endif
-
-#ifdef SV_NOSTEAL
 #ifndef newSVsv_nomg
 #  define newSVsv_nomg(sv)               newSVsv_flags((sv), SV_NOSTEAL)
 #endif
 
-#endif
-
 #if (PERL_BCDVERSION >= 0x5017005)
 #ifndef sv_mortalcopy_flags
 #  define sv_mortalcopy_flags(sv, flags) Perl_sv_mortalcopy_flags(aTHX_ (sv), (flags))
@@ -8497,7 +8660,27 @@ DPPP_(my_newSVpvn_share)(pTHX_ const char *s, I32 len, U32 hash)
 #  define sv_pvn_nomg                    sv_pvn
 #endif
 
-#ifdef SV_NOSTEAL
+#ifdef SVf_IVisUV
+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
+#ifndef SvIV_nomg
+#  define SvIV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvIV((sv)) : ({ SV *_sviv = sv_mortalcopy_flags((sv), SV_NOSTEAL); IV _iv = SvIV(_sviv); SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(_sviv) & SVf_IVisUV); _iv; }))
+#endif
+
+#ifndef SvUV_nomg
+#  define SvUV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvUV((sv)) : ({ SV *_svuv = sv_mortalcopy_flags((sv), SV_NOSTEAL); UV _uv = SvUV(_svuv); SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(_svuv) & SVf_IVisUV); _uv; }))
+#endif
+
+#else
+#ifndef SvIV_nomg
+#  define SvIV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvIV((sv)) : ((PL_Sv = sv_mortalcopy_flags((sv), SV_NOSTEAL)), sv_upgrade(PL_Sv, SVt_PVIV), (SvIVX(PL_Sv) = SvIV(PL_Sv)), (SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(PL_Sv) & SVf_IVisUV)), SvIVX(PL_Sv)))
+#endif
+
+#ifndef SvUV_nomg
+#  define SvUV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvIV((sv)) : ((PL_Sv = sv_mortalcopy_flags((sv), SV_NOSTEAL)), sv_upgrade(PL_Sv, SVt_PVIV), (SvUVX(PL_Sv) = SvUV(PL_Sv)), (SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(PL_Sv) & SVf_IVisUV)), SvUVX(PL_Sv)))
+#endif
+
+#endif
+#else
 #ifndef SvIV_nomg
 #  define SvIV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvIV((sv)) : SvIVx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
 #endif
@@ -8506,6 +8689,7 @@ DPPP_(my_newSVpvn_share)(pTHX_ const char *s, I32 len, U32 hash)
 #  define SvUV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvUV((sv)) : SvUVx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
 #endif
 
+#endif
 #ifndef SvNV_nomg
 #  define SvNV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvNV((sv)) : SvNVx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
 #endif
@@ -8514,8 +8698,6 @@ DPPP_(my_newSVpvn_share)(pTHX_ const char *s, I32 len, U32 hash)
 #  define SvTRUE_nomg(sv)                (!SvGMAGICAL((sv)) ? SvTRUE((sv)) : SvTRUEx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
 #endif
 
-#endif
-
 #ifndef sv_catpv_mg
 #  define sv_catpv_mg(sv, ptr)          \
    STMT_START {                         \
@@ -9694,6 +9876,28 @@ DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size)
 #endif
 #endif
 
+#ifdef SVf_UTF8
+#ifndef SvUTF8
+#  define SvUTF8(sv)                     (SvFLAGS(sv) & SVf_UTF8)
+#endif
+
+#endif
+
+#if (PERL_BCDVERSION == 0x5019001) /* 5.19.1 does not have UTF8fARG, only broken UTF8f */
+#undef UTF8f
+#endif
+
+#ifdef SVf_UTF8
+#ifndef UTF8f
+#  define UTF8f                          SVf
+#endif
+
+#ifndef UTF8fARG
+#  define UTF8fARG(u,l,p)                newSVpvn_flags((p), (l), ((u) ? SVf_UTF8 : 0) | SVs_TEMP)
+#endif
+
+#endif
+
 #define D_PPP_MIN(a,b) (((a) <= (b)) ? (a) : (b))
 #ifndef UNICODE_REPLACEMENT
 #  define UNICODE_REPLACEMENT            0xFFFD
@@ -9851,6 +10055,7 @@ DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size)
                                       UTF8SKIP(s))))
 #endif
 
+/* UTF8_CHK_SKIP depends on my_strnlen */
 #ifndef UTF8_SKIP
 #  define UTF8_SKIP(s)                   UTF8SKIP(s)
 #endif
@@ -9873,17 +10078,14 @@ DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size)
 #endif
 
 #ifdef UVCHR_IS_INVARIANT
-#  if 'A' == 65
-#    ifdef QUADKIND
-#      define D_PPP_UVCHR_SKIP_UPPER(c)                                         \
-          (WIDEST_UTYPE) (c) <                                                  \
-        (((WIDEST_UTYPE) 1) << (6 * D_PPP_BYTE_INFO_BITS)) ? 7 : 13
-#    else
-#      define D_PPP_UVCHR_SKIP_UPPER(c) 7  /* 32 bit platform */
-#    endif
-#  else
-     /* In the releases this is backported to, UTF-EBCDIC had a max of 2**31-1 */
+#  if 'A' != 65 || UVSIZE < 8
+     /* 32 bit platform, which includes UTF-EBCDIC on the releases this is
+      * backported to */
 #    define D_PPP_UVCHR_SKIP_UPPER(c) 7
+#  else
+#    define D_PPP_UVCHR_SKIP_UPPER(c)                                       \
+        (((WIDEST_UTYPE) (c)) <                                             \
+         (((WIDEST_UTYPE) 1) << (6 * D_PPP_BYTE_INFO_BITS)) ? 7 : 13)
 #  endif
 #ifndef UVCHR_SKIP
 #  define UVCHR_SKIP(c)                  \
@@ -10106,8 +10308,9 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
          * The modern versions allow anything that evaluates to a legal UV, but
          * not overlongs nor an empty input */
         ret = D_PPP_utf8_to_uvchr_buf_callee(
-                s, curlen, retlen,   (UTF8_ALLOW_ANYUV
-                                  & ~(UTF8_ALLOW_LONG|UTF8_ALLOW_EMPTY)));
+              (U8 *) /* Early perls: no const */
+                    s, curlen, retlen,   (UTF8_ALLOW_ANYUV
+                                      & ~(UTF8_ALLOW_LONG|UTF8_ALLOW_EMPTY)));
 
 #    if (PERL_BCDVERSION >= 0x5026000) && (PERL_BCDVERSION < 0x5028000)
 
@@ -10156,6 +10359,7 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
         }
         else {
             ret = D_PPP_utf8_to_uvchr_buf_callee(
+                                     (U8 *) /* Early perls: no const */
                                             s, curlen, retlen, UTF8_ALLOW_ANY);
             /* Override with the REPLACEMENT character, as that is what the
              * modern version of this function returns */
@@ -10167,7 +10371,7 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
              * length.  It should not extend past the end of string, nor past
              * what the first byte indicates the length is, nor past the
              * continuation characters */
-            if (retlen && *retlen >= 0) {
+            if (retlen && (IV) *retlen >= 0) {
                 unsigned int i = 1;
 
                 *retlen = D_PPP_MIN(*retlen, curlen);
@@ -10220,7 +10424,7 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
 
 /* Replace utf8_to_uvchr with utf8_to_uvchr_buf */
 
-#ifdef SV_NOSTEAL
+#ifdef sv_len_utf8
    /* Older Perl versions have broken sv_len_utf8() when passed sv does not have SVf_UTF8 flag set */
    /* Also note that SvGETMAGIC() may change presence of SVf_UTF8 flag */
 #  if (PERL_BCDVERSION < 0x5017005)