This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
embed.fnc: Restrict the 'ref' function's accessibility
[perl5.git] / proto.h
diff --git a/proto.h b/proto.h
index c02b034..fffad8f 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -143,6 +143,11 @@ PERL_CALLCONV UV   Perl__to_utf8_title_flags(pTHX_ const U8 *p, const U8* e, U8* u
 PERL_CALLCONV UV       Perl__to_utf8_upper_flags(pTHX_ const U8 *p, const U8 *e, U8* ustrp, STRLEN *lenp, bool flags, const char * const file, const int line);
 #define PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS  \
        assert(p); assert(ustrp); assert(file)
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE UV  S__utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
+#define PERL_ARGS_ASSERT__UTF8_TO_UVCHR_BUF    \
+       assert(s); assert(send)
+#endif
 PERL_CALLCONV UV       Perl__utf8n_to_uvchr_msgs_helper(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 * errors, AV ** msgs);
 #define PERL_ARGS_ASSERT__UTF8N_TO_UVCHR_MSGS_HELPER   \
        assert(s)
@@ -243,7 +248,7 @@ PERL_CALLCONV SV*   Perl_av_shift(pTHX_ AV *av)
 PERL_CALLCONV SV**     Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val);
 #define PERL_ARGS_ASSERT_AV_STORE      \
        assert(av)
-/* PERL_CALLCONV SSize_t       Perl_av_tindex(pTHX_ AV *av)
+/* PERL_CALLCONV SSize_t       av_tindex(pTHX_ AV *av)
                        __attribute__warn_unused_result__; */
 
 #ifndef PERL_NO_INLINE_FUNCTIONS
@@ -619,7 +624,7 @@ PERL_CALLCONV_NO_RET void   Perl_croak_caller(const char* pat, ...)
                        __attribute__noreturn__
                        __attribute__format__null_ok__(__printf__,1,2);
 
-PERL_STATIC_NO_RET void        S_croak_memory_wrap(void)
+PERL_STATIC_INLINE_NO_RET void S_croak_memory_wrap(void)
                        __attribute__noreturn__;
 
 PERL_CALLCONV_NO_RET void      Perl_croak_no_mem(void)
