develooper Front page | perl.perl5.porters | Postings from July 2019

Help identify core-only functions marked as experimental

Thread Next
From:
Karl Williamson
Date:
July 31, 2019 22:47
Subject:
Help identify core-only functions marked as experimental
Message ID:
88f495a6-a7ec-8e70-20ba-385ccc7a6407@khwilliamson.com
Some years ago I introduced a kludge in embed.fnc to mark a function as 
experimental to keep it out of perlapi, so that it was less likely to be 
used by people outside core.

I now realize it would have been better to have a new flag to indicate 
that the item was intended only for core use.  (ISTR sprout realized 
that some time ago, but after the change had already been made)

I am now in the process of making this new flag.  I have found many 
functions that I'm confident were marked experimental only for the 
purposes I mentioned above, but there are another 150 that I'm unsure 
of.  Please examine the list below and let me know your take on them. 
You can use #irc to avoid the email overhead if you wish.

I think that after this is done, anything that is still marked as 
experimental and part of the API should go in perlapi.  This would catch 
the new parse_subsignature() function properly, as I believe it's 
designed for XS writers, but has to be marked as experimental.

Apx	|void	|apply_attrs_string|NN const char *stashpv|NN CV *cv|NN const 
char *attrstr|STRLEN len
Apdoex	|void	|av_create_and_push|NN AV **const avp|NN SV *const val
Apdoex	|SV**	|av_create_and_unshift_one|NN AV **const avp|NN SV *const val
Aodxp	|void	|blockhook_register |NN BHK *hk
px	|void	|create_eval_scope|NULLOK OP *retop|U32 flags
ExXp	|void	|cv_ckproto_len_flags	|NN const CV* cv|NULLOK const GV* gv\
px	|void	|delete_eval_scope
xp	|bool	|do_open_raw	|NN GV *gv|NN const char *oname|STRLEN len \
xp	|bool	|do_open6	|NN GV *gv|NN const char *oname|STRLEN len \
Apx	|GV*	|gv_fetchmethod_sv_flags|NN HV* stash|NN SV* namesv|U32 flags
Apx	|GV*	|gv_fetchmethod_pv_flags|NN HV* stash|NN const char* name \
Apx	|GV*	|gv_fetchmethod_pvn_flags|NN HV* stash|NN const char* name \
pxoe	|GP *	|newGP		|NN GV *const gv
Xxpd	|void	|gv_try_downgrade|NN GV* gv
ApxdR	|HE*	|hv_iternext_flags|NN HV *hv|I32 flags
Apbmx	|SV**	|hv_store_flags	|NULLOK HV *hv|NULLOK const char *key \
AbDxpR	|bool	|is_utf8_mark	|NN const U8 *p
Axpd	|void	|lex_start	|NULLOK SV* line|NULLOK PerlIO *rsfp|U32 flags
Axpd	|bool	|lex_bufutf8
Axpd	|char*	|lex_grow_linestr|STRLEN len
Axpd	|void	|lex_stuff_pvn	|NN const char* pv|STRLEN len|U32 flags
Axpd	|void	|lex_stuff_pv	|NN const char* pv|U32 flags
Axpd	|void	|lex_stuff_sv	|NN SV* sv|U32 flags
Axpd	|void	|lex_unstuff	|NN char* ptr
Axpd	|void	|lex_read_to	|NN char* ptr
Axpd	|void	|lex_discard_to	|NN char* ptr
Axpd	|bool	|lex_next_chunk	|U32 flags
Axpd	|I32	|lex_peek_unichar|U32 flags
Axpd	|I32	|lex_read_unichar|U32 flags
Axpd	|void	|lex_read_space	|U32 flags
Axpd	|OP*	|parse_arithexpr|U32 flags
Axpd	|OP*	|parse_termexpr	|U32 flags
Axpd	|OP*	|parse_listexpr	|U32 flags
Axpd	|OP*	|parse_fullexpr	|U32 flags
Axpd	|OP*	|parse_block	|U32 flags
Axpd	|OP*	|parse_barestmt	|U32 flags
Axpd	|SV*	|parse_label	|U32 flags
Axpd	|OP*	|parse_fullstmt	|U32 flags
Axpd	|OP*	|parse_stmtseq	|U32 flags
Axpd	|OP*	|parse_subsignature|U32 flags
Axmd	|OP*	|op_lvalue	|NULLOK OP* o|I32 type
px	|LOGOP*	|alloc_LOGOP	|I32 type|NULLOK OP *first|NULLOK OP *other
Apx	|CV *	|newXS_flags	|NULLOK const char *name|NN XSUBADDR_t subaddr\
AxpdRT	|PADNAME *|newPADNAMEouter|NN PADNAME *outer
AxpdRT	|PADNAME *|newPADNAMEpvn|NN const char *s|STRLEN len
AxpdRT	|PADNAMELIST *|newPADNAMELIST|size_t max
Axpd	|void	|wrap_keyword_plugin|NN Perl_keyword_plugin_t new_plugin|NN 
Perl_keyword_plugin_t *old_plugin_p
xp	|OP*	|op_unscope	|NULLOK OP* o
Adxp	|PADOFFSET|alloccopstash|NN HV *hv
dopx	|PerlIO*|start_glob	|NN SV *tmpglob|NN IO *io
ApxT	|void	|thread_locale_init
ApxT	|void	|thread_locale_term
Axpo	|void	|savetmps
Axpd	|OP*	|op_scope	|NULLOK OP* o
pxd	|SV*	|sv_2num	|NN SV *const sv
poxX	|void	|sv_free2	|NN SV *const sv|const U32 refcnt
Apxd	|U8*	|utf8_to_bytes	|NN U8 *s|NN STRLEN *lenp
AMxdp	|U8*	|bytes_from_utf8|NN const U8 *s|NN STRLEN *lenp|NN bool *is_utf8p
AxTp	|U8*	|bytes_from_utf8_loc|NN const U8 *s			    \
Apxd	|U8*	|bytes_to_utf8	|NN const U8 *s|NN STRLEN *lenp
AxTdi	|UV	|utf8n_to_uvchr_msgs|NN const U8 *s			    \
Admx	|U8*	|uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** 
msgs
ATpxd	|SV*	|sv_get_backrefs|NN SV *const sv
Sx	|SV*	|hv_delete_common|NULLOK HV *hv|NULLOK SV *keysv \
Sx	|void	|clear_placeholders	|NN HV *hv|U32 items
poex	|OP *	|op_refcnt_inc	|NULLOK OP *o
poex	|PADOFFSET	|op_refcnt_dec	|NN OP *o
pox	|void	|sv_kill_backrefs	|NN SV *const sv|NULLOK AV *const av
EXpxR	|char*	|scan_str	|NN char *start|int keep_quoted \
EXpx	|char*	|scan_word	|NN char *s|NN char *dest|STRLEN destlen \
EXpxR	|char*	|skipspace_flags|NN char *s|U32 flags
EdXxp	|bool	|validate_proto	|NN SV *name|NULLOK SV *proto|bool warn \
Axpd	|PADOFFSET|pad_alloc	|I32 optype|U32 tmptype
Axpd	|void	|pad_tidy	|padtidy_type type
AxpdRT	|PADNAME *|padnamelist_fetch|NN PADNAMELIST *pnl|SSize_t key
Axpd	|PADNAME **|padnamelist_store|NN PADNAMELIST *pnl|SSize_t key \
ApdRx	|SV*	|hv_bucket_ratio|NN HV *hv
pox	|AV**	|hv_backreferences_p	|NN HV *hv
pox	|void	|hv_kill_backrefs	|NN HV *hv
Sxd	|SV*	|find_uninit_var|NULLOK const OP *const obase \
XEopxR	|STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \
AxdToP	|int	|Perl_signbit	|NV f
XExop	|void	|emulate_cop_io	|NN const COP *const c|NN SV *const sv
XExop	|REGEXP *|get_re_arg|NULLOK SV *sv
AMpxd	|const char *|cop_fetch_label|NN COP *const cop 
dAmxz|void|BhkDISABLE|BHK *hk|which
dAmxz|void|BhkENABLE|BHK *hk|which
dmxz|void *|BhkENTRY|BHK *hk|which
dAmxz|void|BhkENTRY_set|BHK *hk|which|void *ptr
dmx|U32|BhkFLAGS|BHK *hk
dmxz|void|CALL_BLOCK_HOOKS|which|arg
dAmx|HV *|cophh_2hv|const COPHH *cophh|U32 flags
dAmx|COPHH *|cophh_copy|COPHH *cophh
dAmx|COPHH *|cophh_delete_pv|const COPHH *cophh|const char *key|U32 
hash|U32 flags
dAmx|COPHH *|cophh_delete_pvn|COPHH *cophh|const char *keypv|STRLEN 
keylen|U32 hash|U32 flags
dAmx|COPHH *|cophh_delete_pvs|const COPHH *cophh|const char * const 
key|U32 flags
dAmx|COPHH *|cophh_delete_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags
dAmx|SV *|cophh_fetch_pv|const COPHH *cophh|const char *key|U32 hash|U32 
flags
dAmx|SV *|cophh_fetch_pvn|const COPHH *cophh|const char *keypv|STRLEN 
keylen|U32 hash|U32 flags
dAmx|SV *|cophh_fetch_pvs|const COPHH *cophh|const char * const key|U32 
flags
dAmx|SV *|cophh_fetch_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags
dAmx|void|cophh_free|COPHH *cophh
dAmx|COPHH *|cophh_new_empty
dAmx|COPHH *|cophh_store_pv|const COPHH *cophh|const char *key|U32 
hash|SV *value|U32 flags
dAmx|COPHH *|cophh_store_pvn|COPHH *cophh|const char *keypv|STRLEN 
keylen|U32 hash|SV *value|U32 flags
dAmx|COPHH *|cophh_store_pvs|const COPHH *cophh|const char * const 
key|SV *value|U32 flags
dAmx|COPHH *|cophh_store_sv|const COPHH *cophh|SV *key|U32 hash|SV 
*value|U32 flags
dAmx|PADLIST *|CvPADLIST|CV *cv
dAmx|void|lex_stuff_pvs|const char * const pv|U32 flags
dAmx|SV*|newSVpadname|PADNAME *pn
dAmx|SV **|PadARRAY|PAD * pad
dAmx|PAD **|PadlistARRAY|PADLIST * padlist
dAmx|SSize_t|PadlistMAX|PADLIST * padlist
dAmx|PADNAME **|PadlistNAMESARRAY|PADLIST * padlist
dAmx|SSize_t|PadlistNAMESMAX|PADLIST * padlist
dAmx|PADNAMELIST *|PadlistNAMES|PADLIST * padlist
dAmx|U32|PadlistREFCNT|PADLIST * padlist
dAmx|SSize_t|PadMAX|PAD * pad
dAmx|STRLEN|PadnameLEN|PADNAME * pn
dAmx|PADNAME **|PadnamelistARRAY|PADNAMELIST * pnl
dAmx|SSize_t|PadnamelistMAX|PADNAMELIST * pnl
dAmx|void|PadnamelistREFCNT_dec|PADNAMELIST * pnl
dAmx|SSize_t|PadnamelistREFCNT|PADNAMELIST * pnl
dAmx|char *|PadnamePV|PADNAME * pn
dAmx|void|PadnameREFCNT_dec|PADNAME * pn
dAmx|SSize_t|PadnameREFCNT|PADNAME * pn
dAmx|SV *|PadnameSV|PADNAME * pn
dAmx|bool|PadnameUTF8|PADNAME * pn
dAmnxU|PAD *|PL_comppad
dAmnxU|PADNAMELIST *|PL_comppad_name
dAmnxU|SV **|PL_curpad
dAmnUx|Perl_keyword_plugin_t|PL_keyword_plugin

