forked from rurban/perl-compiler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changes
1998 lines (1728 loc) · 86.2 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
-*- change-log -*-
Started on CPAN with B-C-1.04_12
The Perl compiler was in CORE from alpha4 until Perl 5.9.4
and worked quite fine with Perl 5.6 and 5.8
1.43 2012-11-xx rurban
Improved package detection: methods, functions, require, new and bless.
Bigger compile sizes with -O0,-O1,-O2: Store all subs of dependent packages.
Added 5.16 support
* C: issue95 and t/perldoc.t: parent @File::Spec::ISA was not saved.
Detect typed lexicals objects to reliably find method packages.
Sanified package_pv default a bit when a method padsv was not
found. Check for method_named as last argument of methods.
Added check_entersub, check_bless, check_require - bless and new caching of
packages for methods
Recursively store all directly unused package subs and packages in a new 2nd pass,
not only the needed, to be able to call computed methods. Disable with -fno-walkall.
Delete packages which appear to be nowhere used automatically with -fdelete-pkg or -O2.
try_isa(): Desperate method finding attempt by trying all seen packages, which
slows down the compiler a lot. Added internal ISA Caching.
Special case Carp calling threads and B methods.
Avoid saving not undefined CVs if possible. with Autoloading, i.e. POSIX
the first is always saved as empty CV.
Fix -u<module> without file extension.
Fixed wrong boot_ arg for the xs version check with --staticxs
Fixed refinition warnings of XS CONSTSUB. Ignore them as they are
loaded later.
With hek do not drop FAKE, only for const pv.
Broke __DATA__ (15), 91, 95, perldoc, Test::NoWarnings
Detect and skip GV->save in defined (issue 96).
Threaded use the right CV PADLIST for SVOP's, proper curcv for new and
bless detection.
Add $dlmodule::VERSION as 2nd arg to boot_$dlmodule resp. $dlmodule::bootstrap
to get rid of the pesky Invalid version format error in xs_version_bootcheck
if the $VERSION had already version magic attached. (no testcase, hard to repro)
perl 5.16.0 shipped a slightly broken B without cop_stashlen. As workaround
we do not support utf8 stashes nor null bytes in stashes on 5.16.0 threaded.
5.17 thr introduced a yet unsupported cop->stashoff (alloccopstash not exported).
Fixed Null COP storage for 5.16 and 5.17
amagic_generation was removed with 5.17
Fixed $$ ($PID) to be dynamic, issue 108. Thanks to flexvault for reporting this.
Fixed double precision to 16 digits. The nbody shootout test passes now.
Fixed refcounts of *ENV, issue 111.
* CC (1.13): added check_entersub, check_bless - bless and new caching.
Use the B::C integer and double precision logic (ivx, nvx).
Fixed double precision to 16 digits. The nbody shootout is now 2x faster than perl
Added optimizations: -fno-magic, -fno-autovivify
Detect "no autovivification;" pragma
New -fno-taint, deprecate -fomit_taint
* Bytecode (1.14): fixed require and op_first, issue 97
Fixed regex_pad offset in threaded perls >= 5.11, issue 68.
new type B::PAD isa B::AV (PADLIST for 5.17.5),
new bytecodes newpadlx, padl_name, padl_sym (PADLIST support since 5.17.5)
* Assembler (1.11): allow "newpadlx 0"
* t/perldoc.t: perlcc fails with 5.8 because Cwd disturbs the
fragile method package finder for File::Spec. Use cc_harness.
* Stash (1.03): fix compilation for 5.8.8 and below: gv_fetchsv missing
* perlcc (2.14): new option --dryrun, -v5 does not -Dsp,-v.
new option -f passthru to C and CC
* perlcc (2.15): fixed default --spawn: use waitpid which was broken for parallel builds.
fixed --no-spawn
fixed warning Prototype mismatch: sub main::gettimeofday: none vs () at perlcc line 261
1.42 2012-02-01 rurban
stable up to 5.14
* C: Improved finding methods in parent classes, visible by the
warning: <method> not found with -Ds, try_isa now
Save @ISA of those child classes.
Re-implement and simplify my_share_hek, now in terms of share_hek.
PL_strtab hack gone. This fixed the shared_hek destruction
problems.
Turn off CvDYNFILE needed since 5.15.4, use static CvFILE. (DateTime)
Changed option -DW to -Dw ("walk") for consistency
* t/e_perlcc.t: perlcc -stash does not hang anymore, renabled stash section
* Stash (1.02): '-xs' does not load B anymore.
Now in seperate directory Stash
* Stash/Stash.xs: new with CvIsXSUB() to get rid of B, polluting the stashes.
* Stash/Makefile.PL: new
* Bytecode (1.13): support shared strings/hek (42,43)
* ByteLoader (0.09), ByteLoader/bytecode.h, bytecode.pl: support shared strings/hek (42,43),
added xpvshared
* t/issue95.t: added, isa methods not found
1.41 2012-01-30 rurban
* t/modules.t: Fixed syntax error
1.40 2012-01-30 rurban
static PerlIO Layers (e.g. __DATA__)
* C: fixed deferred %INC, %INC is now stored and cleaned up at the end.
Improved __DATA__ handle as PerlIO layer, PerlIO::scalar now
loaded static (test 15).
Defer eval section after dl_init (e.g. for PerlIO::scalar) (test 15)
Check for XSLoader now at the very end (test 27)
Fixed MUTABLE_CV for 5.10.0
Improved 5.8 method lifting for not-found methods a bit (5.8. perldoc.t)
* Bytecode: fixed test 22
Cannot locate object method "fileno" via package "IO::File"
* Makefile.PL: readonly $lib fix for MSWin32
* t/testc.sh: silence ulimit -m warnings + errors
1.39 2012-01-25 rurban
* C: improved eval AUTOLOAD, avoid some POSIX and Storable .al compile-time
side-effects such as creating files and dirs. First try loading
.al files, only then eval the dangerous AUTOLOAD.
* Makefile.PL: typo in -fav-init2 independent_comalloc detection.
Added LICENSE key, META and the files were not enough to please pause.
1.38 2012-01-24 rurban
* t/issue93.t: fixed syntax error
1.37 2012-01-24 rurban
Enabled copy-on-grow strings >= 5.10.
Save %main:: stashes w/o -fno-stash. Switched to git, added github mirror
Fixed hashes and share_hek, when mixed compiled and load-time for >5.8.
Stability: This release is the first which passes almost all tests and
is used in production with --staticxs -O3, but copy-on-grow hek's and
further logical improvements (deferred %INC cleanup) fail so far, so it's
still considered unstable.
* C: save stashes optionally with -fstash, but only values which are also
stashes to avoid a second walker besides savecv, and thus do not
walk into unneeded territory; B::STASHGV (46, issue 79)
New -fno-stash with -O2 to omit stashes which are rarely needed.
Fixed vulnerability to oCERT-2011-003 style DOS attacks. Do not
pre-compute hashes for hv_store(), use fresh random hash seed.
But shared_hek() has a limited API which does not allow this.
UNIVERSAL methods were not correctly stored, which led to method not
found at run-time errors.
New debug option -Dr "runtime" to add debug output to the .c code (as in CC)
New option -Upackage to skip package, mark_skip()
Re-implemented sharepvn via share_hek() and SvLEN=0 (issue 71),
Special FAKE+READONLY handling: LEN = 0 if pv_copy_on_grow or shared_hek.
Fixed !SvIsCOW_shared_hash + FAKE+READONLY conflict (test 13, issue 82).
Shared COW hashkeys which are optimized to static const strings
may not be marked as IsCOW (remove SVf_FAKE).
Re-implemented CORE share_hek with hash=0
Otherwise shared HEK's (post-5.10) come up with duplicate entries
for the same keys; one compile-time created and one run-time created with
a different random hash seed. E.g. observed by such warnings
"Prototype mismatch: sub bytes::length (_) vs (_)"
Added Internals::hv_clear_placeholders XS name exception, similar
to version:: (issue 83)
Store CV prototypes, issue 81 and issue 84 for empty () vs NULL prototypes.
Fixed 5.15.2 hang at hfree_next_entry (issue 78)
Defer writing of READONLY hash keys since 5.15 (issue 88)
Enable -fcog copy-on-grow with static strings for >= 5.10
Improved Errno vs. *main::! and Tie::Hash::NamedCapture vs
*main::+ / - logic (issue 90)
Updated version XS methods, default to noop for (...
Strip version object overload from XS packages (issue 91), XS needs plain PVs
Do not initialize CONSTSUB XS methods twice, boot does it for us
Pass proper cv to XS boot_$name, fixes boot of
Tie::Hash::NamedCapture (issue 86)
Fixed share_hek strings with -O1 (test 13)
Fixed bootstrapping the XS/core part of attributes,
thereby fixed threads tests 41-43.
Fixed most 5.8.[45] problems by ignoring aelemfast SPECIAL pads.
Fixed magic -> PTR when SV (>5.6)
Moved -fsave-sig-hash from -O3 to -O0. You need -fno-save-sig-hash
to disable it.
Removed -fno-stash from -O2, -fno-stash is now the default. You
need -fstash to add stashes. It caused not understood problems.
Fixed saving %SIG signals and more -2 SV magic (issue 92)
Adjusted IO logic, was erronously skipped (issue 59)
inc_cleanup: save only those %INC keys which are stored.
Save ext/mro only if the ext mro methods were loaded, and
utf8_heavy.pl similarly.
Force loading of -u arguments to avoid runtime loading.
Call boot_core_PerlIO, mro, UNIVERSAL and xsutils.
Warn on unsavable IO objects from BEGIN blocks.
Fixed >&STD... handles (issue 93),
i.e. Test::Builder, Test::NoWarnings and parts of the core testing.
See http://blogs.perl.org/users/rurban/2012/01/what-to-avoid-in-begin-blocks.html
Add B::COP::stashflags workaround, >5.15.4 threaded.
Add fix for lost PL_regex_pad, 5.15 threaded.
* CC (1.12): allow overriding of -f<opt> B::C flags.
Skip internal packages with mark_skip (fixes cc_o2 tests).
Move -ftype-attr from -O2 to -O1.
Always define int, double and string package versions, parallel to types.
* Bytecode (1.12): detect Tie::Hash::NamedCapture (issue 90) -
works only partially.
Fixed >&STD... handles (issue 93)
Support -d debugging without -MOd
* Stackobj (1.00_03): add UL or L to overlong integers. doubles
not yet
* perlcc (2.13): added options -O[1-4], -u, -U, --Wc, --Wl, --version,
Keep cfile if output is empty.
Change -o output C file directory and name with -S or -c:
Before in current directory, now in -o directory.
Before with input name, now with -o name.
Add -rpath for all --staticxs libs if supported.
Changed verbosity levels and output wording.
* bytecode.pl: added xio_ifp
* bytecode.h: added BSET_xio_ifp
* META.yml: remove from MANIFEST and repo, let make dist
autogenerate it.
* t/test.pl, t/TESTS: changed test 46 (Exporter:: and other stashes in
%main:: stash) to cover issue 79.
use Exporter; print q(ok) if %main::Exporter::
* t/test.pl: use general comments with optional TODO. Before only TODO
* t/perldoc.t: fixed for 5.8 with manually adding -uFile::Spec -uIO::Handle
* t/issue59.t, t/issue81.t, t/issue90.t, t/issue93.t: added
1.36 2011-10-19 rurban
lexical warnings and more 5.15 fixes
* C: new B::LEXWARN, fixed representation of lexical warnings which was broken
since 8e01d9a6 5.8.9/5.9.4 (issue 76)
Added section free, use it for lexical cop_warnings (const STRLEN*)
(TODO: static PV, HEK + COPs)
Workaround for utf8::SWASHNEW adjusted to 5.15
PAD* sv flags changed in 5.15.3
XSLoader API changed (HEK in caller i.e.): had to add a
XSLoader::load_file for [perl #101336] >= 5.15.3,
also use mXPUSH for sp instead of 1-arg targ
Set SvLEN=0 for static PVs to skip sv_clear (problem with 13)
Handle overlarge negative 64bit ints, double not yet.
Move -fwarn-sv from -O2 to -O1
Move -fsave-data from -O3 to -O2
Compile *main::DATA IO handle automatically (__DATA__), just package __DATA__
handles need -fsave-data (15)
Die with 5.8.4/5.8.5 threaded with split->pushre on invalid
pmreplroot. This is a core B::walkoptree bug and can not be
easily fixed.
Tests 15 and 103 do not hang anymore, 15 and 29 pass mostly
* C.xs: added -Dts support to runloop to check internal compiler
problems
* t/issue76.t: added
1.35 2011-10-02 rurban
tested from 5.6.2 until 5.15.3
* C: allow debugging without -MOd=C
improve package_pv detection for methods, two more tests.
detect previously missing packages within the main sourcefile
(50,35,72,73)
-O1 now includes also -fav-init2 and -fppaddr, which are all
stable. -O2 string handling (-fro-inc) still unstable.
added B::REGEXP::save for \$qr (Encode::Alias), issue 71. Still
not fully fixed. Encode::Alias unusable.
fixed empty HV assertions since 5.15, new HV default keys = 7
(3,4,36), but still unsolved 5.15 problem with endless loop in
Perl_hfree_next_entry hv.c:1716 (3,4,36)
workaround 5.15.2 inability to walk with from %INC deleted
stashes, also workaround adding already deleted DynaLoader.
CORE patch [perl #100138] for new 5.15.2-5.15.3 DynaLoader XS_INTERNAL
problem required (16,29,44,45). Fixed with 5.15.4
0001-Export-DynaLoader-symbols-from-libperl-again.patch
use proper PL_envgv for *main::ENV which is inited in perl_parse
(fixes e.g. CGI apps using run-time values, not compile-time)
* CC (1.11): allow debugging without -MOd=CC
Try to jump from last to unknown label, put labels also onto cxstack.
Fixed cc_last.t test 4, jump out of anonsub, but not across C
functions yet (this is disallowed in C, need to split).
* C.xs: added B::REGEXP::EXTFLAGS (missing from B).
* perlcc (2.12): omit also inc_version_list dirs from perlcc as
leaving them in could lead to unexpected crashes
* t/cc_last.t: Fixed test 2. This works compiled and uncompiled,
but the returned errcode is not compared. Skip if so.
* t/TESTS: add all 5 possible method/sub calls to test 35 =>01234.
See http://blogs.perl.org/users/rurban/2011/06/how-perl-calls-subs-and-methods.html
* t/stash.t: fixed 5.8.8 stashes (overload, threads, ...)
* t/issue71.t: added, but not fixed yet
* ramblings/*.patches: CORE patches added and recommended in README.
* ramblings/blogs-debugging-article[1-4].pod: added to MANIFEST.
* perlcompile.pod, perloptree.pod: improved.
* ramblings/yapceu_2010.pod: added.
1.34 2011-06-12 rurban
* Makefile.PL: fixed make install < 5.13.7
* issue24.t, test.pl, bytecode.t: TODO more failing tests from cpantesters
1.33 2011-06-12 rurban
* Makefile.PL: fixed make install > 5.13.7
* test.pl, bytecode.t: TODO more failing tests from cpantesters
* stash.t: fixed freebsd test 4
1.32 2011-06-10 rurban
more darwin and package scan fixes, Bytecode -i includeall.
all top100 modules can be now be compiled on most perls
* Bytecode.pm (1.11): fixed const xsub xsubany ptr >=5.10 <5.14 (27).
save_cq => save_begin+save_init_end: moved push_begin upfront for the same
init order (44).
add CVf_CVGV_RC flag (refcount) on CV with no backref magic, e.g. END (48)
added option -i includeall which adds no BEGIN require ops, but adds
all included symbols.
better BEGIN block @INC manipulation detection (33)
print newsvx flags if -S or Comment
print hex IV < 8 as int with -S
* C.pm (1.32): check PERL_TRACK_MEMPOOL for AV malloc (25).
fixed init chunk splitting for CV and -fav-init2, if >10000 lines.
fixed overlarge AvFILL=3 of endav. Undefined subroutine &main:: (48)
fixed shared GPs on typeglob assignment. do not gp_free shared GPs,
just set them once.
added try_isa before try_autoload. use mro::get_linear_isa instead of @ISA
mark_package force: detect and fix already discarded packages which
are brought back in directly or by someone else's @ISA. (e.g. Sub::Name
needs DynaLoader::dl_load_flags)
improved method_named package search, still not exact though (LWP)
add manually compiled packages to %INC to avoid a runtime require
special case Config detection, AUTOLOAD = launcher, included by Dynaloader
added -Ds to print all sub names
do not compile any B::C subs, esp. our %SIG handler
add our own Internals::V as it is not exported by libperl
inc the REFCNT of stashes (Path::Class)
* Assembler.pm (1.10): archflag bit 2 for MULTPLICITY
* Disassembler.pm (1.10): archflag bit 2 for MULTPLICITY
use longsize resp. ivsize from .plc not from perl
print newsvx flags
print hex IV < 8 as int
* ByteLoader (0.08): support archflag 2 MULTPLICITY,
[perl #86186] force binary IO for __DATA__ handles, which changed
in core with 5.14
* bytecode.pl: support m for MULTIPLICITY (yet unused)
* Makefile.PL: move cc_runtime.h installation to make install step
(sudo). Tested ok on darwin gcc, does use -I. internally.
* cc_runtime.h: renamed from cc_runtime514.h
* cc_harness: fixed darwin coredir
* perlcc (2.11): fixed darwin coredir.
omit darwin linking to dynamic .bundle - generate .a via libtool
* TESTS: removed END block from test 28, only test run-time require (fixed 28)
added 48 for previous test 28 END block lexvar del_backref failure
added 49 for m//i blowup and -fno-fold testing
added 50 empty @ISA issue 64
* assembler.t: fix for hex->int IV roundtrips
1.31 2011-03-21 rurban
multiplicity support and more darwin fixes
* C.pm (1.31): replace $ITHREADS by $MULTI (darwin),
my_perl_destruct: disable CopFILE_set NULL and CopSTASHPV_set NULL
on $MULTI, PL_sv_yes|no special on MULTI
* CC.pm (1.10): replace $ITHREADS by $MULTI (darwin)
* t/test.pl, issue34.t, issue35.t: -ofile => -o file (darwin cc)
* cc_harness: -Wl,--warn-once invalid on darwin gcc
* log.modules: encode MULTI without threads as -m
1.30 2011-03-06 rurban
dbmopen, cc_runtime.h, perlcc, --staticxs
* C.pm (1.30): support dbmopen, fixes issue 24.
fixed xpvmgsect (was xpvsect) !-fcog < 5.10 (YAML, test 41,42,43).
fixed m//i since 5.13.10: swash_init("utf8::Cased").
fixed method_common package_pv detection in most cases.
still two cases open, without tests. PADOP GV NULL 0x20000, GV RV 0x40802.
fixed method_named with >= 1 arg, checking for const PV package_pv (test 35)
support GvCV_set and GvGP_set introduced with 5.13.10. [RT#65630]
implement -staticxs for perlcc --staticxs
either link to found static libs or link to shared lib with
fixed LD_LIBRARY_PATH/PATH (nyi in C, just perlcc).
optimize -fav-init use_av_undef_speedup &PL_sv_undef initialization (again).
reserved -mPackagename (NYI)
added verbose(),module() for CC.
implement outline of -m module, name detection missing.
added -fno-fold recommended since 5.13.9 to omit the huge utf8 tables.
added -fno-warnings, recommended since 5.13.5.
added special workaround for Scalar::Util bootstrapping which did not detect
List::Util, since it is not in its ISA, only required. need a better scan.
fixes test 44.
init XS within Od.
prevent autoloaded STDERR printing on non-debugging perls (e.g. "Storablelogcarp").
* CC.pm (1.09): support dbmopen, issue 24 failing due to XSLoader (test 45)
no pp_name shortnames in embed.h since 5.13.9, use Perl_pp_name(aTHX).
implemented dorassign, fixes issue 45.
fixed XSLoader detection, moved use_xsloader to save_unused_subs()
skip duplicate cc(pp_sub_*) functions (freebsd 45)
added missing END block code (test 28).
added B::C::verbose on -v
fixed B::C::verbose crash by adding B::FAKEOP::fake_ppaddr.
fixed compile_stats
renamed -n module_name to init_name.
check and set -f options from C also.
implement outline of -m module, name detection missing.
added option -fno-name-magic.
added experimental option -ftype-attr.
added TYPES pod section.
added pod for some funcs: load_pad, cc_queue, label.
option -strict only used with DEBUGGING perls.
be less chatty with compiling bblocks.
light layout cleanup of generated code sections.
added Vishal Bhatia <vishal at deja.com> to AUTHORS.
* Bytecode.pm (1.10): support dbmopen, fixes issue 24.
re-added -m, compile as module to .pmc
store AV elems for non-tied AV->MAGICAL >5.6 (i.e. @ISA, ...) (new test 47).
-DA: limcheck PV.
verbosity: added nice1 (condense elements).
name SV indices also.
* Byteloader: support GvCV_set introduced with 5.13.10 [RT#65630]
* perlcc (2.10): fixed -B -r, -B output and run bytecode.
implement --staticxs to workaround DynaLoader problems. use it in t/modules.t
add sopath to PATH on -r. Without -r the sofile should be symlinked so that the
process can find it.
implement --shared and --static, --shared fails on strawberry due to core problems.
implemented getopts bundling: -ScO -e'bla' -v4 -oa is now possible.
disabled some old single-minus switches: -testsuite, -time, -log, ...
requires now double-minus --testsuite, --time, --log, ...
kept legacy handling only for -Wb=.. and -stash.
fixed -B -e'oneliner'.
fixed -B @ARGV, no duplication of @ARGV, c_argv.t 3.
re-added -m|--sharedlib for Bytecode and C (NYI).
print C and CC filtered compiler output.
-v5 adds -v to the compiler options.
-v6 adds -Dfull to the compiler options.
support -Wb= for -B.
fixed -Br for 5.6: add -MByteLoader.
* Stash (1.01): add option xs to print xs modules with -x prefix.
usable via -MO=Stash also.
new option -D for debugging.
omit PerlIO::Layer.
added pod
* Disassembler (1.08): 5.6: fix ldop comments.
add op_type names, add @svnames, add indices, add ldspecsvx type.
* Assembler (0.10): print more flags (as hex) and indices.
better limcheck diagnostics (op,sv,pv).
* cc_runtime514.h: removed from CORE with 5.13.9. [RT#65628]
If so, cp it back. You might need sudo cp. (unchecked)
Renamed not to pollute tests with older perls.
Expanded PERL_MAGIC_taint 't' for 5.6.
* C.xs: added experimental method_cv for the hash-only case, untested.
* t/modules.t: try --staticxs first, try crosscheck without perlcc.
* t/issue24.t: added.
* t/issue45.t: fixed and added 3 more tests.
* t/e_perlcc.t: added to test the new option handling.
* t/testc.sh, t/TESTS: fixed wrong test 39 for 5.8, added 47, 104 (reset), 105 (type-attr).
* t/testplc.sh: added 47.
* t/stash.t: rewritten. allow 5.6, use Test::More, more stable
* t/todomod.pl: added. interactive tool to check log.modules reports and fix TODOs
* status_upd: recommend and fix ./status_upd -f -q -d
-q -d prints only the actual tests
* Changes: added more missing history ca. 1997-2000.
1.29 2011-01-08 rurban
improve dl_init
* C.pm (1.29):
use DynaLoader::bootstrap_inherit, fixes dl_init when the module has no ISA
DynaLoader. eg. Test::Harness with Time::HiRes
improved CopFILE detection as context for dl_init (test 29)
fix cop_warning cast warnings
print debug messages for beginav and endav
protect against undefined strings, and % in regex
protect against undefined gvcv->GV->EGV (Spiffy)
latefree r-magic regex strings >5.10, fixes a couple of modules
* t/modules.pm: subset use 10 not 11 modules. run tests with -O1
less TODO tests, esp for 5.13
* t/modules.t: fixed binary detection on non-windows (a.out)
* ByteLoader: fixed -Dt for GV
1.28 2010-12-31 rurban
fixed XSLoader, pmflags, CV and most named methods for 5.14
* Bytecode.pm (1.09):
fixed cv_gv and push_begin del_backref problem (27, ...) > 5.13
special cased op_pmflags: U32 needed since 5.13 (PMf_BASE_SHIFT)
Fixes op_pmflags since 5.12 ((3..4,27..29,31,33), esp. pp_subst
start for Windows 5.12 cop_store_label workaround: Labels disabled for now.
Failed to include CORE hv.c: too large.
mingw 5.12 compiles now again and passes all but 21,33,42..44
Fixed entrytry with Bytecode >= 5.12:
ck_eval upgrades the UNOP entertry to a LOGOP, but B gets us just a
B::OP (BASEOP)
add BEGIN { push|unshift @INC } parts of blocks (test 33)
* Byteloader (0.07):
Support new CvSTASH_set.
Basic op_pmflags U16/U32 support. No version conversion yet.
BSET_gv_fetchpvn_flags: new for empty constant prototypes (fails on 64bit only)
* C.pm: add -fno-destruct (with -O3) with a minimal perl_destruct,
(re-enables -fcog >= 5.10),
add -fro-inc (with -O2) readonly INC and curpad strings,
add -fconst-strings (with -O3) const readonly strings
and const more other fixed strings,
do not boot static core packages (utf8, re, ...),
fixed -O2/-fav-init2: store at wrong avchunk index,
initialise CopFILE and CopSTASHPV static with ITHREADS
improved 5.13 method_named package detection (first and pmreplroot),
in endav still failing (Test::Deep)
fixed overwritten CvSTART for 5.13.x
do not cog/const nullify vars in END blocks
disallow CONST->op_first with CONST_BARE. fixes ExtUtils::Install
better XSLoader::load detection: aliases and defined in END blocks
save XSLoader::load GV (test 46 and modules)
bootstrap also static core packages
add ptr_undef instead of NULL initialization non-threaded
fix many cast warnings
fix AV fill +1
required to run C.xs runloop to find PMOPs for QRs
Fixed entrytry >= 5.12 as in Bytecode:
ck_eval upgrades the UNOP entertry to a LOGOP,
but B gets us just a B::OP (BASEOP)
Fixed XSLoader, loading dynamic modules works now (test 45),
had to set the .pm path in the calling context.
* CC.pm (1.08): many fixes
use new B::C optimizations, new -DF
fixed issue 31 also run C.xs runloop to find PMOPs for QRs,
fixed issue 35 same variable name in different scope (Heinz Knutzen),
fixed issue 36 panic: leaveloop, no cxstack (Heinz Knutzen)
fixed issue 37 orassign (Heinz Knutzen)
fixed issue 38 on and/or return value not just no/yes (Heinz Knutzen)
fixed issue 39 Bizarre copy of ARRAY in leavesub (Heinz Knutzen)
fixed issue 42 remove enter/leave from %no_stack (Heinz Knutzen)
fixed issue 44 aelemfast missing for lexicals (Heinz Knutzen)
fixed issue 47 anonsub in while (Heinz Knutzen)
fixed issue 48 wrong truth value for array assignment in boolean
context (Heinz Knutzen)
fixed issue 49 Can't "last" outside a loop block (Heinz Knutzen)
fixed issue 51 errors on nested if statement with test on multiple variables
(Heinz Knutzen)
fixed issue 52 errors on variable with numeric value used in second
expression of 'and' (Heinz Knutzen)
add labels for alternate ops (e.g. run-time jumps). Not sure yet if the
full alternate subtrees are saved. fixes test 32 (push_label, pop_label),
issue 46. resolve duplicate such labels.
honor $ENV{'PERLMODS'} (by cPanel)
* Disassembler.pm (1.07): read over #! + use Bytecode .plc header.
support pmflags
* Assembler.pm (1.09): support pmflags
* perlcc (2.09): added cc time for --time.
same INC as in caller - omit duplicates
* cc_harness: improve -Bstatic
* t/testc.sh: simplified. Fixed various wrong tests
* t/testm.sh: fixed UAC issues on Win7
* t/test.pl: new faster test functions for the new issues
* t/issue27.t: added (Reported by alexchorny, Apr 25, 2010)
* t/issue29.t: added (Reported by Heinz Knutzen)
* t/issue31.t: added (Reported by Heinz Knutzen)
* t/issue34.t: added (Reported by Heinz Knutzen)
* t/issue35.t: added (Reported and partially fixed by Heinz Knutzen)
* t/issue36.t: added (Reported and fixed by Heinz Knutzen)
* t/issue37.t: added (Reported and fixed by Heinz Knutzen)
* t/issue38.t: added (Reported and fixed by Heinz Knutzen)
* t/issue39.t: added (Reported and fixed by Heinz Knutzen)
* t/issue42.t: added (Reported and fixed by Heinz Knutzen)
* t/issue44.t: added (Reported and fixed by Heinz Knutzen)
* t/issue45.t: added (Reported by Heinz Knutzen), dorassign missing
* t/issue46.t: added (Reported by Heinz Knutzen), fixed by r610
* t/issue47.t: added (Reported and fixed by Heinz Knutzen)
* t/issue48.t: added (Reported and fixed by Heinz Knutzen)
* t/issue49.t: added (Reported and fixed by Heinz Knutzen)
* t/issue50.t: added (Reported by Heinz Knutzen)
* t/issue51.t: added (Reported and fixed by Heinz Knutzen)
* t/issue52.t: added (Reported and fixed by Heinz Knutzen)
* t/issue54.t: added and fixed
1.27 2010-07-30 rurban
Fixed 1.26 CV regressions for 5.8 and 5.10
* C.pm: add -DF print stringified sv and op flags.
fixed xpvio off-by-one error for 5.10 (test 29)
rewrote XPVCV forwards for >=5.10: (fails before)
1. only the SV is now forwarded, not the struct.
2. no duplicate SVs, the CV forward is just a link to one SV (#define CVIX)
removed wrong CVf_ANON check causing CV failures (test 9,10,12). 5.13.3 still failing
fixed CV svsect for 5.8 and 5.10
* Bytecode.pm (1.08): removed wrong CVf_ANON check causing CV failures (test 9,10,12,...)
* perlcc (2.08): added --time, support vprint -1
* t/test.pl, t/bytecode.t: double check failing tests if it works uncompiled
* t/testc.sh: add -D- for no gcc warnings
added -f for testing single optimizations
* t/testm.sh: add -D<args> flags for compiler debugging and link with -g
added -T for perlcc --time
* t/c_argv.t, script/perlcc: properly quote spaces in path of perl and `cwd`/blib
* t/modules.t: add svn rev to B::C::Version
1.26 2010-07-26 rurban
Start of 5.14 support, CVs broken.
* C.pm: improve -fav-init performance if not usemymalloc: no
calloc, just direct libc malloc.
-O2 uses -fav-init2, i.e. experimental independent_comalloc(),
-O1 uses now -fav-init (Nick Koston + Reini Urban)
Mark a package which is autoloaded from XS.
Fix autoloading of constants AKA const xsubcv via AUTOLOAD [test 27] (Nick Koston)
5.13.3 support (xpv STASH, MAGIC, ... reorganization), but CVs still failing
Check CVf_ANON when setting cv->GV. Fixes anon subs.
Do not call REGEXP IVX and NVX methods (since 5.11)
* bytecode.pl: CvGv_set since 5.13.3
Fixed byteorder 0x stripping causing wrong bget_swab on 64bit
* B::C::Flags: new. added by Makefile.PL probing independent_comalloc()
* CC.pm: the default -fno-slow-signals adds PERL_ASYNC_CHECK at
the same ops as with 5.13, a major improvement.
* Bytecode.pm (1.07), bytecode.pl: xpvav.xiv_u was removed with 5.13.2 but not
used anymore. read and set av_flags only until 5.12, compile only before 5.10
Check CVv_ANON when setting cv->GV. Fixes anon subs
* bytecode.h: do not PM_SETRE with empty arg. fails since 5.13 debugging
* t/testc.sh, t/TESTS: fail test 44, change threads tests 41-43 to TODO
* perlcc (2.07), cc_harness, t/test.pl: debian specific fixes for their broken
-lperl linker args for ExtUtils::Embed::ldopts.
* t/test.pl: Have complete c/cc TODO/SKIP status in one place.
Fixed killing hangling tests with IPC::Run.
Fixed new cc TODO.
Run CC test 18 even not as AUTHOR
* t/c*.t: make test 27 easier to debug (Nick Koston)
Added test 45 (Nick Koston)
1.25 2010-04-11 rurban
* C.pm: remove global my_perl, pass it properly around.
* t/c*.t: added test 40 \000 byte in PV failing on ori 5.6.2 (Nick Koston),
added more magic tests for shared vars - n,p,P magic: 39-43. 41 nyi
* t/modules.t: fix -t (run module tests), print header only on full test
* t/modules.pm: do not test core or deprecated modules, esp. do not download perl
Added is_subset.
* t/testm.sh: implement -k
* t/testc.sh, t/TESTS: add 44 for weaken import and magic_killbackrefs #72922
1.24 2010-02-15 rurban
* C.pm: Fixed off by one array access in magic array init (34)
- valgrind is your friend.
Fixed aelemfast padsv access crash (Text::Tabs on freebsd7)
Fixed wrong stash names in gv_stashpv analog to gv_fetchpv
(Text-Tabs+Wrap t/dandv.t)
* t/testm.sh: implement -s without log file
* t/modules.pm: export skip_modules, silence module scanning STDERR
1.23 2010-02-14 rurban
* t/testm.sh: chmod +x
* t/modules.t: fix $have_IPC_Run
1.22 2010-02-14 rurban
Tested with ActivePerl 5.10.0
* bytecode.h: unshare_hek exception for WIN32, not only MINGW
* t/modules.t: Added list of to be skipped modules, which cycle endlessly.
Improve todo message.
* t/testm.sh: add option -s "install skipped modules"
* Makefile.PL, cc_harness, perlcc: fix ldflags for ActivePerl 5.10.0
for MSVC6 (ccversion 12) -opt:ref,icf leads to invalid outfile "pt:ref,icf"
* c+cc test 29 fails on 5.10 randomly. Make it a TODO
1.21 2010-02-14 rurban
* C.pm: Add missing Nullop for CC on 5.11.4 (cc 12).
Test 38 passes
1.20 2010-02-14 rurban
* C.pm: #define PERL_CORE broke Null macros on 5.11.4. Define those.
1.19 2010-02-13 rurban
Almost fixed evaltry (12) with proper cop_seq setup, just solaris and debian
fail sometimes. Tested ok with strawberry 5.10.1
* C.pm: fixed evaltry (test 12) mostly, NVX was shared with 2 xpad_cop_seq ints
which accidently just worked before 1.17 with %s, but not after changing
to the %g representation.
Ignore unused random (overlong) xpviv IV, causing
"warning: this decimal constant is unsigned only in ISO C90"
Defer rv => cv to run-time < 5.10. Fixes ExtUtils::Install
Defer xpvmg->pv init to run-time < 5.10. Fixes MooseX::Types
Check for NV inf. Fixes compilation of DateTime
Defined PERL_CORE: Fxied Windows problems with setjmp undef'ed in XSUB.h
Added Win32 workaround for missing PL_do_undump
Stripped perl_ prefix from perl_get_cv, perl_call_pv, perl_call_method
* CC.pm (1.07): added -fslow-signals.
Disabled inlined pp_enter: Fails on empty cxstack.
Backed out inlining of enterloop: GIMME_V fails on freebsd7
Remove strawberry PerlProc_setjmp definition, #define PERL_CORE fixed that
* Bytecode.pm (1.06): same NVX => xpad_cop_seq fix as in C.pm, added 2 new
bytecodes (cop_seq_low, cop_seq_high), fixed tests 9,10,12. Passes
all tests > 5.6 now.
* bytecode.pl: added cop_seq_low (155), cop_seq_high (156) instead of xnv.
No conversion code for loading older bytecode needed, but fragile (double => 2 int)
* t/modules.t: refactored by Todd Rinaldo (toddr). 4*tests per module:
-s a, exitcode 0, ok, no warnings on stderr
* t/TESTS: added 38, failing on CC (Nick Koston).
added 39, failing everywhere.
* t/test.pl: refactor: Try to timeout on all tests (compiler and exec) if
IPC::Run is installed
* MANIFEST, *.pod: Moved conference pods to ramblings,
removed lib/B/Asmdata.pm again, added t/qr_loaded_module.pm
* t/testm.sh, t/modules.pm: added, -t not working yet though
* t/b.t: $[ => $]
1.18 2010-02-06 rurban
evaltry (test 12) still broken on most systems.
* C.pm, C.xs: fixed r-magic for 5.6 (ExtUtils::Install,
File::Temp, Template::Stash). need tests for run-time checks (33).
5.6 misses MG->pregcomp
* t/modules.t: check for a.out (test from toddr)
* Makefile.PL: create lib/B/Asmdata.pm beforehand (toddr)
* ByteLoader: fixed duplicate + missing bl_header for bsd and Darwin
(test from toddr)
* test 37 added - AV self-refs, analog to HVs (never failed, just to
be sure).
Removed -qq from 5.6 tests.
1.17 2010-02-03 rurban
Fixed now most module failures, non-threaded at least: bootstrap was in
the way. strawberry perl fixes. Fixed test 29, broke evaltry test 12
* C.pm: Added option -Dfull for all full debugging info, set all options.
Skip saving XS bootstrap. Fixes most XS module failures. i.e.
Digest::MD5, Data::Dumper, ..
Fail: Attribute::Handlers, B::Hooks::EndOfScope, YAML, MooseX::Types
4 for 5.8.9-nt from the top100, and 3 for 5.11.4-nt: Attribute::Handlers,
File::Temp, ExtUtils::Install.
Fixed AV self-references causing endless loops, analog to HVs (test 27)
Fixed Getopt::Long crash with AV D magic (regdata),
save_magic returns now the magic types as string.
Fixed unescaped savere (test ExtUtils::Install).
Fixed GvSTASH "initializer element is not constant" (Test::Harness)
Fixed xrv_list "initializer element is not constant" (Class::MOP < 5.10)
* CC.pm (1.06): Added missing unexported definitions for MSWin32,
>=5.10: newGP, vivify_ref, prepare_SV_for_RV (tests 18, 29).
PerlProc_setjmp, PerlProc_longjmp (tests 12, 32).
Fixed cxinc for 5.11.0
* t/bytecode.t: mixed up 32 with 33.
* t/modules.t, t/top100: new module test, see also the log.modules*
results in the svn repo.
* t/mymodules: added as reference, executed optionally.
* script/cc_harness: ldopts -std if no -B<opt>
1.16 2010-01-27 rurban
use Moose and benchmark still fails. IO even a regression.
* C.pm: Fixed braces warning for empty xpvcv startfield (Nullany),
register int for warn_sv loop
Fixed hv init for magic hashes, pre-allocate array and xpvhv_aux. (test 34)
Fixed method_named (CPAN #53889, test 35) for B::C, better fix than for B::CC.
Added -DH for HV debuggging.
Fixed HV self-references causing endless loops, i.e. with use Moose, test 36.
* CC.pm (1.05): added experimental -finline-ops. Always on. Can be removed if
it works okay for the new inlined versions.
Inlined pp_enter, pp_reset, pp_regcreset, pp_stringify.
Fixed pp_padsv DEREF for 5.10.
Documented test coverage for each op.
Fixed wrong $PERL511 definition.
Added Opcodes support (no_stack), on CPAN as 0.01.
added pp_pushmark pp_break pp_continue to no_stack handling.
Fixed method_named (CPAN #53889, test 35) assuming there is only const
before method_named. No counter examples found so far.
Changed new OBJ => OBJ->new
More curcop->write_back protection.
* Stackobj.pm (1.00_02): RV fix for 5.11.
* t/testc.sh, t/test.pl: added CC specific tests to increase CC op coverage
after 100.
Switched test 32->101 (arith) with 33->32 (evaltry catch die) as it fails
with 5.11.3.
Added new qr test 33 (Nick Koston), test 34 for magic hashes, test 35 for
broken methodcall syntax (method_named), test 36 for HV self-references.
* TESTS: added test 32 (evaltry catch die): Fails on 5.11.3 C/CC only,
<5.11.3 it works okay. Also tests 33, 34, 35, 36.
* ByteLoader/Makefile.PL: removed cygwin gcc specific stack-protector removal.
It was a bug of mine.
Added more AUTHOR gcc -ansi warnings, just -pedantic not.
* Makefile.PL: Added more AUTHOR gcc warnings, also -pedantic.
Added optional Opcodes PREREQ_PM
1.15 2010-01-03 rurban
* t/test.pl: Fixed MSWin32 tests again. Lost the 1.13 patches with 1.14.
1.14 2010-01-02 rurban
* CC.pm (1.04): Fixed entereval/leaveeval for 5.10. Fixes eval "", test 12.
The end of the string CALLRUNOPS needed to be nullified, as in 5.8.
5.11 CORE also needs a patch for this.
Optimized away SP save/restore for %no_stack ops. Need to read this
from opcode.pl eventually.
PERL_ASYNC_CHECK (pending signals) added after every basic blocks with -O1
and every loop.
* C.pm: More 5.10 union braces.
* Stackobj.pm (1.00_01): Added iv and nv to peek.
Added documentation.
* Bblock.pm (1.03_01): Print the argument (sub) to inspect.
Added missing documentation.
* t/testcore.t: improved. added -fail and a list of failing tests.
C now always with -O3.
* t/c_allow_opts.t: Added for -DALLOW_PERL_OPTIONS.
1.13 2009-12-31 rurban
Tested with MSVC (MSVC compiles test29 and bigger examples awfully slow!
7:30min, 30MB mem, 98% CPU, 2GHz)
* C.pm: MSVC fix for "(OP*)Nullany" i.e "(OP*){0}" => "{0}". Fixes
test 27 on MSVC. CC test 12 broken on MSVC AS 5.8
* bytecode.pl: Restore C strictness, printf before declaration.
Undefine debop for MSVC also. Fixed [cpan #53228].
* t/test.pl: Cleanup intermediate MSVC .obj. Skip too slow tests 29
on MSVC, only c.t
Remove >nul for test results on Win32.
More run_cc_perl fixes for Win32.
Be more quiet on MSWin32 also (no 2>/dev/null)
Skip stderr redirection to stdout on cmd.exe tests, t/o.t 5,9.
* t/bytecode.pl: ditto.
* t/TESTS: Fixed 28 for MSWin32 MSVC
1.12 2009-12-31 rurban
__DATA__ handles work now. Also more Bytecode fixes.
* t/testplc.sh: Added -S: skip all but -S and Concise
* Bytecode.pm (1.05): Adapt RV 5.11 change from SV to IV, detect ROK at
B::IV::bsave analog to C.pm. Fixes test 16.
Set prototype sv_flags at first, so it cannot assert. Fixes tests 27 and 29.
More work on 5.6 compat.
* bytecode.pl: Fixed 5.6 %alias_to sizes.
* bytecode.h: Fix BSET_cop_label for 5.11. Fixes test 21.
* t/bytecode.t: Added DEBUGGING to the mix. 5.11 is now completely the
same as 5.10. Remaining failures are now 9,10,12 for DEBUGGING (or
non-threaded?).
* C.pm: Added xpvuv (coverage in 5.6.2 test 21).
Added PMOP->pmstash/pmstashpv (no coverage yet).
Checked against -Wall -Wextra:
Added missing pmop->stash for 5.8.
Added missing cop->cop_io for 5.8.
Added braces to union inits (MSVC Todo).
Remove unused dTARG and dSP.
Fixed CC test 29 on 5.6.2, not checked why.
Fixed __DATA__ test 15 on 5.10 and 5.11.
* TESTS: Updated with 5.10.1 CORE results
1.11 2009-12-29 rurban
Fixed 5.11 RVs, added C optimizations to CC
* C.pm: Adapt RV 5.11 change from SV to IV, detect ROK at B::IV::save.
Fixes test 16.
Added -DW for walk, together with -Dp only.
Forced fullname optimization scalars for B::CC.
Export save_sig and fixup_ppaddr for CC.
* CC.pm (1.03): Fixed Perl_gv_SVadd cast warning.
Added most B::C optimizations. This fixes all threaded tests 15 >= 5.10.
Call save_sig, fixup_ppaddr not yet.
* t/test.pl: simplified (and fixed) keep logic
* t/c_argv.t: cleanup
1.10 2009-12-29 rurban
Fixed @ARGV
* C.pm: fixed couple of minor bugs detected with new t/testcore.t:
t/CORE/comp/retainedlines.t => Use of uninitialized value $len, save_hek
Use of uninitialized value $i in printf at C.pm line 49
Undefined value assigned to typeglob at C.pm line 2901
Do not overwrite run-time @ARGV on >= 5.10 (GP and AV). Fixes test c_argv.t
* t/testcore.t: added
* t/c_argv.t: added. test @ARGV and perlcc
* perlcc (2.06): grab_stash only via new -stash, not automatically;
B::C is better.
ldopts -std only when modules are given.
fix for empty options.
add -sharedxs, -sharedlib; -shared is now for shared linkage,
-sharedlib to create a shared lib (was -shared before but never worked),
-sharedxs to also link shared xsubs, no run-time DynaLoader/XSLoader needed.
1.09 2009-12-27 rurban
* C.pm: Cut down the number of AUTOLOAD'ed optrees, search only on
empty gv->cv (31).
Added very unsafe -O4/-fcop to eliminate most cops and file + line numbers.
Added faster -fav-init to -O2, less unneeded av_extend().
Get rid of fbm_compile (11). Only 5.8.9 is broken.
* CC.pm (1.02): partially fix eval "" for >=5.8.9, wrong CORE cc_runtime.h
definition. (test 29 - eval "")
* t/test.pl, t/c*.t: Simplify C/CC testsuite.
* t/testc.sh: fixed -E
Added -o for orig, no -Mblib
* t/c_o3.t, t/c_o4.t: added
1.08 2009-12-23 rurban
Adapt coding guidelines, add C and cperl coda. Reformat sources.
* C.pm: Detect AUTOLOAD and CLONE (test 27 and 31).
5.10 is now the best release for unoptimized B::C. 5.8 is faster optimized,
but misses some autoloaded xsubs.
Simplify PVMG exclusion; all non-magical, not just PAD_OUR, as in Bytecode.
* Bytecode.pm (1.04): Add missing BM logic to GV >= 5.10. Fixes test 11.
Fixed op_pmflags logic for 5.10 threaded only, no += 2. Fixes test 2.
Protect empty match from setting op_reflags. Fixes test 20.
Add perlversion to the -S generated header.
Document more options -TI, -TF, -u<package>
* perlcc: improve help. use Pod::Usage as module, not via cmdline.
fix previous installation quirks.
* assemble: improve pod. make it installable.
* disassemble: make it installable.
* cc_harness: ditto.
* Makefile.PL: added script/* as EXE_FILES to install them.
* t/TESTS, t/testc.sh, t/testplc.sh: test 31 non-xs AUTOLOAD added
* ByteLoader/Makefile: tuning, bytecode.h triggers now byterun.c
* bytecode.h: Specialize pregcomp on 5.10; add PL_regex_pad[0] for
pregcomp if missing. fixes tests 3,4,5,7,31 on 5.10.
1.07 2009-12-19 rurban
* C.pm: fix fbm_compile (INDEX) for >= 5.10. gv_list is already a pointer.
rewrite PVGV (ie PVBM) init for >= 5.10. (test 11)
Added CV->save_magic (untested)
Fixed two wrong my decelarations detected by the new Od debugger.
* README: Clarify DIFFERENCES section for CC only. Esp. the
Context of ".." section. New test 30
* t/TESTS, t/testc.sh, t/testplc.sh: test 30 added for Context of ".."
* t/testc.sh: fix -k logic, keep .pl for -O tests
1.06 2009-12-18 rurban
Going public on the Perl birthday
The first public compiler re-release since it was removed from CORE.
* C.pm: Had to disable -O1 -fcog (pv_copy_on_grow) on 5.10 and higher
until I find out how to fool S_unshare_hek_or_pvn. This fixes all C
-O1 and -O2 tests. Warn about this.
Fix wrong RV init on *5.10* for test 29 also, as with 5.11.
Simplify __DATA__ handling. Warn when -O3 or -fsava-data is missing.
Enable working -fsava-data on 5.8 and 5.10 threaded. Fixes couple of tests 15.
Fix 5.8/5.10 PVMG pv = &PL_sv_undef for empty comppadnames
* t/testc.sh: -k keep added. Delete temporaries on PASS as new default.
-E added. Dump preprocessed source file with cc -E as _E.c (was default before)
* Version bump to official:
B::C 1.06 (1.05 is in 5.8.9)
B::CC 1.01
B::Bytecode 1.03
B::Asmdata 1.03
B::Assembler 0.09
B::Disassembler 1.06
B::Bblock 1.03
ByteLoader 0.07
1.04_33 2009-12-17 rurban
* t/cc*.t: skip some memory eating failing tests.
* MANIFEST: dummy lib/B/Asmdata.pm added to fix cpan smokes on BSD.
Thanks to Slaven Rezic.
* C.pm: fix tests 14,16,23 on >=5.10, missing AV magic for
CV main::a, protect PVMG from SvPAD_OUR.
fix wrong RV init on 5.11 for test 29
* CC.pm: fix ARGS >=5.10 (in require, test 28).
Enable quiet. No -q for quiet, just -v (verbose) or any -D switch turns
on verbose.
* t/testc.sh: Added test 27 (import), test 28 (require), test 29 (use)
[Nick Koston]
1.04_32 2009-12-14 rurban
Only two 5.10 B::C bugs remaining!
* C.pm: added missing FBM logic to GV >= 5.10 (test 11).
Forbid MAGIC on non-magival SVs >= 5.10 (tests 14 + 23).
Special PVMG PL_sv_undef string. (namesv problem on 10,14,23)
1.04_31 2009-12-14 rurban
* C.pm: fix test 21 on 5.10 "Bad free() ignored". Dynamically
allocate CopLABEL.
* Makefile.PL: fix the make depend section > 5.9
* t/testc.sh: fix -D option
1.04_30 2009-12-13 rurban
Better 5.6 support, but Bytecode compiler still disabled.
Not even the Byteloader works for 5.6 assembled code. The Disassembler
does not stop at ret. Fixed several C tests.
* bytecode.pl: renumbering policy: <= 5.6 squeeze, >= 5.8 fixed
to force exact bytecode numbering as with 5.8.
Allow float versions, such as 10.001 for subreleases.
Add perlversion to header.
Add byteorder check logic.
Added logic to include all possible unsupported ops, all holes.
bytecode table checked for 5.6.1, 5.6.2, 5.8.0, 5.8.1-5.11
Note, that I found official and contradicting 5.6.1 releases.
ActiveState 5.6.1.626 had no op_children, the unix release tarball
with 5.6.1 (called Trial 1) still has it.
* ByteLoader.pm (1.06_06): better bytecode numbering.
* Asmdata.pm (1.02_02): strict numbering along 5.8.
Unsupported ops are now also included, with PUT method 0.
* Assembler.pm (0.07_07): Add perlversion to header
* Disassembler.pm (1.05_04): Add perlversion to header.
Print header only for existing.
* BcVersions/Asm*.pm, BcVersions.pod: added for most versions with the
CORE compiler.
* disassemble: Make it work with the older Disassembler.
Make it work with older bytecode >= 5.8 via Asmdata unsupported ops.
* i386.xs, jitcompiler.pl: removed (seperate module)
* bytecode.h, C.xs: Fixed for 5.6, tested with 5.6.1 with MSVC.
* bytecode.h, byterun.c: add static int force = 0. Override it to 1 to
try out executing older bytecodes.
* C.pm: fix test 16 on 5.10 again, non-threaded only (GVAV magic).
first fix in 1.04_24, broken in 1.04_28. On 5.11 I have a broken
RV handling here.
Remove version and Regexp::DESTROY from the automatic methods
(experimental).
First attempts with pv and hek consting failed.
* t/testc.sh, t/testplc.sh: support proper cmdline arguments, add -h for
help
Fixed test 5 by fixing the wrong test.
* perloptree.pod: renamed from perloptreeguts.pod. Added links.
1.04_29 2009-12-07 rurban
Disable the Bytecode compiler for 5.6. Fixed besides the __DATA__ handle
(test 15) all remaining 5.8 C bugs.
* C.pm: assign the PVX of GV also for empty stashes (main::) to avoid
destruction failures at Perl_pad_undef() SvPVX_const(namesv) == '&'.
Fixes tests 14 and 23
* byterun.c: No assert on empty bs_sv, it is &PL_sv_undef.
Map missing -Dv on 5.6 to -Df i.e. -D256
Added better debugging output: setter values.
* STATUS: re-run CORE tests, list cmdlines, update status
* Disassembler.pm: added gen_header_hash() for gen_header output.
add to documentation.
* Bytecode.pm: -S uses gen_header_hash for gen_header output.
1.04_28 2009-12-06 rurban
* C.pm: fix -fcog (Copy on Grow with -O1 and -O2) for >= 5.10 by a new
SVPV.
Statically initialize PVs with a union layout trick. Use char* as first
union member.
Revert xpvcv+svsect changes to pre-initialize those structs against
gvcv recursion.
* t/b.t, t/o.t, t/stash.t: fix tests for 5.6.2