This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Inline dfa for translating from UTF-8
[perl5.git] / embed.fnc
index 73dc70f..1e1c629 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -282,6 +282,7 @@ ApdR        |SV**   |av_fetch       |NN AV *av|SSize_t key|I32 lval
 Apd    |void   |av_fill        |NN AV *av|SSize_t fill
 ApdR   |SSize_t|av_len         |NN AV *av
 ApdR   |AV*    |av_make        |SSize_t size|NN SV **strp
+p      |SV*    |av_nonelem     |NN AV *av|SSize_t ix
 Apd    |SV*    |av_pop         |NN AV *av
 ApdoxM |void   |av_create_and_push|NN AV **const avp|NN SV *const val
 Apd    |void   |av_push        |NN AV *av|NN SV *val
@@ -357,8 +358,8 @@ Afnp        |void   |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|...
 Afnp   |void   |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|...
 Afnp   |void   |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
 Afnp   |void   |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
-Afnp   |int    |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
-Afnp   |int    |printf_nocontext|NN const char *format|...
+Abfnp  |int    |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
+Abfnp  |int    |printf_nocontext|NN const char *format|...
 #endif
 : Used in pp.c
 p      |SV *   |core_prototype |NULLOK SV *sv|NN const char *name \
@@ -417,7 +418,7 @@ Ap  |void   |dounwind       |I32 cxix
 pmb    |bool|do_aexec  |NULLOK SV* really|NN SV** mark|NN SV** sp
 : Used in pp_sys.c
 p      |bool|do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report
-A    |int    |do_binmode     |NN PerlIO *fp|int iotype|int mode
+Abp    |int    |do_binmode     |NN PerlIO *fp|int iotype|int mode
 : Used in pp.c
 Ap     |bool   |do_close       |NULLOK GV* gv|bool not_implicit
 : Defined in doio.c, used only in pp_sys.c
@@ -461,7 +462,7 @@ Ap  |void   |do_join        |NN SV *sv|NN SV *delim|NN SV **mark|NN SV **sp
 pR     |I32    |do_ncmp        |NN SV *const left|NN SV *const right
 Apmb   |bool   |do_open        |NN GV* gv|NN const char* name|I32 len|int as_raw \
                                |int rawmode|int rawperm|NULLOK PerlIO* supplied_fp
-A    |bool   |do_open9       |NN GV *gv|NN const char *name|I32 len|int as_raw \
+Abp    |bool   |do_open9       |NN GV *gv|NN const char *name|I32 len|int as_raw \
                                |int rawmode|int rawperm|NULLOK PerlIO *supplied_fp \
                                |NN SV *svs|I32 num
 pn     |void   |setfd_cloexec|int fd
@@ -588,7 +589,7 @@ ApR |GV*    |gv_autoload_pv |NULLOK HV* stash|NN const char* namepv \
 ApR    |GV*    |gv_autoload_pvn        |NULLOK HV* stash|NN const char* name \
                                         |STRLEN len|U32 flags
 Ap     |void   |gv_check       |NN HV* stash
-A    |void   |gv_efullname   |NN SV* sv|NN const GV* gv
+Abp    |void   |gv_efullname   |NN SV* sv|NN const GV* gv
 Apmb   |void   |gv_efullname3  |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
 Ap     |void   |gv_efullname4  |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
 Ap     |GV*    |gv_fetchfile   |NN const char* name
@@ -618,7 +619,7 @@ ApM |GV*    |gv_fetchmethod_pv_flags|NN HV* stash|NN const char* name \
 ApM    |GV*    |gv_fetchmethod_pvn_flags|NN HV* stash|NN const char* name \
                                |const STRLEN len|U32 flags
 Ap     |GV*    |gv_fetchpv     |NN const char *nambeg|I32 add|const svtype sv_type
-A    |void   |gv_fullname    |NN SV* sv|NN const GV* gv
+Abp    |void   |gv_fullname    |NN SV* sv|NN const GV* gv
 Apmb   |void   |gv_fullname3   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
 Ap     |void   |gv_fullname4   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
 : Used in scope.c
@@ -744,28 +745,31 @@ ApR       |I32    |is_lvalue_sub
 : Used in cop.h
 XopR   |I32    |was_lvalue_sub
 ApMRnP |STRLEN |_is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags
-ADMpR  |U32    |to_uni_upper_lc|U32 c
-ADMpR  |U32    |to_uni_title_lc|U32 c
-ADMpR  |U32    |to_uni_lower_lc|U32 c
-ADMpR  |bool   |is_uni_alnum   |UV c
-ADMpR  |bool   |is_uni_alnumc  |UV c
-ADMpR  |bool   |is_uni_idfirst |UV c
-ADMpR  |bool   |is_uni_alpha   |UV c
-ADMpPR |bool   |is_uni_ascii   |UV c
-ADMpPR |bool   |is_uni_blank   |UV c
-ADMpPR |bool   |is_uni_space   |UV c
-ADMpPR |bool   |is_uni_cntrl   |UV c
-ADMpR  |bool   |is_uni_graph   |UV c
-ADMpR  |bool   |is_uni_digit   |UV c
-ADMpR  |bool   |is_uni_upper   |UV c
-ADMpR  |bool   |is_uni_lower   |UV c
-ADMpR  |bool   |is_uni_print   |UV c
-ADMpR  |bool   |is_uni_punct   |UV c
-ADMpPR |bool   |is_uni_xdigit  |UV c
+AbDMpR |U32    |to_uni_upper_lc|U32 c
+AbDMpR |U32    |to_uni_title_lc|U32 c
+AbDMpR |U32    |to_uni_lower_lc|U32 c
+AbDMpR |bool   |is_uni_alnum   |UV c
+AbDMpR |bool   |is_uni_alnumc  |UV c
+AbDMpR |bool   |is_uni_idfirst |UV c
+AbDMpR |bool   |is_uni_alpha   |UV c
+AbDMpPR        |bool   |is_uni_ascii   |UV c
+AbDMpPR        |bool   |is_uni_blank   |UV c
+AbDMpPR        |bool   |is_uni_space   |UV c
+AbDMpPR        |bool   |is_uni_cntrl   |UV c
+AbDMpR |bool   |is_uni_graph   |UV c
+AbDMpR |bool   |is_uni_digit   |UV c
+AbDMpR |bool   |is_uni_upper   |UV c
+AbDMpR |bool   |is_uni_lower   |UV c
+AbDMpR |bool   |is_uni_print   |UV c
+AbDMpR |bool   |is_uni_punct   |UV c
+AbDMpPR        |bool   |is_uni_xdigit  |UV c
 AMp    |UV     |to_uni_upper   |UV c|NN U8 *p|NN STRLEN *lenp
 AMp    |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
-ADMpR  |bool   |isIDFIRST_lazy |NN const char* p
-ADMpR  |bool   |isALNUM_lazy   |NN const char* p
+p      |void   |init_uniprops
+EpX    |SV *   |parse_uniprop_string|NN const char * const name           \
+                                    |const Size_t len                     \
+                                    |const bool to_fold                   \
+                                    |NN bool * invert
 #ifdef PERL_IN_UTF8_C
 snR    |U8     |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp  \
                |const char dummy
@@ -776,7 +780,7 @@ snR |int    |is_utf8_cp_above_31_bits|NN const U8 * const s             \
 #  endif
 #endif
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-EX   |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags
+EXnp   |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags
 #endif
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
 p      |UV     |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s
@@ -784,29 +788,31 @@ p |UV     |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_o
 AMp    |UV     |to_uni_lower   |UV c|NN U8 *p|NN STRLEN *lenp
 AMmp   |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
 AMp    |UV     |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags
-ADMpR  |bool   |is_uni_alnum_lc|UV c
-ADMpR  |bool   |is_uni_alnumc_lc|UV c
-ADMpR  |bool   |is_uni_idfirst_lc|UV c
+AbDMpR |bool   |is_uni_alnum_lc|UV c
+AbDMpR |bool   |is_uni_alnumc_lc|UV c
+AbDMpR |bool   |is_uni_idfirst_lc|UV c
 AMpR   |bool   |_is_uni_perl_idcont|UV c
 AMpR   |bool   |_is_uni_perl_idstart|UV c