@@ -644,6 +649,7 @@ PERL_CALLCONV_NO_RET void   Perl_croak_xs_usage(const CV *const cv, const char *co
 PERL_CALLCONV regexp_engine const *    Perl_current_re_engine(pTHX);
 #ifndef NO_MATHOMS
 PERL_CALLCONV const char *     Perl_custom_op_desc(pTHX_ const OP *o)
+                       __attribute__deprecated__
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_CUSTOM_OP_DESC        \
        assert(o)
@@ -656,6 +662,7 @@ PERL_CALLCONV XOPRETANY     Perl_custom_op_get_field(pTHX_ const OP *o, const xop_fl
 
 #ifndef NO_MATHOMS
 PERL_CALLCONV const char *     Perl_custom_op_name(pTHX_ const OP *o)
+                       __attribute__deprecated__
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_CUSTOM_OP_NAME        \
        assert(o)
@@ -765,10 +772,12 @@ PERL_CALLCONV bool        Perl_do_aexec5(pTHX_ SV* really, SV** mark, SV** sp, int fd,
 #define PERL_ARGS_ASSERT_DO_AEXEC5     \
        assert(mark); assert(sp)
 #ifndef NO_MATHOMS
-PERL_CALLCONV int      Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode);
+PERL_CALLCONV int      Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_DO_BINMODE    \
        assert(fp)
 #endif
+
 PERL_CALLCONV bool     Perl_do_close(pTHX_ GV* gv, bool not_implicit);
 PERL_CALLCONV void     Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full);
 #define PERL_ARGS_ASSERT_DO_DUMP_PAD   \
@@ -808,10 +817,12 @@ PERL_CALLCONV bool        Perl_do_open6(pTHX_ GV *gv, const char *oname, STRLEN len, Pe
 #define PERL_ARGS_ASSERT_DO_OPEN6      \
        assert(gv); assert(oname)
 #ifndef NO_MATHOMS
-PERL_CALLCONV bool     Perl_do_open9(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, I32 num);
+PERL_CALLCONV bool     Perl_do_open9(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, I32 num)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_DO_OPEN9      \
        assert(gv); assert(name); assert(svs)
 #endif
+
 PERL_CALLCONV bool     Perl_do_open_raw(pTHX_ GV *gv, const char *oname, STRLEN len, int rawmode, int rawperm, Stat_t *statbufp);
 #define PERL_ARGS_ASSERT_DO_OPEN_RAW   \
        assert(gv); assert(oname)
@@ -1094,10 +1105,12 @@ PERL_CALLCONV SV*       Perl_gv_const_sv(pTHX_ GV* gv)
 
 PERL_CALLCONV void     Perl_gv_dump(pTHX_ GV* gv);
 #ifndef NO_MATHOMS
-PERL_CALLCONV void     Perl_gv_efullname(pTHX_ SV* sv, const GV* gv);
+PERL_CALLCONV void     Perl_gv_efullname(pTHX_ SV* sv, const GV* gv)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_GV_EFULLNAME  \
        assert(sv); assert(gv)
 #endif
+
 #ifndef NO_MATHOMS
 PERL_CALLCONV void     Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
 #define PERL_ARGS_ASSERT_GV_EFULLNAME3 \
@@ -1159,10 +1172,12 @@ PERL_CALLCONV GV*       Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_typ
 #define PERL_ARGS_ASSERT_GV_FETCHSV    \
        assert(name)
 #ifndef NO_MATHOMS
-PERL_CALLCONV void     Perl_gv_fullname(pTHX_ SV* sv, const GV* gv);
+PERL_CALLCONV void     Perl_gv_fullname(pTHX_ SV* sv, const GV* gv)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_GV_FULLNAME   \
        assert(sv); assert(gv)
 #endif
+
 #ifndef NO_MATHOMS
 PERL_CALLCONV void     Perl_gv_fullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
 #define PERL_ARGS_ASSERT_GV_FULLNAME3  \
@@ -1387,8 +1402,10 @@ PERL_CALLCONV void       Perl_init_dbargs(pTHX);
 PERL_CALLCONV void     Perl_init_debugger(pTHX);
 PERL_CALLCONV int      Perl_init_i18nl10n(pTHX_ int printwarn);
 #ifndef NO_MATHOMS
-PERL_CALLCONV int      Perl_init_i18nl14n(pTHX_ int printwarn);
+PERL_CALLCONV int      Perl_init_i18nl14n(pTHX_ int printwarn)
+                       __attribute__deprecated__;
 #endif
+
 PERL_CALLCONV void     Perl_init_named_cv(pTHX_ CV *cv, OP *nameop);
 #define PERL_ARGS_ASSERT_INIT_NAMED_CV \
        assert(cv); assert(nameop)
@@ -1449,11 +1466,11 @@ PERL_STATIC_INLINE Size_t       S_isUTF8_CHAR(const U8 * const s0, const U8 * const e)
        assert(s0); assert(e)
 #endif
 
-/* PERL_CALLCONV bool  Perl_is_ascii_string(const U8* const s, STRLEN len)
+/* PERL_CALLCONV bool  is_ascii_string(const U8* const s, STRLEN len)
                        __attribute__warn_unused_result__
                        __attribute__pure__; */
 
-/* PERL_CALLCONV bool  Perl_is_c9strict_utf8_string(const U8 *s, STRLEN len)
+/* PERL_CALLCONV bool  is_c9strict_utf8_string(const U8 *s, STRLEN len)
                        __attribute__warn_unused_result__; */
 
 /* PERL_CALLCONV bool  is_c9strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
@@ -1462,7 +1479,7 @@ PERL_STATIC_INLINE bool   S_is_c9strict_utf8_string_loclen(const U8 *s, STRLEN len
 #define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN        \
        assert(s)
 #endif
-/* PERL_CALLCONV bool  Perl_is_invariant_string(const U8* const s, STRLEN len)
+/* PERL_CALLCONV bool  is_invariant_string(const U8* const s, STRLEN len)
                        __attribute__warn_unused_result__
                        __attribute__pure__; */
 
@@ -1476,7 +1493,7 @@ PERL_STATIC_INLINE bool   S_is_safe_syscall(pTHX_ const char *pv, STRLEN len, cons
        assert(pv); assert(what); assert(op_name)
 #endif
 
-/* PERL_CALLCONV bool  Perl_is_strict_utf8_string(const U8 *s, STRLEN len)
+/* PERL_CALLCONV bool  is_strict_utf8_string(const U8 *s, STRLEN len)
                        __attribute__warn_unused_result__; */
 
 /* PERL_CALLCONV bool  is_strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
@@ -1848,7 +1865,7 @@ PERL_CALLCONV bool        Perl_is_utf8_space(pTHX_ const U8 *p)
        assert(p)
 #endif
 
-/* PERL_CALLCONV bool  Perl_is_utf8_string(const U8 *s, STRLEN len)
+/* PERL_CALLCONV bool  is_utf8_string(const U8 *s, STRLEN len)
                        __attribute__warn_unused_result__; */
 
 #ifndef PERL_NO_INLINE_FUNCTIONS
@@ -2270,6 +2287,11 @@ PERL_CALLCONV Pid_t      Perl_my_fork(void);
 PERL_CALLCONV I32      Perl_my_lstat(pTHX);
 #endif
 PERL_CALLCONV I32      Perl_my_lstat_flags(pTHX_ const U32 flags);
+PERL_CALLCONV int      Perl_my_mkostemp_cloexec(char *templte, int flags)
+                       __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_MY_MKOSTEMP_CLOEXEC   \
+       assert(templte)
+
 PERL_CALLCONV int      Perl_my_mkstemp_cloexec(char *templte)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_MY_MKSTEMP_CLOEXEC    \
@@ -2295,6 +2317,11 @@ PERL_CALLCONV char *     Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, i
 #define PERL_ARGS_ASSERT_MY_STRFTIME   \
        assert(fmt)
 
+PERL_CALLCONV NV       Perl_my_strtod(const char * const s, char ** e)
+                       __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_MY_STRTOD     \
+       assert(s)
+
 PERL_CALLCONV void     Perl_my_unexec(pTHX);
 PERL_CALLCONV int      Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap);
 #define PERL_ARGS_ASSERT_MY_VSNPRINTF  \
@@ -2530,7 +2557,7 @@ PERL_CALLCONV SV* Perl_newSVsv(pTHX_ SV *const old)
 PERL_CALLCONV SV*      Perl_newSVsv_flags(pTHX_ SV *const old, I32 flags)
                        __attribute__warn_unused_result__;
 
-/* PERL_CALLCONV SV*   Perl_newSVsv_nomg(pTHX_ SV *const old)
+/* PERL_CALLCONV SV*   newSVsv_nomg(pTHX_ SV *const old)
                        __attribute__warn_unused_result__; */
 
 PERL_CALLCONV SV*      Perl_newSVuv(pTHX_ const UV u)
@@ -2576,6 +2603,12 @@ PERL_CALLCONV STRLEN *   Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const ch
 PERL_CALLCONV PerlIO*  Perl_nextargv(pTHX_ GV* gv, bool nomagicopen);
 #define PERL_ARGS_ASSERT_NEXTARGV      \
        assert(gv)
+PERL_CALLCONV char*    Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
+                       __attribute__warn_unused_result__
+                       __attribute__pure__;
+#define PERL_ARGS_ASSERT_NINSTR        \
+       assert(big); assert(bigend); assert(little); assert(lend)
+
 PERL_CALLCONV_NO_RET void      Perl_noperl_die(const char* pat, ...)
                        __attribute__noreturn__
                        __attribute__format__(__printf__,1,2);
@@ -2713,6 +2746,7 @@ PERL_CALLCONV OP* Perl_parse_fullstmt(pTHX_ U32 flags);
 PERL_CALLCONV SV*      Perl_parse_label(pTHX_ U32 flags);
 PERL_CALLCONV OP*      Perl_parse_listexpr(pTHX_ U32 flags);
 PERL_CALLCONV OP*      Perl_parse_stmtseq(pTHX_ U32 flags);
+PERL_CALLCONV OP*      Perl_parse_subsignature(pTHX_ U32 flags);
 PERL_CALLCONV OP*      Perl_parse_termexpr(pTHX_ U32 flags);
 PERL_CALLCONV U32      Perl_parse_unicode_opts(pTHX_ const char **popt);
 #define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS    \
@@ -3009,25 +3043,31 @@ PERL_CALLCONV void      Perl_save_iv(pTHX_ IV *ivp);
 #define PERL_ARGS_ASSERT_SAVE_IV       \
        assert(ivp)
 #ifndef NO_MATHOMS
-PERL_CALLCONV void     Perl_save_list(pTHX_ SV** sarg, I32 maxsarg);
+PERL_CALLCONV void     Perl_save_list(pTHX_ SV** sarg, I32 maxsarg)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SAVE_LIST     \
        assert(sarg)
 #endif
+
 #ifndef NO_MATHOMS
-PERL_CALLCONV void     Perl_save_long(pTHX_ long* longp);
+PERL_CALLCONV void     Perl_save_long(pTHX_ long* longp)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SAVE_LONG     \
        assert(longp)
 #endif
+
 #ifndef NO_MATHOMS
 PERL_CALLCONV void     Perl_save_mortalizesv(pTHX_ SV* sv);
 #define PERL_ARGS_ASSERT_SAVE_MORTALIZESV      \
        assert(sv)
 #endif
 #ifndef NO_MATHOMS
-PERL_CALLCONV void     Perl_save_nogv(pTHX_ GV* gv);
+PERL_CALLCONV void     Perl_save_nogv(pTHX_ GV* gv)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SAVE_NOGV     \
        assert(gv)
 #endif
+
 #ifndef NO_MATHOMS
 PERL_CALLCONV void     Perl_save_op(pTHX);
 #endif
@@ -3108,12 +3148,20 @@ PERL_CALLCONV char*     Perl_scan_num(pTHX_ const char* s, YYSTYPE *lvalp);
 PERL_CALLCONV NV       Perl_scan_oct(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
 #define PERL_ARGS_ASSERT_SCAN_OCT      \
        assert(start); assert(retlen)
+PERL_CALLCONV char*    Perl_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims, int re_reparse, char **delimp)
+                       __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SCAN_STR      \
+       assert(start)
+
 PERL_CALLCONV const char*      Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv);
 #define PERL_ARGS_ASSERT_SCAN_VERSION  \
        assert(s); assert(rv)
 PERL_CALLCONV char*    Perl_scan_vstring(pTHX_ const char *s, const char *const e, SV *sv);
 #define PERL_ARGS_ASSERT_SCAN_VSTRING  \
        assert(s); assert(e); assert(sv)
+PERL_CALLCONV char*    Perl_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
+#define PERL_ARGS_ASSERT_SCAN_WORD     \
+       assert(s); assert(dest); assert(slp)
 PERL_CALLCONV U32      Perl_seed(pTHX);
 PERL_CALLCONV void     Perl_set_caret_X(pTHX);
 PERL_CALLCONV void     Perl_set_context(void *t);
@@ -3132,6 +3180,11 @@ PERL_CALLCONV void       Perl_setfd_inhexec_for_sysfd(pTHX_ int fd);
 PERL_CALLCONV HEK*     Perl_share_hek(pTHX_ const char* str, SSize_t len, U32 hash);
 #define PERL_ARGS_ASSERT_SHARE_HEK     \
        assert(str)
+PERL_CALLCONV char*    Perl_skipspace_flags(pTHX_ char *s, U32 flags)
+                       __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SKIPSPACE_FLAGS       \
+       assert(s)
+
 PERL_CALLCONV void     Perl_sortsv(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp);
 #define PERL_ARGS_ASSERT_SORTSV        \
        assert(cmp)
@@ -3197,9 +3250,14 @@ PERL_CALLCONV char*      Perl_sv_2pv_nolen(pTHX_ SV* sv)
        assert(sv)
 #endif
 
+#ifndef NO_MATHOMS
 PERL_CALLCONV char*    Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN *const lp);
 #define PERL_ARGS_ASSERT_SV_2PVBYTE    \
        assert(sv)