AMpxd	|void|cop_store_label \
Apx	|void	|leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \
Aix	|PERL_CONTEXT *	|cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix
Aix	|void	|cx_popblock|NN PERL_CONTEXT *cx
Aix	|void	|cx_topblock|NN PERL_CONTEXT *cx
Aix	|void	|cx_pushsub      |NN PERL_CONTEXT *cx|NN CV *cv \
Aix	|void	|cx_popsub_common|NN PERL_CONTEXT *cx
Aix	|void	|cx_popsub_args  |NN PERL_CONTEXT *cx
Aix	|void	|cx_popsub       |NN PERL_CONTEXT *cx
Aix	|void	|cx_pushformat   |NN PERL_CONTEXT *cx|NN CV *cv \
Aix	|void	|cx_popformat    |NN PERL_CONTEXT *cx
Aix	|void	|cx_pusheval     |NN PERL_CONTEXT *cx \
Aix	|void	|cx_popeval      |NN PERL_CONTEXT *cx
Aix	|void	|cx_pushloop_plain|NN PERL_CONTEXT *cx
Aix	|void	|cx_pushloop_for |NN PERL_CONTEXT *cx \
Aix	|void	|cx_poploop      |NN PERL_CONTEXT *cx
Aix	|void	|cx_pushwhen     |NN PERL_CONTEXT *cx
Aix	|void	|cx_popwhen      |NN PERL_CONTEXT *cx
Aix	|void	|cx_pushgiven    |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv
Aix	|void	|cx_popgiven     |NN PERL_CONTEXT *cx

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About