-ADMpR  |bool   |is_uni_alpha_lc|UV c
-ADMpPR |bool   |is_uni_ascii_lc|UV c
-ADMpPR |bool   |is_uni_space_lc|UV c
-ADMpPR |bool   |is_uni_blank_lc|UV c
-ADMpPR |bool   |is_uni_cntrl_lc|UV c
-ADMpR  |bool   |is_uni_graph_lc|UV c
-ADMpR  |bool   |is_uni_digit_lc|UV c
-ADMpR  |bool   |is_uni_upper_lc|UV c
-ADMpR  |bool   |is_uni_lower_lc|UV c
-ADMpR  |bool   |is_uni_print_lc|UV c
-ADMpR  |bool   |is_uni_punct_lc|UV c
-ADMpPR |bool   |is_uni_xdigit_lc|UV c
+AbDMpR |bool   |is_uni_alpha_lc|UV c
+AbDMpPR        |bool   |is_uni_ascii_lc|UV c
+AbDMpPR        |bool   |is_uni_space_lc|UV c
+AbDMpPR        |bool   |is_uni_blank_lc|UV c
+AbDMpPR        |bool   |is_uni_cntrl_lc|UV c
+AbDMpR |bool   |is_uni_graph_lc|UV c
+AbDMpR |bool   |is_uni_digit_lc|UV c
+AbDMpR |bool   |is_uni_upper_lc|UV c
+AbDMpR |bool   |is_uni_lower_lc|UV c
+AbDMpR |bool   |is_uni_print_lc|UV c
+AbDMpR |bool   |is_uni_punct_lc|UV c
+AbDMpPR        |bool   |is_uni_xdigit_lc|UV c
 AndmoR |bool   |is_utf8_invariant_string|NN const U8* const s              \
                |STRLEN len
 AnidR  |bool   |is_utf8_invariant_string_loc|NN const U8* const s          \
                |STRLEN len                                                 \
                |NULLOK const U8 ** ep
+#ifndef EBCDIC
 AniR   |unsigned int|_variant_byte_number|PERL_UINTMAX_T word
+#endif
 #if defined(PERL_CORE) || defined(PERL_EXT)
 EinR   |Size_t |variant_under_utf8_count|NN const U8* const s              \
                |NN const U8* const e
@@ -817,15 +823,17 @@ AmnpdRP   |bool   |is_invariant_string|NN const U8* const s|STRLEN len
 EXnidR |bool   |is_utf8_non_invariant_string|NN const U8* const s          \
                |STRLEN len
 #endif
-AnpdD  |STRLEN |is_utf8_char   |NN const U8 *s
+AbnpdD |STRLEN |is_utf8_char   |NN const U8 *s
 Abmnpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end
+AnidR  |Size_t |isUTF8_CHAR|NN const U8 * const s0                         \
+                           |NN const U8 * const e
 AnmdpR |bool   |is_utf8_string |NN const U8 *s|STRLEN len
 AnidR  |bool   |is_utf8_string_flags                                       \
                |NN const U8 *s|STRLEN len|const U32 flags
 AnmdpR |bool   |is_strict_utf8_string|NN const U8 *s|STRLEN len
 AnmdpR |bool   |is_c9strict_utf8_string|NN const U8 *s|STRLEN len
 Anpdmb |bool   |is_utf8_string_loc                                         \
-               |NN const U8 *s|STRLEN len|NN const U8 **ep
+               |NN const U8 *s|const STRLEN len|NN const U8 **ep
 Andm   |bool   |is_utf8_string_loc_flags                                   \
                |NN const U8 *s|STRLEN len|NN const U8 **ep                 \
                |const U32 flags
@@ -865,10 +873,6 @@ AMpR       |bool   |_is_utf8_FOO|U8 classnum|NN const U8 * const p             \
                |NN const char * const file|const unsigned line
 AMpR   |bool   |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p     \
                |NN const U8 * const e
-ADMpR  |bool   |is_utf8_alnum  |NN const U8 *p
-ADMpR  |bool   |is_utf8_alnumc |NN const U8 *p
-ADMpR  |bool   |is_utf8_idfirst|NN const U8 *p
-ADMpR  |bool   |is_utf8_xidfirst|NN const U8 *p
 AMpR   |bool   |_is_utf8_idcont|NN const U8 *p
 AMpR   |bool   |_is_utf8_idstart|NN const U8 *p
 AMpR   |bool   |_is_utf8_xidcont|NN const U8 *p
@@ -877,29 +881,10 @@ AMpR      |bool   |_is_utf8_perl_idcont_with_len|NN const U8 *p               \
                |NN const U8 * const e
 AMpR   |bool   |_is_utf8_perl_idstart_with_len|NN const U8 *p              \
                |NN const U8 * const e