+#endif
+PERL_CALLCONV char*    Perl_sv_2pvbyte_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_2PVBYTE_FLAGS      \
+       assert(sv)
 #ifndef NO_MATHOMS
 PERL_CALLCONV char*    Perl_sv_2pvbyte_nolen(pTHX_ SV* sv)
                        __attribute__warn_unused_result__;
@@ -3207,9 +3265,14 @@ PERL_CALLCONV char*      Perl_sv_2pvbyte_nolen(pTHX_ SV* sv)
        assert(sv)
 #endif
 
+#ifndef NO_MATHOMS
 PERL_CALLCONV char*    Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN *const lp);
 #define PERL_ARGS_ASSERT_SV_2PVUTF8    \
        assert(sv)
+#endif
+PERL_CALLCONV char*    Perl_sv_2pvutf8_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_2PVUTF8_FLAGS      \
+       assert(sv)
 #ifndef NO_MATHOMS
 PERL_CALLCONV char*    Perl_sv_2pvutf8_nolen(pTHX_ SV* sv)
                        __attribute__warn_unused_result__;
@@ -3388,10 +3451,12 @@ PERL_CALLCONV int       Perl_sv_isa(pTHX_ SV* sv, const char *const name);
        assert(name)
 PERL_CALLCONV int      Perl_sv_isobject(pTHX_ SV* sv);
 #ifndef NO_MATHOMS
