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

[PATCH B::Deparse] version number & changes

Thread Previous | Thread Next
Robin Houston
July 1, 2001 09:17
[PATCH B::Deparse] version number & changes
Message ID:
[ This is the third time I'm sending this, because it has apparently
  failed to get through to the list previously. It hasn't bounced
  either; so I apologise if this is the third copy you've had. ]

The below patch increments the version number of B::Deparse, and
adds a short list of changes.  I contacted Stephen McCamant about this
a few days ago and haven't had a reply yet, so I thought I'd go ahead
and send the patch anyway.

The changes since the last released version are fairly substantial, so
I think it would be rather confusing for them both to have the same
version number. Presumably Stephen can still make whatever changes he
feels appropriate, until 5.8.0 is actually released.


--- ext/B/B/	Sat Jun 30 18:56:17 2001
+++ ext/B/B/	Sat Jun 30 19:54:17 2001
@@ -19,7 +19,7 @@
-$VERSION = 0.60;
+$VERSION = 0.61;
 use strict;
 use warnings ();
@@ -92,6 +92,19 @@
 # - separate recognition of constant subs
 # - rewrote continue block handling, now recoginizing for loops
 # - added more control of expanding control structures
+# Changes between 0.60 and 0.61 (mostly by Robin Houston)
+# - many bug-fixes
+# - support for pragmas and 'use'
+# - support for the little-used $[ variable
+# - support for __DATA__ sections
+# - UTF8 support
+# - BEGIN, CHECK, INIT and END blocks
+# - scoping of subroutine declarations fixed
+# - compile-time output from the input program can be suppressed, so that the
+#   output is just the deparsed code. (a change to in fact)
+# - our() declarations
+# - *all* the known bugs are now listed in the BUGS section
+# - comprehensive test mechanism (TEST -deparse)
 # Todo:
 #  (See also BUGS section at the end of this file)
@@ -4100,9 +4113,22 @@
 =item *
+In fact, the above is a specific instance of a more general problem:
+we can't guarantee to produce BEGIN blocks or C<use> declarations in
+exactly the right place. So if you use a module which affects compilation
+(such as by over-riding keywords, overloading constants or whatever)
+then the output code might not work as intended.
+This is the most serious outstanding problem, and will be very hard
+to fix.
+=item *
 If a keyword is over-ridden, and your program explicitly calls
 the built-in version by using CORE::keyword, the output of B::Deparse
-will not reflect this.
+will not reflect this. If you run the resulting code, it will call
+the over-ridden version rather than the built-in one. (Maybe there
+should be an option to B<always> print keyword calls as C<CORE::name>.)
 =item *

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About