-ADMpR  |bool   |is_utf8_idcont |NN const U8 *p
-ADMpR  |bool   |is_utf8_xidcont        |NN const U8 *p
-ADMpR  |bool   |is_utf8_alpha  |NN const U8 *p
-ADMpR  |bool   |is_utf8_ascii  |NN const U8 *p
-ADMpR  |bool   |is_utf8_blank  |NN const U8 *p
-ADMpR  |bool   |is_utf8_space  |NN const U8 *p
-ADMpR  |bool   |is_utf8_perl_space     |NN const U8 *p
-ADMpR  |bool   |is_utf8_perl_word      |NN const U8 *p
-ADMpR  |bool   |is_utf8_cntrl  |NN const U8 *p
-ADMpR  |bool   |is_utf8_digit  |NN const U8 *p
-ADMpR  |bool   |is_utf8_posix_digit    |NN const U8 *p
-ADMpR  |bool   |is_utf8_graph  |NN const U8 *p
-ADMpR  |bool   |is_utf8_upper  |NN const U8 *p
-ADMpR  |bool   |is_utf8_lower  |NN const U8 *p
-ADMpR  |bool   |is_utf8_print  |NN const U8 *p
-ADMpR  |bool   |is_utf8_punct  |NN const U8 *p
-ADMpR  |bool   |is_utf8_xdigit |NN const U8 *p
 AMpR   |bool   |_is_utf8_mark  |NN const U8 *p
-ADMpR  |bool   |is_utf8_mark   |NN const U8 *p
 #if defined(PERL_CORE) || defined(PERL_EXT)
 EXdpR  |bool   |isSCRIPT_RUN   |NN const U8 *s|NN const U8 *send   \
-                               |const bool utf8_target             \
-                               |NULLOK SCX_enum * ret_script
+                               |const bool utf8_target
 #endif
 : Used in perly.y
 p      |OP*    |jmaybe         |NN OP *o
@@ -1026,6 +1011,7 @@ p |int    |magic_freearylen_p|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setdbline|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setdebugvar|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setdefelem|NN SV* sv|NN MAGIC* mg
+p      |int    |magic_setnonelem|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setenv   |NN SV* sv|NN MAGIC* mg
 dp     |int    |magic_sethint  |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setisa   |NN SV* sv|NN MAGIC* mg
@@ -1296,23 +1282,25 @@ ApdO    |AV*    |get_av         |NN const char *name|I32 flags
 ApdO   |HV*    |get_hv         |NN const char *name|I32 flags
 ApdO   |CV*    |get_cv         |NN const char* name|I32 flags
 Apd    |CV*    |get_cvn_flags  |NN const char* name|STRLEN len|I32 flags
-EXnpo  |char*  |setlocale      |int category|NULLOK const char* locale
+Ando   |const char*|Perl_setlocale|const int category|NULLOK const char* locale
 #if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H)
 Ando   |const char*|Perl_langinfo|const nl_item item
 #else
 Ando   |const char*|Perl_langinfo|const int item
 #endif
 ApOM   |int    |init_i18nl10n  |int printwarn
-ApOM   |int    |init_i18nl14n  |int printwarn
+AbpOM  |int    |init_i18nl14n  |int printwarn
 p      |char*  |my_strerror    |const int errnum
 Xpn    |void   |_warn_problematic_locale
-p      |void   |new_numeric    |NULLOK const char* newcoll
 Xp     |void   |set_numeric_underlying
 Xp     |void   |set_numeric_standard
 Xp     |bool   |_is_in_locale_category|const bool compiling|const int category
-Apd    |void   |sync_locale
+Apdn   |void   |switch_to_global_locale
+Apdn   |bool   |sync_locale
+ApMn   |void   |thread_locale_init
+ApMn   |void   |thread_locale_term
 ApdO   |void   |require_pv     |NN const char* pv
-Apd    |void   |pack_cat       |NN SV *cat|NN const char *pat|NN const char *patend \
+Abpd   |void   |pack_cat       |NN SV *cat|NN const char *pat|NN const char *patend \
                                |NN SV **beglist|NN SV **endlist|NN SV ***next_in_list|U32 flags
 Apd    |void   |packlist       |NN SV *cat|NN const char *pat|NN const char *patend|NN SV **beglist|NN SV **endlist
 #if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C)
@@ -1454,10 +1442,10 @@ Ap      |void   |save_I8        |NN I8* bytep
 Ap     |void   |save_int       |NN int* intp
 Ap     |void   |save_item      |NN SV* item
 Ap     |void   |save_iv        |NN IV *ivp
-A    |void   |save_list      |NN SV** sarg|I32 maxsarg
-A    |void   |save_long      |NN long* longp
+Abp    |void   |save_list      |NN SV** sarg|I32 maxsarg
+Abp    |void   |save_long      |NN long* longp
 Apmb   |void   |save_mortalizesv|NN SV* sv