-PERL_CALLCONV IV       Perl_sv_iv(pTHX_ SV* sv);
+PERL_CALLCONV IV       Perl_sv_iv(pTHX_ SV* sv)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SV_IV \
        assert(sv)
 #endif
+
 PERL_CALLCONV STRLEN   Perl_sv_len(pTHX_ SV *const sv);
 PERL_CALLCONV STRLEN   Perl_sv_len_utf8(pTHX_ SV *const sv);
 PERL_CALLCONV STRLEN   Perl_sv_len_utf8_nomg(pTHX_ SV *const sv);
@@ -3419,17 +3484,25 @@ PERL_CALLCONV SV*       Perl_sv_newmortal(pTHX)
 
 PERL_CALLCONV SV*      Perl_sv_newref(pTHX_ SV *const sv);
 #ifndef NO_MATHOMS
-PERL_CALLCONV void     Perl_sv_nolocking(pTHX_ SV *sv);
+PERL_CALLCONV void     Perl_sv_nolocking(pTHX_ SV *sv)
+                       __attribute__deprecated__;
 #endif
-PERL_CALLCONV void     Perl_sv_nosharing(pTHX_ SV *sv);
+
+PERL_CALLCONV void     Perl_sv_nosharing(pTHX_ SV *sv)
+                       __attribute__deprecated__;
+
 #ifndef NO_MATHOMS
