1TODO: 2 3* > 3. In several cases, "perl ppport.h --copy=.new" output a new file in 4 > which the only change was the addition of "#include "ppport.h"". In each 5 > case, that actually wasn't necessary because the source file in question 6 > already #included another source file which #included ppport.h itself. 7 > Would it be possible for the analyzer to follow #include directives to 8 > spot cases like this? 9 10 Uh, well, I guess it would be possible. But I have some concerns: 11 12 1. ppport.h is already too big. :-) 13 14 2. There is code in ppport.h to actually remove an 15 16 #include "ppport.h" 17 18 if it appears not to be needed. If it's not needed in your 19 included file, it might be dropped from there and moved to 20 the other file that included the first one. This would make 21 the logic much more complicated. 22 23 3. As ppport.h is configurable, it's not (always) a good idea 24 to put it into a file that's included from another file. 25 26 I guess I'll have to think about this a little more. Maybe I can 27 come up with a fancy solution that doesn't increase the code size 28 too much. 29 30 31* On 14/12/06, Nicholas Clark <nick@ccl4.org> wrote: 32 > On Thu, Dec 14, 2006 at 05:03:24AM +0100, Andreas J. Koenig wrote: 33 > 34 > > Params::Validate and Clone suffer from the same cold: 35 > 36 > The same patch will make both compile and pass tests. 37 > I'm wondering if it might be better to totally drop SVt_PBVM and let source 38 > code fail to compile. 39 40 I don't think so. Because : 41 1. your redefinition of SVt_PBVM is probably what most XS modules want 42 2. anyway, if we remove it from the core, it might appear in Devel::PPPort :) 43 44 45* maybe backport bytes_from_utf8() for 5.6.0 (or even before)? 46 47* check which of the following we need to support: 48 49 amagic_generation 50 AMG_names 51 an 52 Argv 53 argvgv 54 argvoutgv 55 basetime 56 beginav 57 block_type 58 bodytarget 59 bufend 60 bufptr 61 check 62 chopset 63 Cmd 64 compcv 65 compiling 66 comppad 67 comppad_name 68 comppad_name_fill 69 copline 70 cop_seqmax 71 cryptseen 72 cshlen 73 cshname 74 curcop 75 curinterp 76 curpad 77 curpm 78 curstash 79 curstname 80 dbargs 81 DBgv 82 DBline 83 DBsignal 84 DBsingle 85 DBsub 86 DBtrace 87 debstash 88 debug 89 defgv 90 defoutgv 91 defstash 92 delaymagic 93 diehook 94 dirty 95 doextract 96 doswitches 97 do_undump 98 dowarn 99 egid 100 encoding 101 endav 102 envgv 103 errgv 104 error_count 105 errors 106 euid 107 eval_root 108 evalseq 109 eval_start 110 expect 111 fdpid 112 filemode 113 firstgv 114 fold 115 forkprocess 116 formfeed 117 formtarget 118 freq 119 generation 120 gensym 121 gid 122 hexdigit 123 hints 124 incgv 125 in_eval 126 in_my 127 inplace 128 lastfd 129 last_in_gv 130 last_lop 131 last_lop_op 132 lastscream 133 laststatval 134 laststype 135 last_uni 136 lex_brackets 137 lex_brackstack 138 lex_casemods 139 lex_casestack 140 lex_defer 141 lex_dojoin 142 lex_expect 143 lex_formbrack 144 lex_inpat 145 lex_inwhat 146 lex_op 147 lex_repl 148 lex_starts 149 lex_state 150 lex_stuff 151 lineary 152 linestr 153 localizing 154 main_cv 155 main_root 156 mainstack 157 main_start 158 markstack 159 markstack_max 160 markstack_ptr 161 max_intro_pending 162 maxo 163 maxscream 164 maxsysfd 165 min_intro_pending 166 minus_a 167 minus_c 168 minus_F 169 minus_l 170 minus_n 171 minus_p 172 multi_close 173 multi_end 174 multi_open 175 multi_start 176 na 177 nexttoke 178 nexttype 179 nextval 180 nice_chunk 181 nice_chunk_size 182 No 183 no_aelem 184 no_dir_func 185 no_func 186 no_mem 187 nomemok 188 no_modify 189 no_myglob 190 no_security 191 no_sock_func 192 no_symref 193 no_usym 194 no_wrongref 195 nrs 196 oldbufptr 197 oldname 198 oldoldbufptr 199 op 200 opargs 201 op_desc 202 op_mask 203 op_name 204 op_seq 205 origalen 206 origargc 207 origargv 208 origenviron 209 origfilename 210 osname 211 padix 212 padix_floor 213 pad_reset_pending 214 patchlevel 215 patleave 216 perldb 217 perl_destruct_level 218 pidstatus 219 ppaddr 220 preambleav 221 preambled 222 preprocess 223 profiledata 224 regdummy 225 regendp 226 regeol 227 reginput 228 regkind 229 reglastparen 230 regsize 231 regstartp 232 restartop 233 rs 234 rsfp 235 rsfp_filters 236 runops 237 savestack 238 savestack_ix 239 savestack_max 240 sawampersand 241 scopestack 242 scopestack_ix 243 scopestack_max 244 screamfirst 245 screamnext 246 secondgv 247 signals 248 sig_name 249 sig_num 250 simple 251 sortcop 252 sortstash 253 splitstr 254 stack_base 255 stack_max 256 stack_sp 257 statbuf 258 statcache 259 statgv 260 statname 261 statusvalue 262 stdingv 263 sub_generation 264 subline 265 subname 266 Sv 267 sv_arenaroot 268 sv_count 269 sv_no 270 sv_objcount 271 sv_root 272 sv_undef 273 sv_yes 274 tainted 275 tainting 276 timesbuf 277 tmps_floor 278 tmps_ix 279 tmps_max 280 tmps_stack 281 tokenbuf 282 top_env 283 toptarget 284 uid 285 unsafe 286 varies 287 vtbl_amagic 288 vtbl_amagicelem 289 vtbl_arylen 290 vtbl_bm 291 vtbl_dbline 292 vtbl_env 293 vtbl_envelem 294 vtbl_glob 295 vtbl_isa 296 vtbl_isaelem 297 vtbl_mglob 298 vtbl_pack 299 vtbl_packelem 300 vtbl_pos 301 vtbl_sig 302 vtbl_sigelem 303 vtbl_substr 304 vtbl_sv 305 vtbl_taint 306 vtbl_uvar 307 vtbl_vec 308 warnhook 309 warn_nl 310 warn_nosemi 311 warn_reserved 312 warn_uninit 313 watchaddr 314 watchok 315 Yes 316 317* have an --env option for soak to set env variable combinations 318 319* only overwrite generated files if they actually changed 320 321* try to make parts/apicheck.pl automatically find NEED_ #defines 322 323* add support for my_vsnprintf? 324 325* try to perform some core consistency checks: 326 327 - check if 'd' flag in embed.fnc matches with 328 supplied documentation 329 330 - check if all public API is documented 331 332* check (during make regen?) if MAX_PERL in PPPort_pm.PL 333 needs to be updated 334 335* see if we can implement sv_catpvf() for < 5.004 336 337* MULTICALL ? 338 339* improve apicheck (things like utf8_mg_pos_init() are 340 not currently checked) 341 342* more documentation, more tests 343 344* Resolve dependencies in Makefile.PL and remind of 345 running 'make regen' 346