-A    |void   |save_nogv      |NN GV* gv
+Abp    |void   |save_nogv      |NN GV* gv
 : Used in SAVEFREOP(), used in gv.c, op.c, perl.c, pp_ctl.c, pp_sort.c
 Apmb   |void   |save_op
 Ap     |SV*    |save_scalar    |NN GV* gv
@@ -1508,9 +1496,10 @@ Anp      |Signal_t |csighandler  |int sig
 #endif
 Ap     |SV**   |stack_grow     |NN SV** sp|NN SV** p|SSize_t n
 Ap     |I32    |start_subparse |I32 is_format|U32 flags
+Xp     |void   |init_named_cv  |NN CV *cv|NN OP *nameop
 : Used in pp_ctl.c
 p      |void   |sub_crush_depth|NN CV* cv
-Amd    |bool   |sv_2bool       |NN SV *const sv
+Apbmd  |bool   |sv_2bool       |NN SV *const sv
 Apd    |bool   |sv_2bool_flags |NN SV *sv|I32 flags
 Apd    |CV*    |sv_2cv         |NULLOK SV* sv|NN HV **const st|NN GV **const gvp \
                                |const I32 lref
@@ -1528,15 +1517,15 @@ Apmb    |char*  |sv_2pv         |NN SV *sv|NULLOK STRLEN *lp
 Apd    |char*  |sv_2pv_flags   |NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags
 Apd    |char*  |sv_2pvutf8     |NN SV *sv|NULLOK STRLEN *const lp
 Apd    |char*  |sv_2pvbyte     |NN SV *sv|NULLOK STRLEN *const lp
-A    |char*  |sv_pvn_nomg    |NN SV* sv|NULLOK STRLEN* lp
+Abp    |char*  |sv_pvn_nomg    |NN SV* sv|NULLOK STRLEN* lp
 Apmb   |UV     |sv_2uv         |NN SV *sv
 Apd    |UV     |sv_2uv_flags   |NN SV *const sv|const I32 flags
-Apd    |IV     |sv_iv          |NN SV* sv
-Apd    |UV     |sv_uv          |NN SV* sv
-Apd    |NV     |sv_nv          |NN SV* sv
-Apd    |char*  |sv_pvn         |NN SV *sv|NN STRLEN *lp
-Apd    |char*  |sv_pvutf8n     |NN SV *sv|NN STRLEN *lp
-Apd    |char*  |sv_pvbyten     |NN SV *sv|NN STRLEN *lp
+Abpd   |IV     |sv_iv          |NN SV* sv
+Abpd   |UV     |sv_uv          |NN SV* sv
+Abpd   |NV     |sv_nv          |NN SV* sv
+Abpd   |char*  |sv_pvn         |NN SV *sv|NN STRLEN *lp
+Abpd   |char*  |sv_pvutf8n     |NN SV *sv|NN STRLEN *lp
+Abpd   |char*  |sv_pvbyten     |NN SV *sv|NN STRLEN *lp
 Apd    |I32    |sv_true        |NULLOK SV *const sv
 #if defined(PERL_IN_SV_C)
 sd     |void   |sv_add_arena   |NN char *const ptr|const U32 size \
@@ -1572,7 +1561,7 @@ Aopd      |I32    |sv_cmp_locale  |NULLOK SV *const sv1|NULLOK SV *const sv2
 Apd    |I32    |sv_cmp_locale_flags    |NULLOK SV *const sv1 \
                                |NULLOK SV *const sv2|const U32 flags
 #if defined(USE_LOCALE_COLLATE)
-Amd    |char*  |sv_collxfrm    |NN SV *const sv|NN STRLEN *const nxp
+Apbmd  |char*  |sv_collxfrm    |NN SV *const sv|NN STRLEN *const nxp
 Apd    |char*  |sv_collxfrm_flags      |NN SV *const sv|NN STRLEN *const nxp|I32 const flags
 #endif
 Apd    |int    |getcwd_sv      |NN SV* sv
@@ -1589,7 +1578,7 @@ ApdR      |bool   |sv_does_sv     |NN SV* sv|NN SV* namesv|U32 flags
 ApdR   |bool   |sv_does_pv     |NN SV* sv|NN const char *const name|U32 flags
 ApdR   |bool   |sv_does_pvn    |NN SV* sv|NN const char *const name|const STRLEN len \
                                 |U32 flags