-PERL_CALLCONV void     Perl_sv_nounlocking(pTHX_ SV *sv);
+PERL_CALLCONV void     Perl_sv_nounlocking(pTHX_ SV *sv)
+                       __attribute__deprecated__;
 #endif
+
 #ifndef NO_MATHOMS
-PERL_CALLCONV NV       Perl_sv_nv(pTHX_ SV* sv);
+PERL_CALLCONV NV       Perl_sv_nv(pTHX_ SV* sv)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SV_NV \
        assert(sv)
 #endif
+
 #ifndef PERL_NO_INLINE_FUNCTIONS
 PERL_STATIC_INLINE bool        S_sv_only_taint_gmagic(SV *sv);
 #define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC  \
@@ -3463,18 +3536,22 @@ PERL_CALLCONV char*     Perl_sv_pvbyte(pTHX_ SV *sv)
 #endif
 
 #ifndef NO_MATHOMS
-PERL_CALLCONV char*    Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp);
+PERL_CALLCONV char*    Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SV_PVBYTEN    \
        assert(sv); assert(lp)
 #endif
+
 PERL_CALLCONV char*    Perl_sv_pvbyten_force(pTHX_ SV *const sv, STRLEN *const lp);
 #define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE      \
        assert(sv)
 #ifndef NO_MATHOMS
-PERL_CALLCONV char*    Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp);
+PERL_CALLCONV char*    Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SV_PVN        \
        assert(sv); assert(lp)
 #endif
+
 #ifndef NO_MATHOMS
 PERL_CALLCONV char*    Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp);
 #define PERL_ARGS_ASSERT_SV_PVN_FORCE  \
@@ -3484,10 +3561,12 @@ PERL_CALLCONV char*     Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp
 #define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS    \
        assert(sv)
 #ifndef NO_MATHOMS
-PERL_CALLCONV char*    Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp);
+PERL_CALLCONV char*    Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SV_PVN_NOMG   \
        assert(sv)
 #endif
+
 #ifndef NO_MATHOMS
 PERL_CALLCONV char*    Perl_sv_pvutf8(pTHX_ SV *sv)
                        __attribute__warn_unused_result__;
@@ -3496,10 +3575,12 @@ PERL_CALLCONV char*     Perl_sv_pvutf8(pTHX_ SV *sv)
 #endif
 
 #ifndef NO_MATHOMS
-PERL_CALLCONV char*    Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp);
+PERL_CALLCONV char*    Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SV_PVUTF8N    \
        assert(sv); assert(lp)
 #endif
