git bisect is cool. Everyone should use it. However, it seems that it still has this aura of complexity. So I've just committed Porting/bisect.pl It's "tuned" to run on x86_64 Linux (ie dromedary), but hopefully will be useful elsewhere. (Improvements welcome, provided they don't break running it on dromedary) In a clean git checkout, you run something like this: ~/Perl/perl/Porting/bisect.pl -e 'sub reftype { "whatever\n" }; sub DESTROY { undef &reftype } print sub { my $guard = bless []; goto &reftype }->(\1); undef &whatever;' and after a bit of time and lot of output, you get this: HEAD is now at 4c80c0b shrink pp_hot fractionally good - zero exit from ./miniperl -e sub reftype { "whatever\n" }; sub DESTROY { undef &reftype } print sub { my $guard = bless []; goto &reftype }->(\1); undef &whatever; 840a7b70755d06740715e982aa756f9d77203c4e is the first bad commit commit 840a7b70755d06740715e982aa756f9d77203c4e Author: Ilya Zakharevich <ilya@math.berkeley.edu> Date: Mon Dec 4 19:40:25 2000 -0500 Re: [PATCH] The largest hoax of all times? Date: Tue, 5 Dec 2000 00:40:25 -0500 Message-ID: <20001205004025.A4050@monk.mps.ohio-state.edu> Subject: Re: [PATCH] The largest hoax of all times? From: Ilya Zakharevich <ilya@math.ohio-state.edu> Date: Mon, 4 Dec 2000 23:55:53 -0500 Message-ID: <20001204235553.A1140@monk.mps.ohio-state.edu> Subject: Re: [PATCH] The largest hoax of all times? From: Ilya Zakharevich <ilya@math.ohio-state.edu> Date: Tue, 5 Dec 2000 01:28:45 -0500 Message-ID: <20001205012844.A4227@monk.mps.ohio-state.edu> Fix the unpredictable order of DESTROYs. p4raw-id: //depot/perl@7991 :100644 100644 14dcbd7d144e224f88248644d5435e8e62a92cf0 6c90a54033ba0b1de7c1c270ed04f94d3340cc35 M embed.h :100755 100755 055c28b963bfa81d567b4b737d9011338b6f84ec ac43b0757d097eac41fb63e81337b3629647e3fc M embed.pl :100644 100644 91dc6df07c0f8579f13f19bca515b810cea3838e 5a3850cb4ef5bdb13e8a36165fcca3d4a368e33e M objXSUB.h :040000 040000 b706fac7a2586ff044458d9590a18a73157e936e db860b679925cb581b75521e64d458003fc1384d M pod :100644 100644 e561d1a024d6fcd97b21492f75f6c7ba25cd6037 1a3802ab476b9bfe8a778913fba375c72c9fd1f1 M proto.h :100644 100644 0713fa7e782dacdd556b74e4a8d940103ecada70 3f41a4e56bc3c62f64ecfec756e8b2f8cc70435d M scope.c :100644 100644 f875d58053c8ed082ff9b5e9b006d5e4c5fe8515 26914307879fbdbc50539019dfe6733bd4f8cda2 M sv.c :100644 100644 b155ece7b0fad5905660b130ef8fa70d04f9b984 39c1c29323c18985db52fee43ea85148519a8ab7 M sv.h :040000 040000 7c90678abbf5ce1867629f2e9bf2ef6a368ea903 70abb9b5147b5c11968254661fb915ff0733b7d5 M t bisect run success That took 473 seconds Which I think is rather useful. [Example slightly simplified. You'd need to pass the options -j=9 --target=miniperl to get the answer in 473 seconds. By default it will not use a parallel make, and will build test_prep, which instead took 813 seconds] Currently it's not very documented. It defaults to bisecting between perl-5.005 and blead, because I've yet hacked bisect-runner.pl to go earlier than that. (I think 5.000 is possible, as I built it somewhat by accident whilst playing, but I think with a config.sh present that set defaults. 5.004's Configure is grumpy if I close STDIN or open it to /dev/null) You can't (yet) change the options to Configure But I thought it was useful enough already to commit. Nicholas ClarkThread Next