TODO: * > 3. In several cases, "perl ppport.h --copy=.new" output a new file in > which the only change was the addition of "#include "ppport.h"". In each > case, that actually wasn't necessary because the source file in question > already #included another source file which #included ppport.h itself. > Would it be possible for the analyzer to follow #include directives to > spot cases like this? Uh, well, I guess it would be possible. But I have some concerns: 1. ppport.h is already too big. :-) 2. There is code in ppport.h to actually remove an #include "ppport.h" if it appears not to be needed. If it's not needed in your included file, it might be dropped from there and moved to the other file that included the first one. This would make the logic much more complicated. 3. As ppport.h is configurable, it's not (always) a good idea to put it into a file that's included from another file. I guess I'll have to think about this a little more. Maybe I can come up with a fancy solution that doesn't increase the code size too much. * On 14/12/06, Nicholas Clark wrote: > On Thu, Dec 14, 2006 at 05:03:24AM +0100, Andreas J. Koenig wrote: > > > Params::Validate and Clone suffer from the same cold: > > The same patch will make both compile and pass tests. > I'm wondering if it might be better to totally drop SVt_PBVM and let source > code fail to compile. I don't think so. Because : 1. your redefinition of SVt_PBVM is probably what most XS modules want 2. anyway, if we remove it from the core, it might appear in Devel::PPPort :) * maybe backport bytes_from_utf8() for 5.6.0 (or even before)? * check which of the following we need to support: amagic_generation AMG_names an Argv argvgv argvoutgv basetime beginav block_type bodytarget bufend bufptr check chopset Cmd compcv compiling comppad comppad_name comppad_name_fill copline cop_seqmax cryptseen cshlen cshname curcop curinterp curpad curpm curstash curstname dbargs DBgv DBline DBsignal DBsingle DBsub DBtrace debstash debug defgv defoutgv defstash delaymagic diehook dirty doextract doswitches do_undump dowarn egid encoding endav envgv errgv error_count errors euid eval_root evalseq eval_start expect fdpid filemode firstgv fold forkprocess formfeed formtarget freq generation gensym gid hexdigit hints incgv in_eval in_my inplace lastfd last_in_gv last_lop last_lop_op lastscream laststatval laststype last_uni lex_brackets lex_brackstack lex_casemods lex_casestack lex_defer lex_dojoin lex_expect lex_formbrack lex_inpat lex_inwhat lex_op lex_repl lex_starts lex_state lex_stuff lineary linestr localizing main_cv main_root mainstack main_start markstack markstack_max markstack_ptr max_intro_pending maxo maxscream maxsysfd min_intro_pending minus_a minus_c minus_F minus_l minus_n minus_p multi_close multi_end multi_open multi_start na nexttoke nexttype nextval nice_chunk nice_chunk_size No no_aelem no_dir_func no_func no_mem nomemok no_modify no_myglob no_security no_sock_func no_symref no_usym no_wrongref nrs oldbufptr oldname oldoldbufptr op opargs op_desc op_mask op_name op_seq origalen origargc origargv origenviron origfilename osname padix padix_floor pad_reset_pending patchlevel patleave perldb perl_destruct_level pidstatus ppaddr preambleav preambled preprocess profiledata regdummy regendp regeol reginput regkind reglastparen regsize regstartp restartop rs rsfp rsfp_filters runops savestack savestack_ix savestack_max sawampersand scopestack scopestack_ix scopestack_max screamfirst screamnext secondgv signals sig_name sig_num simple sortcop sortstash splitstr stack_base stack_max stack_sp statbuf statcache statgv statname statusvalue stdingv sub_generation subline subname Sv sv_arenaroot sv_count sv_no sv_objcount sv_root sv_undef sv_yes tainted tainting timesbuf tmps_floor tmps_ix tmps_max tmps_stack tokenbuf top_env toptarget uid unsafe varies vtbl_amagic vtbl_amagicelem vtbl_arylen vtbl_bm vtbl_dbline vtbl_env vtbl_envelem vtbl_glob vtbl_isa vtbl_isaelem vtbl_mglob vtbl_pack vtbl_packelem vtbl_pos vtbl_sig vtbl_sigelem vtbl_substr vtbl_sv vtbl_taint vtbl_uvar vtbl_vec warnhook warn_nl warn_nosemi warn_reserved warn_uninit watchaddr watchok Xpv Yes * have an --env option for soak to set env variable combinations * only overwrite generated files if they actually changed * try to make parts/apicheck.pl automatically find NEED_ #defines * implement snprintf with newSVpvf for >= 5.004, which is safer? * add support for my_vsnprintf? * try to perform some core consistency checks: - check if 'd' flag in embed.fnc matches with supplied documentation - check if all public API is documented * check (during make regen?) if MAX_PERL in PPPort_pm.PL needs to be updated * see if we can implement sv_catpvf() for < 5.004 * MULTICALL ? * improve apicheck (things like utf8_mg_pos_init() are not currently checked) * more documentation, more tests * Resolve dependencies in Makefile.PL and remind of running 'make regen'