+
 PERL_CALLCONV char*    Perl_sv_pvutf8n_force(pTHX_ SV *const sv, STRLEN *const lp);
 #define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE      \
        assert(sv)
@@ -3566,15 +3647,19 @@ PERL_CALLCONV void      Perl_sv_setpvf_mg(pTHX_ SV *const sv, const char *const pat,
        assert(sv); assert(pat)
 
 #ifndef NO_MATHOMS
-PERL_CALLCONV void     Perl_sv_setpviv(pTHX_ SV *const sv, const IV num);
+PERL_CALLCONV void     Perl_sv_setpviv(pTHX_ SV *const sv, const IV num)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SV_SETPVIV    \
        assert(sv)
 #endif
+
 #ifndef NO_MATHOMS
-PERL_CALLCONV void     Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv);
+PERL_CALLCONV void     Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SV_SETPVIV_MG \
        assert(sv)
 #endif
+
 PERL_CALLCONV void     Perl_sv_setpvn(pTHX_ SV *const sv, const char *const ptr, const STRLEN len);
 #define PERL_ARGS_ASSERT_SV_SETPVN     \
        assert(sv)
@@ -3666,9 +3751,15 @@ PERL_CALLCONV void       Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
 PERL_CALLCONV bool     Perl_sv_utf8_decode(pTHX_ SV *const sv);
 #define PERL_ARGS_ASSERT_SV_UTF8_DECODE        \
        assert(sv)
+#ifndef NO_MATHOMS
 PERL_CALLCONV bool     Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok);
 #define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE     \
        assert(sv)
+#endif
+PERL_CALLCONV bool     Perl_sv_utf8_downgrade_flags(pTHX_ SV *const sv, const bool fail_ok, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_FLAGS       \
+       assert(sv)
+/* PERL_CALLCONV bool  sv_utf8_downgrade_nomg(pTHX_ SV *const sv, const bool fail_ok); */
 PERL_CALLCONV void     Perl_sv_utf8_encode(pTHX_ SV *const sv);
 #define PERL_ARGS_ASSERT_SV_UTF8_ENCODE        \
        assert(sv)
@@ -3677,16 +3768,18 @@ PERL_CALLCONV STRLEN    Perl_sv_utf8_upgrade(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE       \
        assert(sv)
 #endif
-/* PERL_CALLCONV STRLEN        Perl_sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags); */
+/* PERL_CALLCONV STRLEN        sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags); */
 PERL_CALLCONV STRLEN   Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra);
 #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW    \
        assert(sv)
 /* PERL_CALLCONV STRLEN        sv_utf8_upgrade_nomg(pTHX_ SV *sv); */
 #ifndef NO_MATHOMS
-PERL_CALLCONV UV       Perl_sv_uv(pTHX_ SV* sv);
+PERL_CALLCONV UV       Perl_sv_uv(pTHX_ SV* sv)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_SV_UV \
        assert(sv)
 #endif
+
 PERL_CALLCONV void     Perl_sv_vcatpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args);
 #define PERL_ARGS_ASSERT_SV_VCATPVF    \
        assert(sv); assert(pat)
@@ -3794,10 +3887,12 @@ PERL_CALLCONV UV        Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp)
 PERL_CALLCONV bool     Perl_try_amagic_bin(pTHX_ int method, int flags);
 PERL_CALLCONV bool     Perl_try_amagic_un(pTHX_ int method, int flags);
 #ifndef NO_MATHOMS
-PERL_CALLCONV SSize_t  Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags);
+PERL_CALLCONV SSize_t  Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_UNPACK_STR    \
        assert(pat); assert(patend); assert(s); assert(strend)
 #endif
+
 PERL_CALLCONV SSize_t  Perl_unpackstring(pTHX_ const char *pat, const char *patend, const char *s, const char *strend, U32 flags);
 #define PERL_ARGS_ASSERT_UNPACKSTRING  \
        assert(pat); assert(patend); assert(s); assert(strend)
@@ -4045,14 +4140,6 @@ STATIC int       S_sv_2iuv_non_preserve(pTHX_ SV *const sv);
 #    endif
 #  endif
 #endif
