-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathChanges
1970 lines (1639 loc) · 89.7 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
Revision history for HTML::Mason.
** denotes an incompatible change
{{$NEXT}}
1.60 2023-02-11
- Fixed a test failure with Perl blead (5.37.x). Reported by Jim Keenan
and diagnosed by Yves Orton. GH #33.
1.59 2020-05-16
- Moved issues to GH issues and added a note about lack of maintenance.
1.58 2017-10-29
- Redid the release because of some dzil issues. 1.57 might be a little
wonky.
1.57 2017-10-29
[ BUG FIXES ]
- Fix test failures under 5.26.0+ due to "." no longer being in @INC. PR
By Kent Fredric. GH #6. Fixed RT #121443.
1.56 2014-11-14
[ BUG FIXES ]
- Fix a packaging issue with the last release that prevented PAUSE from
indexing some modules in the tarball.
1.55 2014-11-14
[ BUG FIXES ]
- Shut up warnings from recent versions of CGI.pm. Patch by Kevin
Falcone. GitHub PR #1.
1.54 Jan 19, 2014
[ DISTRIBUTION ]
- Remake with gnutar
1.53 Jan 18, 2014
[ DISTRIBUTION ]
- Attempt to fix corrupted tar
1.52 Oct 9, 2013
[ BUG FIXES ]
- Ignore 'Software caused connection abort' errors. RT #49031. Submitted
by Morten Bjoernsvik.
- Sort hash keys to deal with Perl 5.18+ hash randomization. RT
#88708. Submitted by Zefram.
- Fix 'and' precedence with explicit parens. RT #87050. Submitted by
Alex Vandiver.
- Escape each part of substitution, not their
concatenation. github.com/jonswar/perl-HTML-Mason/pull/1. Submitted
by Ricardo Signes.
[ ENHANCEMENTS ]
- Add use_warnings flag, similar to
use_strict. github.com/jonswar/perl-HTML-Mason/pull/4. Submitted by
Aevar Bjarmason.
1.51 May 8, 2013
[ DISTRIBUTION ]
- Fix hardcoded version
[DOCS]
- Add HTML::Mason::FAQ, from old masonhq.com website
1.50 Jul 11, 2012
[ DISTRIBUTION ]
- Switch to Dist::Zilla
- Eliminate HTML docs from distribution, available on web
- Move live Apache tests to author-only
1.49 Feb 27, 2012
[ DOCS ]
- Fixed misspellings in docs. RT #74676. Reported by Salvatore Bonaccorso.
1.48 Feb 3, 2012
[ BUG FIXES ]
- Calling a subcomponent from inside an anonymous component (created via
$interp->make_component) caused an uninitialized value warning. Reported by
Javier Amor Garcia.
1.47 Oct 21, 2011
[ BUG FIXES ]
- Silenced an uninitalized value warning from ApacheHandler with newer
versions of Perl. RT #61900.
1.46 Aug 1, 2011
[ DOCS ]
- Mention Mason 2 in documentation
1.45 Apr 3, 2010
[ BUG FIXES ]
- Silenced some new warnings that appeared when using Mason with Perl
5.12.0+. Reported by Jesse Vincent.
1.44 Jan 4, 2010
[ ENHANCEMENTS ]
- Use Log::Any to log various events, such as the start and end of each
request and each component call.
- Add $m->log, allowing easy logging to a component-specific namespace.
- Fix use of CHI when no data directory is specified.
1.43 Dec 25, 2009
[ BUG FIXES ]
- If a component was located in a patch with spaces, the feature which
referred to errors by their source file line number was broken. This could
cause test failures if the package was downloaded into a path with spaces by
CPAN. Reported by Shawn Moore. RT #53072.
- HTML::Entities is no longer an optional dependency. This fixes some issues
with packaged versions of Mason. Reported by Jens Rehsack. RT #48890.
- $m->flush_buffer is now ignored when inside $m->scomp or $m->content. Patch
by Frédéric Brière, with extra tests from Ruslan Zakirov. RT #38924.
1.42 May 7, 2009
[ BUG FIXES ]
- Fix 10b-cache-chi.t to work with latest version of CHI - expire_if
and ref of cache changed
- Fixed a bug where attempting to load a module that failed to compile
in a Mason component could mask the compilation error. RT #39803.
- Fixed the print method in HTML::Mason::FakeApache. It was including
the object itself in the output. Patch by Martin Petricek. RT
#43035.
1.41 May 5, 2009
[ BUG FIXES ]
- This is a one-fix release to get this module working with the latest
version of Exception::Class (1.27).
1.40 Jul 24, 2008
[ BUG FIXES ]
- Attempting to set multiple cookies when running under CGIHandler
failed. Patch by Andrej Czapszys. RT #33710.
- The Request->alter_superclass() method could cause a segfault
(sometimes) with perl 5.10.0. Reported and patched by Jesse Vincent.
1.39 Jan 30, 2008
[ ENHANCEMENTS ]
- CHI may now be used as the backend for $m->cache as an updated
alternative to Cache::Cache. Among other things, this facilitates
easy use of Cache::FastMmap and memcached for data
caching. Cache::Cache is still the default for now, and is still
listed as a prereq for Mason.
1.38 Dec 20, 2007
[ BUG FIXES ]
- (Hopefully) fixed a problem where the cpan shell thought that Mason
needed mod_perl1 as a prereq when it was trying to require a newish
version of mod_perl2.
- If you called $r->send_http_header() explicitly in a component under
mod_perl 1.x, headers would end up getting sent again once the
component finished executing. Reported by Brett Gardner.
- Component call with content end tags could not span multiple
lines. Fixing this makes it consistent with the opening tag. Patch
by Alex Robinson.
- Includes a possible fix for a test failure in 10-cache.t. This
failure is a problem in the test code, not the Mason core code.
1.37 Sep 6, 2007
[ BUG FIXES ]
- Mason could send the HTTP headers twice under mod_perl 1.x when
making a request for a directory path that was handled by a
dhandler. Reported by David Beaudet.
- If you set the Content-Type header in a handler sub before passing
control to Mason via ApacheHandler, this value was overwritten if
the request was for a directory path.
[ ENHANCEMENTS ]
- Make t/08-ah.t and t/16-live-cgi.t more verbose about why they are
skipping tests when they do so. Based on a patch from
C.J. Adams-Collier.
1.36 Jun 10, 2007
[ BUG FIXES ]
- If a component with content call ending tag appeared inside a
subcomp or method without an opening tag, then the compiler dies
with a Perl error, rather than reporting the error
usefully. Reported by Rich Williams.
- Under mod_perl 2, if decline_dirs was false and a directory was
requested, you got a "Use of uninitialized value" warning from
ApacheHandler in your logs. Reported by Ogden Nefix.
- HTML::Entities is now a prereq. Not requiring it made for various
weird gyrations in the tests that didn't seem to work all the time,
causing various failures. Fixes RT #24827.
- Request::CGIHandler->exec() now returns the return value from
executing the component, just like a normal Request. Reported by
Adrian Irving-Beer.
[ ENHANCEMENTS ]
- Added a new Compiler::ToObject parameter,
named_component_subs. Turning this on makes it possible to profile
components.
- Added a new Request parameter, component_error_handler. This can be
set to change how component compilation and runtime errors are
handled. It can also be set to false to just let errors go
unhandled, which could speed up apps that throw a lot of non-object
exceptions.
1.35 Oct 17, 2006
[ BUG FIXES ]
- Version 1.34 introduced a bug that caused corruption of the callers
stack when a component call with content was used.
- When Mason tried to load a package required for a feature (like
Cache::Cache for $m->cache) and this failed, the error message would
say something like "Can't locate Cache::Cache". However, the real
error could be that Cache::Cache was present, but a module required by
Cache::Cache was not. Now we report the real missing module.
- Some people saw a spurious test failure in 05-request.t. RT #22099.
- Added Module::Build to the build_requires prereqs.
1.34 Oct 14, 2006
[ BUG FIXES ]
- List Module::Build as a build prereq in the Build.PL, so it shows up
in META.yml. Reported by Colin Henein. RT #22097.
- Apache::Request and mod_perl{1,2} will no longer show up as prereqs
in META.yml. Requested by Jesse Vincent.
- Fixed a serious memory leak bug where an object referenced in
arguments to another component was never destroyed. Reported by
Dominic Mitchell.
- Using $m->call_next from a helper component should reset base_comp
to the request_comp. Reported by Mark Elrod.
- The 08-ah.t and 16-live-cgi.t test files could fail with an error
like "Failed to re-load 'Mason::Build'" when Mason was being installed
via the CPANPLUS shell (and maybe other cases). Reported by David
Wheeler.
- Fixed a bug where $m->clear_buffer inside a component called from a
comp_with_content did not clear all buffers.
[ ENHANCEMENTS ]
- Added support for get_server_port() in FakeApache. Patch from Dieter
Piercey.
1.33 May 28, 2006
[ BUG FIXES ]
- If $m->flush_buffer() was called when there was a filter somewhere
in the component chain, the flush did nothing. Task id #596. Reported
by Shane McCarron.
- Added several tests for $m->flush_buffer() and $m->clear_buffer(),
which will hopefully avoid more bugs in this part of the code.
- On Win32, a test failed when Mason tried to use rename to move a dir
into an existing dir. Patch by Shane McCarron. Task id #594 and RT
#17828.
- Trying to load HTML::Mason::ApacheHandler outside of mod_perl caused
an error "like Undefined subroutine &Apache::perl_hook called at
/usr/local/share/perl/5.8.7/HTML/Mason/ApacheHandler.pm line
257". While it will never _run_ outside of mod_perl, it should at
least load.
- Fixed test in 14a-fake_apache.t that failed with CGI.pm >= 3.16.
- The example code in the HTML::Mason::Resolver::Null code was
just wrong. Fixed by John Siracusa.
- Fixed a test failure in 06-compile.t when using bleadperl. RT
#17118.
1.32 January 3, 2006
[ BUG FIXES ]
- Under mod_perl 1.x with error_mode set to output, the headers were
sent after the content when a compilation error occurred. Reported by
Gareth Kirwan. Task id #592.
- URI-escape utf8 characters the same way that CGI::escape and
URI::Escape::uri_escape_utf8 do. Patch by Denis Shaposhnikov.
- On startup Mason creates a file named ".__obj_create_marker" in the
object directory. Under mod_perl, Mason was not chmod'ing the file
when Apache was started as root. This led to permission errors in
environments where the Interp is created anew every request. Task id
#593.
- Treat the return value of component execution as a string in
ApacheHandler. This prevent warnings about comparing the empty string
to a number when a component returns "". Reported by Benjamin Franz.
- Setting a MasonPlugins Apache parameter caused a fatal error. Patch
by David Jack Olrik.
- Calling base_comp() on the Request object inside a plugin's
start_request_hook method caused an infinite recursion in Mason.
Reported by Jesse Vincent.
1.3101 August 23, 2005
[ BUG FIXES ]
- One last fix for CGIHandler. If you provided your own out_method it
was ignoring it and using its own. Reported by David Glasser.
1.31 August 20, 2005
[ BUG FIXES ]
- Fix several regressions in the CGIHandler and FakeApache modules.
Some changes from the stable branch were never merged into the trunk
before 1.30. Reported by Jesse Vincent. Task id #589.
- Under Apache2, if an ApacheHandler object was created during server
startup and the associated Interp object created any files or
directories, Mason would crash when attempting to chown those
files/dirs to the uid/gid that Apache will use after forking. Task
#586.
- The compiler was adding an extra block around a component's
body, which meant that variables declared in the body (in perl lines
or blocks) were not seen in the cleanup section. Task id #587.
- The compiler was also adding "no warnings 'uninitialized'" in this
block, which could hide various errors.
- Hopefully fix $VERSION in ApacheHandler so PAUSE will not be
confused and think we have regressed.
- Turned off some prompts during the module's installation. These
were intended to help new users configure Apache to run Mason
components, but they're probably a bit confusing. Will return in a
future release as a separate script that can be run from the command
line.
1.30 August 11, 2005
[ INCOMPATIBLE CHANGES ]
- ** Under mod_perl2, MasonArgsMethod will default to "CGI", since
libapreq2 is still in development. If you have successfully installed
libapreq2, just set MasonArgsMethod to "mod_perl" to use it.
[ ENHANCEMENTS ]
- Some doc tweaks to clarify that Mason should work out of the box
with both mod_perl 1 and 2.
- Added "use warnings" to all modules and made sure all tests ran
warnings-free.
[ BUG FIXES ]
- Silence a warning when HTML::Mason::ApacheHandler was loaded outside
of mod_perl.
- Support renamed Apache2::Status module.
1.29_02 June 22, 2005
[ ENHANCEMENTS ]
- ** Support for mod_perl-2.00 (mod_perl-1.99 is no longer supported
because of API changes in 2.0RC5).
- Mason recovers more gracefully from an empty or corrupted object
file. Task id #579.
[ BUG FIXES ]
- Fixed bug with content type being reset when decline_dirs=0.
Submitted by Brian Phillips. Task id #584.
- Put "Mason" prefix back in Params.pod. Task id #575.
- Fixed fetch_comp(undef) to not return an empty hash. Task id #578.
- static_source_touch_file did not take effect until after one request
for a top-level component. Reported by Lai Zit Seng. Task id #576.
1.29_01 January 25, 2005
[ INCOMPATIBLE CHANGES ]
- ** Mason now requires Perl 5.6.0 or later. However, because 5.6.0
has so many problems, it cannot be officially supported; we strongly
recommend upgrading to at least 5.6.1.
- ** Mason now requires version 1.24 of mod_perl in the ApacheHandler
module.
- ** The behaviors of $m->flush_buffer and $m->clear_buffer have been
simplified. $m->flush_buffer only acts on the top-level output buffer;
$m->clear_buffer clears all output buffers. Task id #554.
- ** max_code_cache_size is now kept in terms of number of components,
not bytes, and its default value is 'unlimited'.
- ** Components with a <%filter> and a cache_self are no longer cached
in their filtered state. Performance-related code simplifications made
this behavior difficult to maintain. Long term this would be
easier to implement with a cache_self component <%flag>.
- ** All compiler properties are now read-only. If you need to change
compiler properties on a per-request basis, you'll need to create
multiple compiler and interpreter objects.
- ** comp_exists may try to load the designated component, and may
throw an error if it contains a syntax error.
- ** The current_time method, deprecated in 1.1x, has been removed.
- ** The HTML::Mason::Buffer class has been eliminated for performance
reasons. You can use separate components, methods, or subcomponents
and scomp to achieve the same effects as buffer pushes and pops.
[ ENHANCEMENTS ]
- Significantly improved performance in component execution,
especially in static_source mode.
- Added static_source_touch_file, making it much easier to update
a server running in static_source mode.
- Added a plugin architecture. Plugin classes can perform actions at
key points, e.g. before and after each request and each component
call. See HTML::Mason::Plugin for documentation. Task id #24.
Initial implementation by Doug Treder.
- Added the ability to change component root(s) on the fly if the
dynamic_comp_root parameter is turned on. Task id #561. Suggested
by Alex Robinson.
- Added enable_autoflush parameter. When turned off, Mason can
compile components to a more efficient form.
- Changed the </&> tag to allow the starting component name to be
included. e.g. <&| /foo &> ... </& /foo >. Task id #556. Suggested
by Alex Robinson, John Williams, and others.
- Moved the notion of component roots (single and multiple) from the
Resolver to the Interpreter. This improved the performance of multiple
component roots in conjunction with static source mode. Any resolver,
file-based or otherwise, can benefit from component root settings or
choose to ignore them.
- Added the compiler object_id to the object file path, so that
multiple versions of Mason do not collide in the same object
directory. Task id #569.
- Added .obj (or a configurable extension) to object filenames.
Task id #152. Suggested by John Tobey.
- Added $m->clear_and_abort, syntactic sugar for the common idiom
of calling clear_buffer() and then abort(). Task id #505.
- Added an official comment syntax, <% # ... %>, and documented
the various comment markers in the developer's manual. Task id #566.
- Added buffer_preallocate_size parameter, which allows you to
potentially reduce buffer reallocations.
- Augmented the 'could not find component' error message with the
current component root(s). Task id #562.
[ BUG FIXES ]
- Mason now throws an error if the path specified in a component's
'inherit' flag cannot be found. Task id #480.
- Fixed comp_exists to work with any path accepted by comp or
fetch_comp, and fixed fetch_comp to stop throwing errors for certain
bad paths. Task id #572.
- Fixed $m->decline to work from /dhandler. Task id #573. Submitted
by Carl Raiha.
- Using 'next' or 'last' without a loop can no longer corrupt
the component stack. Task id #539.
1.28 November 6, 2004
This version is entirely identical to 1.27 except for a fix to make
CPAN/PAUSE properly index the version number in
HTML::Mason::ApacheHandler. If you already installed 1.27 you do not
need to install this version unless you want to fix the "out of date
modules" report from the CPAN or CPANPLUS shells.
1.27 October 28, 2004
[ ENHANCEMENTS ]
- Full support for Apache2/mod_perl2.
[ BUG FIXES ]
- The request object was not available as $m in the preamble if
in_package was set. Reported by David Wheeler and David Baird. Task
id #538.
- Component with subcomponents or methods were not getting freed when
they were purged from the code cache. Task id #549.
- Component calls (<& &>) starting with a newline were compiled
incorrectly. Reported by Rick Delaney. Task id #564.
- If both a parent request and subrequest had autoflush set, output
from the subrequest wasn't actually flushed. Reported by Tony
Clayton. Task id #550.
- The documentation in HTML::Mason::Tests for the path and call_path
parameters was wrong. Reported by Michael Gray. Task id #528.
- Line numbers in errors were incorrectly reported if the error
happened in code after an <%args>, <%attr>, or <%flags> block.
Reported by Tony Clayton. Task id #552.
- The Apache handler now only sends headers once if make_request()
aborts, such as when a redirect is executed in a
MasonX::Interp::WithCallbacks callback.
1.26 April 5, 2004
[ BUG FIXES ]
- The fix to make CGIHandler support flush_buffer and autoflush caused
it to not rethrow any exceptions created during the request. If
error_mode was set to 'fatal', then an error would simply cause no
output to be generated. Task id #531.
- A comment in the last line of a component call with content caused a
syntax error in the compiled component. Reported by Todd Goldenbaum.
Task id #530.
- The various request handling methods in CGIHandler once again return
the value of calling the Interp object's exec() method.
- CGIHandler now explicitly handles redirect statuses when an abort
exception is thrown from the Interp object's exec() method. This
fixes some problems when this module was used with David Wheeler's
MasonX::Interp::WithCallbacks module.
- Using a <%shared> block when "in_package" was set to something other
than HTML::Mason::Commands led to an error like "Can't call method
"call_dynamic" on an undefined value". Reported by David Wheeler.
Task id #535.
1.25 December 12, 2003
[ BUG FIXES ]
- CGIHandler did not support $m->flush_buffer or autoflush. Reported
by Shane McCarron.
- Every line in the error stacktrace had a 'g' appended to it in HTML
error mode.
- The HTML error display of the stacktrace was not filtering out some
packages that it should have, so there were extra lines that made it
harder to find the real error.
- Several FakeApache methods were broken: path_info, uri, and
the_request. Reported by Matthias F. Brandstetter.
[ ENHANCEMENTS ]
- The CGIHandler request object now supports the autoflush parameter.
1.24 November 12, 2003
[ BUG FIXES ]
- Two tests in 04-misc.t, #9 and #10, failed if Params::Validate 0.66+
was installed. This happened because an error message given by
Params::Validate changed slightly, and was not a problem in the Mason
core code.
- The Component object method attr_if_exists returned 0 when the
attribute didn't exist, instead of undef as is documented. Reported
by Chris Reinhardt.
- The HTML::Mason::Resolver::File glob_path method, which is used for
the preloads feature, now uses File::Glob::bsd_glob when run with Perl
5.6.0+. This function properly handles spaces in filenames, which are
legal on most systems, and common on Win32. Implemented by Autrijus
Tang.
- The Admin guide erroneously said that the default component root
when running Mason outside a web environment was "/". It is the
current working directory. Reported by Patrick Kane.
1.23 September 8, 2003
[ ENHANCEMENTS ]
- Lots of enhancements to the Apache.pm emulation when using the
CGIHandler module. Implemented by David Wheeler.
- The fact that autohandlers or dhandlers can be turned off by setting
autohandler_name or dhandler_name to "" has now been documented, and
we explicitly check for this in the code. Task id #499.
- The ApacheHandler module now handles certain exceptions
(TopLevelNotFound, Abort, Decline) thrown from the Interp class's
make_request method by returning the desired error code. With the
default Mason Interp & Request classes, this will never happen.
However, subclasses may want to throw exceptions when constructing a
request. Implemented by David Wheeler.
[ BUG FIXES ]
- If any code type parameters were set in the httpd.conf file, Mason
died trying to read them. This bug was introduced in version 1.20.
Task id #496. Reported by David Wheeler.
- $m->caller, $m->callers and $m->caller_args now return undef or an
empty list instead of crashing when the specified stack level does not
exist. Task id #495. Reported by Bernhard Schmalhofer.
- The busy_lock option to $m->cache->get did not accept did not accept
string values for durations, like "4m". Task id #484. Reported by
Igor Muratov.
- When generating the HTML error message page, we now only use basic
HTML escaping. This fixes two problems. One is that if
HTML::Entities is not installed, using the "|h" escape flag in the
error display component causes an endless loop. The other is that the
"|h" flag can mangle non-Latin-1 characters. Task ids #497 and #494.
Reported by Harmen and Oleg Bartunov respectively.
- If a component generated output, then called another component via
$m->scomp, and that other component attempted to clear the buffer and
then abort, any output generated before the call to $m->scomp was
still sent to the client. This broke calling $m->redirect inside an
$m->scomp call. Task id #498. Reported by Kim Alexander Hansen.
1.22 July 14, 2003
[ ENHANCEMENTS ]
- Added $m->has_content to check for content without evaluating it.
- Comments are now allowed on separate lines inside <%attr> and
<%flags> blocks. Task id #475.
- $m->subexec and $m->make_subrequest now accept relative paths which
are interpreted relative to the current component directory, like
$m->comp.
- Documented potential problems if call to $m->redirect is trapped in
an eval block, and then output is generated before the exception is
rethrown. Task id #477.
[ BUG FIXES ]
- If a component with a filter section called abort, the filter was
run twice. Task id #473.
- If an exception was thrown when creating a request, memory was
leaked. This can happen when the top-level component cannot be
found (e.g. 404) or if there is an error in compiling the top-level
component. Task id #478. Reported by Doug Treder.
- Removed the use of alarm() and SIG{ALRM} to trap rare infinite loops
inside the compilation of components. It interfered with Mason
environments that use alarm() for their own purposes, and the
associated test would crash in certain Perl environments. If you find
that Mason sometimes enters an infinite loop, see the
"Hanging Processes: Detection and Diagnostics" section of the mod_perl
guide for hints on diagnosing the problem. Task id #472.
- Mason allowed a component to define two subcomponents or methods
with the same name. Task id #476. Reported by John Michael Mars.
1.21 June 4, 2003
[ INCOMPATIBLE CHANGES ]
- ** The semantics of @_ for components now match Perl subroutines: @_
contains aliases to the caller's arguments, instead of copies. For
example, if a component updates $_[0], the corresponding argument is
updated (or an error occurs if it is not updateable). The only users
that will notice this are those that update elements of @_ in
components and do not expect those changes to affect the caller. If
you have any doubts, grep your component tree for '\$_\[' and look for
assignment statements.
[ ENHANCEMENTS ]
- Cache the result of taint_is_on() for performance.
- Mason was copying arguments several times for a request, and several
more times for each component call. The unnecessary copies have been
eliminated. As part of eliminating these copies, a new compiler
parameter has been added, "define_args_hash". The default setting,
"auto", should work with all existing Mason components. See the
HTML::Mason::Compiler::ToObject docs for details. Task id #464.
Suggested by Doug Treder.
- Added more details about subclassing the compiler to the Subclassing
documentation.
- There is now a compiler parameter called "use_source_line_numbers",
which can be used to turn off line numbering based on the source file.
This can be useful when single stepping a component through the
debugger. Task id #461.
[ BUG FIXES ]
- Fixed a serious error in which a Compiler that was used on a
component containing certain kinds of syntax errors would claim that
any future components also contained syntax errors. Task id #467.
- Now assigning runtime properties (such as interp) to method
component objects as well as subcomponent objects. Task id #462.
- Fixed the HTML error display. Errors were not being properly
HTML-escaped. Task id #468. Reported by Jeremy Blain.
- A bad interaction between the XS version of Params::Validate, Perl
5.00503 and taint mode has been "fixed" by requiring Params::Validate
0.59, where the problem is fixed. Task id #470.
- The test suite now runs the taint mode tests with earlier versions
of Perl. Task id #471.
- The ApacheHandler module would go into an infinite memory-eating
loop when run in taint mode with Perl 5.6.1. Task id #469. Reported
by William McKee.
1.20 May 1, 2003 (May Day)
[ ENHANCEMENTS ]
- Added an $m->notes() method, which is similar to $r->pnotes() but
may be used outside a mod_perl environment. Task id #449.
- Mason will now only convert non-reference exceptions to
HTML::Mason::Exception objects, so it should cooperate better with
modules like Error.pm. Task id #446.
- Added more documentation on Mason's error handling and exception
system. Task id #446.
- If Mason was configured via the Apache httpd.conf file, it could in
many cases be quite a bit slower than configuration via a custom
handler subroutine. Now configuration via the httpd.conf is much
faster, and is only about 5% slower than a custom handler subroutine.
Reported by Jeremy Blain.
- Mason's test harness now gives verbose output when the TEST_VERBOSE
environment variable is true. This eliminates the need for setting
MASON_VERBOSE.
- ** It is now an error to have a subcomponent and method with the
same name in a single component.
[ BUG FIXES ]
- Mason would die if asked to compile a component that evaluates
to a false value. Task id #444. Reported by David Wheeler.
- Mason now gives a better error message if you try to call a
component's methods or subcomponents from its <%shared> block. Task
id #448. Reported by Randy Harmon.
- If in_package was set, Mason would die if output was generated after
a subrequest. Task id #453. Reported by David R. Baird.
- If Perl's print() was called after a subrequest, Mason would die
when run with any Perl before 5.8.0. Task id #458.
- If a component called $m->cache_self, and then $m->decline, no
output would be generated. Task id #454. Patch by Vadim Ustiansky.
1.19 March 3, 2003
[ BUG FIXES ]
- Fixed a very nasty bug that could cause subcomponents or methods
from one component to show up in another components. Task id #443 in
todo list.
- If the closing tag of a <%flags>, <%attr>, or <%args> block
contained upper case characters, the component would not be parsed
properly. Reported by Chris Snyder. Task id #440 in
todo list.
- Providing a Resolver object directly to the ApacheHandler
constructor caused a fatal error. Reported by Kwindla Kramer. Task
id #441 in todo list.
1.18 January 24, 2003
[ BUG FIXES ]
- Require Exception::Class 1.09. Version 1.08 has a bug that causes
problems with Mason when used with any Perl earlier than 5.8.0.
- Fix a bug in the lexer code that caused Mason to not work with Perl
5.00503 at all.
1.17 January 17, 2003
[ ENHANCEMENTS ]
- Added "REQUEST:" as a component specifier for method comp calls,
similar to "SELF:" and "PARENT:". "REQUEST:" is short-hand for
$m->request_comp. Suggested by Manuel Capinha, among others.
- Added $m->call_self. This was present in Mason pre-1.10, and has
been added back per Jon Swartz's request.
- Added $comp->attributes, similar to $comp->methods. This just
returns attributes for a given component object. It doesn't return
attributes inherited from a parent. Suggested by Matti Makitalo.
[ BUG FIXES ]
- ** When $m->cache_self was used for a component with a filter block,
the output would be cached _before_ filtering, and filtered every time
it was retrieved from the cache. This has been fixed, and the
documentation now specifies that the filtered output is cached.
- Fixed failure of 12-taint.t #7 on Win32 boxes. Reported by Randy
Kobes.
- Without HTML::Entities installed, 13-errors.t #7 failed. Reported
by Sam Kington.
- $m->file did not handle relative paths properly when called from a
subcomponent or method. Reported by Chris Hutchinson.
- If $m->abort was called in the shared block of a component that had
a filter, then a fatal error occured. Reported by Chris Pudney.
- Mason was not cooperating with Apache::Filter, and attempts to
filter Mason's output did not work. Fixing this also requires
Apache::Filter 1.021, if you are using Apache::Request to handling
incoming arguments. Reported by by Manuel Capinha.
- Mason assumed that if Scalar::Util loaded without errors, it had a
weaken() subroutine. However, Scalar::Util provides a pure Perl
implementation that does not include this subroutine. Now we check
for this subroutine explicitly. Reported by Autrijus Tang.
- Some code constructs, such as qw() lists, would end up being turned
into invalid code during component compilation. Reported by Robert
Landrum.
- Subclassing a subclass of HTML::Mason::Request broke when the class
between HTML::Mason::Request and your own class called
alter_superclass.
- Under mod_perl 2.0, when ApacheHandler could't resolve a filename to
a component, it would die instead of returning a not found status.
[ INCOMPATIBLE CHANGES ]
- ** Removed the long deprecated and undocumented $comp->parent_comp
method. Use $comp->owner instead.
1.16 December 13, 2002
[ ENHANCEMENTS ]
- Documented behavior of $m->flush_buffer when a filter is present.
- Turned off "nowrap" for error message on HTML error page. No more
horizontal scrolling!
- Substantially rewrote portions of the Admin Guide, in order to
improve and clarify the portions related to configuring and
customizing Mason under mod_perl.
- Added back "raw error" on HTML error page.
- Replaced FilesMatch with LocationMatch in docs and FAQ, because
using FilesMatch means you can't use dhandlers.
- Reduced memory usage when compiling large components. Memory usage
for smaller components hasn't changed much, but they weren't really a
problem in the first place.
- Added a cgi_request method to the CGIHandler::Request object, which
parallels the apache_req method offered by the ApacheHandler::Request
object.
[ BUG FIXES ]
- When using the code cache within an Interp, a circular reference was
created which prevented the Interp object from ever being destroyed.
With Perl 5.6.0+, this will be automatically prevented by using weak
references as needed. With Perl 5.00503, you will need to call the
new Interp->flush_code_cache method in order to break the circular
reference. This bug could cause memory leaks with code that created
new Interp objects over time, though most uses of Mason do not do
this. Reported by Kate Porter.
- Fixed bad parsing of <% $foo || 50 %>. Mason was interpreting this
as an escape flag. Escape flags now much match /^[[:alpha:]_]\w+/ and
Mason specifically looks for || in a substitution as well. Reported
by Kwindla Kramer.
- If a dhandler one subdirectory down (like /foo/dhandler) called
$m->decline, Mason threw a bogus exception. Fixed by Harmen.
- Running the test suite caused an error in the shell on Win32 with
newer versions of MakeMaker. Reported by Murat Unalan. (We _think_
this is fixed but we'd like confirmation from a Win32 user).
- It was not possible to set the data_cache_defaults parameter from
the httpd.conf file. Now it is.
- Mason was using Apache::Request->new instead of
Apache::Request->instance. This meant that if you had a handler that
ran earlier (like a TransHandler) and that handler created an
Apache::Request object, then the one Mason created would be missing
any POST arguments. Reported by Ray Zimmerman.
- Several different places in the docs said that Cache::Cache accepts
a username option, but there is no such thing.
- alter_superclass didn't work with CGIHandler because CGIHandler
didn't define a $VERSION variable. Reported by Nadine and Harry
Laxen.
- Made CGIHandler merge together POST and query string arguments in
order to be consistent with ApacheHandler. Reported by Nadine and Harry
Laxen.
- The CGIHandler module was overriding any out_method provided by the
user. Reported by Nadine and Harry Laxen.
1.15 October 14, 2002
[ BUG FIXES ]
- Fixed a number of problems with filters:
-- They didn't see changes made to %ARGS (they were seeing a copy).
-- They couldn't see any variables declared in <%args> blocks.
-- The presence of a filter caused a call to $m->flush_buffer,
breaking redirects.
- Added a number of tests for filters (*cough*).
- Fixed broken links and other bugs in the POD and HTML versions of
the docs.
- Fixed test failures when running as root. These failures were not
reflective of bugs in Mason, simply problems in the tests or test
setup. Now we skip the tests for end user installs (we still run them
during development, never fear).
- HTML::Mason::Request contained code that caused an error when using
the CPAN shell's "r" command.
1.14 October 7, 2002
[ BACKWARDS COMPATIBILITY ]
- Added compatibility layer for 1.0x cache API. It is now possible to
use $m->cache and $m->cache_self in the old way by setting the
data_cache_api parameter to '1.0'.
- Added back $comp->create_time, which was renamed as $comp->load_time
in 1.09_02, as a deprecated method.
- Added back $interp->time and $m->current_time, which were removed in
1.09_01, as deprecated methods.
[ ENHANCEMENTS ]
- Implemented the long requested user-defined escapes feature. It is
now possible to define your own escape flags, as well as overriding
Mason's own 'h' and 'u' flags.
- Implemented expire_if and busy_lock options in new $m->cache->get
API. These retain the essence of the 1.0x options although both
work a little differently.
- Added new module to implement caching extensions,
HTML::Mason::Cache::BaseCache, with accompanying documentation.
- Enhanced Params.pod with TOC and full descriptions of all
parameters. Standardized rest of documentation to link to Params.pod
when referring to a parameter.
- When a component path is not found, but that path matches a file on
disk, we now print an extra warning, because this indicates that the
user does not understand the distinction between component paths and
filesystem paths.
- The Request object's redirect() method now accepts an optional
additional argument, allowing users to use a status code other than
302 for the redirect.
- Mason should now work on a box with a fresh mod_perl 2/Apache 2
install. Previously, Mason unconditionally tried to load
Apache::Status, which comes with mod_perl 1.x, but not (yet?) with
mod_perl 2.
[ BUG FIXES ]
- Installation was failing when Exception::Class wasn't installed.
- Calling <%def> subcomponents no longer changes base_comp, which is
important in autohandlers. (reported by Ian Robertson)
- The documentation incorrectly indicated that you could create an
ApacheHandler object during server startup without providing a
component root. This will also shown incorrectly in the sample
handler.pl in the eg/ directory.
- Reduced Mason's memory usage when compiling and serving components.
This is particularly noticeable with very large components (1-2MB or
greater). Work on this will continue for future versions. (reported
by Todd Holbrook)
- %ARGS and <%shared> variables could not be accessed from <%filter>.
(reported by Adam Roth)
- Switch.pm did not work in file-based components. (reported by Gert
Thiel)
- use_strict could not be turned off. (reported by Viacheslav
Voytovich)
- $m->clear_buffer (and $m->redirect) did not work inside a component
call with content. (reported by Manuel Capinha)
- Some tests were failing on Windows, because they assumed Unix style
filesystem paths. This was a problem with the tests, not the core
code, but still worth fixing. (reported by Adam Rinehart).
- $m->caller() was inadvertently left out of the documentation - fixed.
- Fixed a small documentation error about what kinds of things are
valid keys in <%flags> and <%attr> blocks.
- Configuring multiple component roots via the httpd.conf file failed
silently (as opposed to releases 1.10 - 1.12, where this failed with
an error).