-Amd    |I32    |sv_eq          |NULLOK SV* sv1|NULLOK SV* sv2
+Apbmd  |I32    |sv_eq          |NULLOK SV* sv1|NULLOK SV* sv2
 Apd    |I32    |sv_eq_flags    |NULLOK SV* sv1|NULLOK SV* sv2|const U32 flags
 Apd    |void   |sv_free        |NULLOK SV *const sv
 poMX   |void   |sv_free2       |NN SV *const sv|const U32 refcnt
@@ -1732,14 +1721,13 @@ EXp     |SV*    |_core_swash_init|NN const char* pkg|NN const char* name \
                |NN SV* listsv|I32 minbits|I32 none \
                |NULLOK SV* invlist|NULLOK U8* const flags_p
 #endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)
 EiMRn  |UV*    |invlist_array  |NN SV* const invlist
 EiMRn  |bool*  |get_invlist_offset_addr|NN SV* invlist
 EiMRn  |UV     |_invlist_len   |NN SV* const invlist
 EMiRn  |bool   |_invlist_contains_cp|NN SV* const invlist|const UV cp
 EXpMRn |SSize_t|_invlist_search        |NN SV* const invlist|const UV cp
 EXMpR  |SV*    |_get_swash_invlist|NN SV* const swash
-EXMpR  |HV*    |_swash_inversion_hash  |NN SV* const swash
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
 EXpM   |SV*    |_get_regclass_nonbitmap_data                              \
@@ -1749,7 +1737,6 @@ EXpM      |SV*    |_get_regclass_nonbitmap_data                              \
                                |NULLOK SV **listsvp                       \
                                |NULLOK SV **lonly_utf8_locale             \
                                |NULLOK SV **output_invlist
-EXp    |void|_load_PL_utf8_foldclosures|
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C)
 EXMp   |void   |_invlist_dump  |NN PerlIO *file|I32 level   \
@@ -1791,23 +1778,21 @@ s       |UV     |_to_utf8_case  |const UV uv1                                   \
                                |NN const U8 *p                                 \
                                |NN U8* ustrp                                   \
                                |NULLOK STRLEN *lenp                            \
-                               |NN SV **swashp                                 \
-                               |NN const char *normal                          \
-                               |NULLOK const char *special
+                               |NN SV *invlist                                 \
+                               |NN const int * const invmap                    \
+                               |NULLOK const unsigned int * const * const aux_tables   \
+                               |NULLOK const U8 * const aux_table_lengths      \
+                               |NN const char * const normal
 #endif
-ApbmdD |UV     |to_utf8_lower  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 AMp    |UV     |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e         \
                                |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
                                |NN const char * const file|const int line
-ApbmdD |UV     |to_utf8_upper  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 AMp    |UV     |_to_utf8_upper_flags   |NN const U8 *p|NULLOK const U8 *e      \
                                |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
                                |NN const char * const file|const int line
-ApbmdD |UV     |to_utf8_title  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 AMp    |UV     |_to_utf8_title_flags   |NN const U8 *p|NULLOK const U8* e      \
                                |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
                                |NN const char * const file|const int line
-ApbmdD |UV     |to_utf8_fold   |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 AMp    |UV     |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e          \
                                |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags  \
                                |NN const char * const file|const int line
@@ -1820,7 +1805,7 @@ pn        |bool   |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
 #if defined(UNLINK_ALL_VERSIONS)
 Ap     |I32    |unlnk          |NN const char* f
 #endif
-Apd    |SSize_t|unpack_str     |NN const char *pat|NN const char *patend|NN const char *s \
+Abpd   |SSize_t|unpack_str     |NN const char *pat|NN const char *patend|NN const char *s \
                                |NULLOK const char *strbeg|NN const char *strend|NULLOK char **new_s \
                                |I32 ocnt|U32 flags
 Apd    |SSize_t|unpackstring   |NN const char *pat|NN const char *patend|NN const char *s \
@@ -1851,22 +1836,29 @@ AMnp    |U8*    |bytes_from_utf8_loc|NN const U8 *s                         \
                                    |NULLOK const U8 ** first_unconverted
 ApMd   |U8*    |bytes_to_utf8  |NN const U8 *s|NN STRLEN *lenp
 ApdD   |UV     |utf8_to_uvchr  |NN const U8 *s|NULLOK STRLEN *retlen