-#if !(defined(HAS_MEMMEM))
-PERL_CALLCONV char*    Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
-                       __attribute__warn_unused_result__
-                       __attribute__pure__;
-#define PERL_ARGS_ASSERT_NINSTR        \
-       assert(big); assert(bigend); assert(little); assert(lend)
-
-#endif
 #if !(defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H))
 PERL_CALLCONV const char*      Perl_langinfo(const int item);
 #endif
@@ -4434,9 +4521,11 @@ PERL_CALLCONV int        Perl_re_indentf(pTHX_ const char *fmt, U32 depth, ...);
        assert(fmt)
 STATIC void    S_regdump_extflags(pTHX_ const char *lead, const U32 flags);
 STATIC void    S_regdump_intflags(pTHX_ const char *lead, const U32 flags);
-STATIC bool    S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, const regnode_offset val, U32 depth);
+STATIC bool    S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, const regnode_offset val, U32 depth)
+                       __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_REGTAIL_STUDY \
        assert(pRExC_state); assert(p); assert(val)
+
 #  endif
 #  if defined(PERL_IN_REGEXEC_C)
 STATIC void    S_debug_start_match(pTHX_ const REGEXP *prog, const bool do_utf8, const char *start, const char *end, const char *blurb);
@@ -4477,14 +4566,6 @@ PERL_CALLCONV void       Perl_dump_sv_child(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_DUMP_SV_CHILD \
        assert(sv)
 #endif
-#if defined(HAS_MEMMEM)
-PERL_CALLCONV char*    Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
-                       __attribute__warn_unused_result__
-                       __attribute__pure__;
-#define PERL_ARGS_ASSERT_NINSTR        \
-       assert(big); assert(bigend); assert(little); assert(lend)
-
-#endif
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 PERL_CALLCONV I32      Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp);
 #define PERL_ARGS_ASSERT_DO_IPCCTL     \
@@ -4689,6 +4770,7 @@ PERL_CALLCONV char*       Perl_form_nocontext(const char* pat, ...)
 
 #ifndef NO_MATHOMS
 PERL_CALLCONV int      Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
+                       __attribute__deprecated__
                        __attribute__format__(__printf__,2,3);
 #define PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT     \
        assert(stream); assert(format)
@@ -4709,6 +4791,7 @@ PERL_CALLCONV SV* Perl_newSVpvf_nocontext(const char *const pat, ...)
 
 #ifndef NO_MATHOMS
 PERL_CALLCONV int      Perl_printf_nocontext(const char *format, ...)
+                       __attribute__deprecated__
                        __attribute__format__(__printf__,1,2);
 #define PERL_ARGS_ASSERT_PRINTF_NOCONTEXT      \
        assert(format)
@@ -5042,7 +5125,7 @@ STATIC OP*        S_force_list(pTHX_ OP* arg, bool nullit);
 STATIC void    S_forget_pmop(pTHX_ PMOP *const o);
 #define PERL_ARGS_ASSERT_FORGET_PMOP   \
        assert(o)
-STATIC OP*     S_gen_constant_list(pTHX_ OP* o);
+STATIC void    S_gen_constant_list(pTHX_ OP* o);
 STATIC void    S_inplace_aassign(pTHX_ OP* o);
 #define PERL_ARGS_ASSERT_INPLACE_AASSIGN       \
        assert(o)
@@ -5206,6 +5289,13 @@ STATIC SV*       S_refto(pTHX_ SV* sv)
 
 #endif
 #if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE bool        S_lossless_NV_to_IV(const NV nv, IV * ivp)
+                       __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_LOSSLESS_NV_TO_IV     \
+       assert(ivp)
+#endif
+
 PERL_CALLCONV GV*      Perl_softref2xv(pTHX_ SV *const sv, const char *const what, const svtype type, SV ***spp)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SOFTREF2XV    \
@@ -5457,7 +5547,7 @@ STATIC int        S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state, const char*
 STATIC regnode_offset  S_handle_regex_sets(pTHX_ RExC_state_t *pRExC_state, SV ** return_invlist, I32 *flagp, U32 depth, char * const oregcomp_parse);
 #define PERL_ARGS_ASSERT_HANDLE_REGEX_SETS     \
        assert(pRExC_state); assert(flagp); assert(oregcomp_parse)