-ApdD   |UV     |utf8_to_uvuni  |NN const U8 *s|NULLOK STRLEN *retlen
-ApMD   |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
+AbpdD  |UV     |utf8_to_uvuni  |NN const U8 *s|NULLOK STRLEN *retlen
+AbpMD  |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
 Aopd   |UV     |utf8_to_uvchr_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
 ApdD   |UV     |utf8_to_uvuni_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
 pM     |bool   |check_utf8_print       |NN const U8 *s|const STRLEN len
 
-Adop   |UV     |utf8n_to_uvchr |NN const U8 *s                             \
+Adnop  |UV     |utf8n_to_uvchr |NN const U8 *s                             \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags
-Adop   |UV     |utf8n_to_uvchr_error|NN const U8 *s                        \
+Adnop  |UV     |utf8n_to_uvchr_error|NN const U8 *s                        \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags                            \
                                |NULLOK U32 * errors
-Adp    |UV     |utf8n_to_uvchr_msgs|NN const U8 *s                         \
+AMndi  |UV     |utf8n_to_uvchr_msgs|NN const U8 *s                         \
+                               |STRLEN curlen                              \
+                               |NULLOK STRLEN *retlen                      \
+                               |const U32 flags                            \
+                               |NULLOK U32 * errors                        \
+                               |NULLOK AV ** msgs
+AMnpd  |UV     |_utf8n_to_uvchr_msgs_helper                                \
+                               |NN const U8 *s                             \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags                            \
@@ -1878,10 +1870,15 @@ Ap      |UV     |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 fl
 Adm    |U8*    |uvchr_to_utf8  |NN U8 *d|UV uv
 Ap     |U8*    |uvuni_to_utf8  |NN U8 *d|UV uv
 Adm    |U8*    |uvchr_to_utf8_flags    |NN U8 *d|UV uv|UV flags
-Apd    |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
+AdmM   |U8*    |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs
+Apod   |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
+ApM    |U8*    |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs
 Ap     |U8*    |uvuni_to_utf8_flags    |NN U8 *d|UV uv|UV flags
 Apd    |char*  |pv_uni_display |NN SV *dsv|NN const U8 *spv|STRLEN len|STRLEN pvlim|UV flags
 ApdR   |char*  |sv_uni_display |NN SV *dsv|NN SV *ssv|STRLEN pvlim|UV flags
+EXpR   |Size_t |_inverse_folds |const UV cp                                \
+                               |NN unsigned int * first_folds_to           \
+                               |NN const unsigned int ** remaining_folds_to
 : Used by Data::Alias
 EXp    |void   |vivify_defelem |NN SV* sv
 : Used in pp.c
@@ -2084,8 +2081,8 @@ Ap        |void   |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern*
 #endif
 
 Amop   |const XOP *    |custom_op_xop  |NN const OP *o
-ApR    |const char *   |custom_op_name |NN const OP *o
-ApR    |const char *   |custom_op_desc |NN const OP *o
+AbpR   |const char *   |custom_op_name |NN const OP *o
+AbpR   |const char *   |custom_op_desc |NN const OP *o
 pRX    |XOPRETANY      |custom_op_get_field    |NN const OP *o|const xop_flags_enum field
 Aop    |void   |custom_op_register     |NN Perl_ppaddr_t ppaddr \
                        |NN const XOP *xop
@@ -2533,13 +2530,13 @@ ERp     |bool   |_is_grapheme   |NN const U8 * strbeg|NN const U8 * s|NN const U8 *stren
 #endif
 
 #if defined(PERL_IN_REGEXEC_C)
-ERs    |bool   |isFOO_utf8_lc  |const U8 classnum|NN const U8* character
-ERns   |char *|find_next_ascii|NN char* s|NN const char * send|const bool is_utf8
-ERns   |char *|find_next_non_ascii|NN char* s|NN const char * send|const bool is_utf8
-ERns   |char * |find_next_masked|NN char * s                           \
-                                |NN const char * send                  \
+ERs    |bool   |isFOO_utf8_lc  |const U8 classnum|NN const U8* character|NN const U8* e
+ERns   |char * |find_next_ascii|NN char* s|NN const char * send|const bool is_utf8
+ERns   |char * |find_next_non_ascii|NN char* s|NN const char * send|const bool is_utf8
+ERns   |U8 *   |find_next_masked|NN U8 * s                             \
+                                |NN const U8 * send                    \
                                 |const U8 byte|const U8 mask
-ERns   |char *|find_span_end   |NN char* s|NN const char * send|const char span_byte
+ERns   |U8 *|find_span_end     |NN U8* s|NN const U8 * send|const U8 span_byte
 ERns   |U8 *|find_span_end_mask|NN U8 * s|NN const U8 * send   \
                                |const U8 span_byte|const U8 mask
 ERs    |SSize_t|regmatch       |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog
@@ -2777,15 +2774,17 @@ s       |bool   |isa_lookup     |NN HV *stash|NN const char * const name \
 #endif
 
 #if defined(PERL_IN_LOCALE_C)
+#  ifdef USE_LOCALE
 sn     |const char*|category_name |const int category
 s      |const char*|switch_category_locale_to_template|const int switch_category|const int template_category|NULLOK const char * template_locale
 s      |void   |restore_switched_locale|const int category|NULLOK const char * const original_locale
+#  endif
 #  ifdef HAS_NL_LANGINFO
 sn     |const char*|my_nl_langinfo|const nl_item item|bool toggle
 #  else
 sn     |const char*|my_nl_langinfo|const int item|bool toggle
 #  endif
-in     |const char *|save_to_buffer|NN const char * string     \
+inR    |const char *|save_to_buffer|NULLOK const char * string \
                                    |NULLOK char **buf          \
                                    |NN Size_t *buf_size        \
                                    |const Size_t offset
@@ -2794,6 +2793,13 @@ s        |char*  |stdize_locale  |NN char* locs
 s      |void   |new_collate    |NULLOK const char* newcoll
 s      |void   |new_ctype      |NN const char* newctype
 s      |void   |set_numeric_radix|const bool use_locale
+s      |void   |new_numeric    |NULLOK const char* newnum
+#    ifdef USE_POSIX_2008_LOCALE
+sn     |const char*|emulate_setlocale|const int category               \
+                                   |NULLOK const char* locale          \
+                                   |unsigned int index                 \
+                                   |const bool is_index_valid
+#    endif
 #    ifdef WIN32
 s      |char*  |win32_setlocale|int category|NULLOK const char* locale
 #    endif
@@ -2816,7 +2822,8 @@ snR       |char * |setlocale_debug_string |const int category                 \
 #if        defined(USE_LOCALE)         \
     && (   defined(PERL_IN_LOCALE_C)   \
         || defined(PERL_IN_MG_C)       \
-       || defined (PERL_EXT_POSIX))
+       || defined (PERL_EXT_POSIX)     \
+       || defined (PERL_EXT_LANGINFO))
 ApM    |bool   |_is_cur_LC_category_utf8|int category
 #endif
 
@@ -2847,18 +2854,21 @@ sn      |NV|mulexp10    |NV value|I32 exponent
 #endif
 
 #if defined(PERL_IN_UTF8_C)
+sR     |HV *   |new_msg_hv |NN const char * const message                  \
+                           |U32 categories                                 \
+                           |U32 flag
 sRM    |UV     |check_locale_boundary_crossing                             \
                |NN const U8* const p                                       \
                |const UV result                                            \
                |NN U8* const ustrp                                         \
                |NN STRLEN *lenp
 iR     |bool   |is_utf8_common |NN const U8 *const p                       \
-                               |NN SV **swash                              \
+                               |NULLOK SV **swash                          \
                                |NN const char * const swashname            \
                                |NULLOK SV* const invlist
 iR     |bool   |is_utf8_common_with_len|NN const U8 *const p               \
                                           |NN const U8 *const e            \
-                                   |NN SV **swash                          \
+                                   |NULLOK SV **swash                      \
                                    |NN const char * const swashname        \
                                    |NULLOK SV* const invlist
 sR     |SV*    |swatch_get     |NN SV* swash|UV start|UV span
@@ -2882,7 +2892,8 @@ Apd       |char*  |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32
 Apmb   |void   |sv_copypv      |NN SV *const dsv|NN SV *const ssv
 Apmd   |void   |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv
 Apd    |void   |sv_copypv_flags        |NN SV *const dsv|NN SV *const ssv|const I32 flags
-Ap     |char*  |my_atof2       |NN const char *s|NN NV* value
+Apo    |char*  |my_atof2       |NN const char *orig|NN NV* value
+Ap     |char*  |my_atof3       |NN const char *orig|NN NV* value|const STRLEN len
 Apn    |int    |my_socketpair  |int family|int type|int protocol|int fd[2]
 Apn    |int    |my_dirfd       |NULLOK DIR* dir
 #ifdef PERL_ANY_COW