-PERL_CALLCONV SV *     Perl_handle_user_defined_property(pTHX_ const char * name, const STRLEN name_len, const bool is_utf8, const bool to_fold, const bool runtime, SV* contents, bool *user_defined_ptr, SV * msg, const STRLEN level);
+PERL_CALLCONV SV *     Perl_handle_user_defined_property(pTHX_ const char * name, const STRLEN name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, SV* contents, bool *user_defined_ptr, SV * msg, const STRLEN level);
 #define PERL_ARGS_ASSERT_HANDLE_USER_DEFINED_PROPERTY  \
        assert(name); assert(contents); assert(user_defined_ptr); assert(msg)
 STATIC SV*     S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style)
@@ -5517,7 +5607,7 @@ STATIC void       S_output_posix_warnings(pTHX_ RExC_state_t *pRExC_state, AV* posix_w
 STATIC void    S_parse_lparen_question_flags(pTHX_ RExC_state_t *pRExC_state);
 #define PERL_ARGS_ASSERT_PARSE_LPAREN_QUESTION_FLAGS   \
        assert(pRExC_state)
-PERL_CALLCONV SV *     Perl_parse_uniprop_string(pTHX_ const char * const name, const Size_t name_len, const bool is_utf8, const bool to_fold, const bool runtime, bool * user_defined_ptr, SV * msg, const STRLEN level);
+PERL_CALLCONV SV *     Perl_parse_uniprop_string(pTHX_ const char * const name, const Size_t name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, bool * user_defined_ptr, SV * msg, const STRLEN level);
 #define PERL_ARGS_ASSERT_PARSE_UNIPROP_STRING  \
        assert(name); assert(user_defined_ptr); assert(msg)
 STATIC void    S_populate_ANYOF_from_invlist(pTHX_ regnode *node, SV** invlist_ptr);
@@ -5569,9 +5659,11 @@ STATIC regnode_offset    S_regnode_guts(pTHX_ RExC_state_t *pRExC_state, const U8 o
 STATIC regnode_offset  S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth);
 #define PERL_ARGS_ASSERT_REGPIECE      \
        assert(pRExC_state); assert(flagp)
-STATIC bool    S_regtail(pTHX_ RExC_state_t * pRExC_state, const regnode_offset p, const regnode_offset val, const U32 depth);
+STATIC bool    S_regtail(pTHX_ RExC_state_t * pRExC_state, const regnode_offset p, const regnode_offset val, const U32 depth)
+                       __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_REGTAIL       \
        assert(pRExC_state); assert(p); assert(val)
+
 STATIC void    S_scan_commit(pTHX_ const RExC_state_t *pRExC_state, struct scan_data_t *data, SSize_t *minlenp, int is_inf);
 #define PERL_ARGS_ASSERT_SCAN_COMMIT   \
        assert(pRExC_state); assert(data); assert(minlenp)
@@ -6117,11 +6209,6 @@ STATIC char*     S_scan_pat(pTHX_ char *start, I32 type)
 #define PERL_ARGS_ASSERT_SCAN_PAT      \
        assert(start)
 
-STATIC char*   S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims, int re_reparse, char **delimp)
-                       __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCAN_STR      \
-       assert(start)
-
 STATIC char*   S_scan_subst(pTHX_ char *start)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_SCAN_SUBST    \
@@ -6132,14 +6219,6 @@ STATIC char*     S_scan_trans(pTHX_ char *start)
 #define PERL_ARGS_ASSERT_SCAN_TRANS    \
        assert(start)
 
-STATIC char*   S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
-#define PERL_ARGS_ASSERT_SCAN_WORD     \
-       assert(s); assert(dest); assert(slp)
-STATIC char*   S_skipspace_flags(pTHX_ char *s, U32 flags)
-                       __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SKIPSPACE_FLAGS       \
-       assert(s)
-
 STATIC I32     S_sublex_done(pTHX)
                        __attribute__warn_unused_result__;
 
@@ -6437,10 +6516,12 @@ PERL_CALLCONV int       Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg);
 #define PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM     \
        assert(sv); assert(mg)
 #ifndef NO_MATHOMS
-PERL_CALLCONV char*    Perl_mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen);
+PERL_CALLCONV char*    Perl_mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen)
+                       __attribute__deprecated__;
 #define PERL_ARGS_ASSERT_MEM_COLLXFRM  \
        assert(input_string); assert(xlen)
 #endif
+
 #ifndef NO_MATHOMS
 PERL_CALLCONV char*    Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp);
 #define PERL_ARGS_ASSERT_SV_COLLXFRM   \