A pervasive problem with any big Mason installation is that people
will define named subroutines in Mason files, that's not a problem
per-se, but is a big problem when two files define a subroutine under
the same name.

Then when you render the first page you define that subroutine, the
second page will clobber it, and when you render the first page again
you'll get the subroutine from the first page. This results in all
sorts of interesting heisenbugs.

I wrote some code for use outside of Mason to detect these cases:
https://gist.github.com/avar/8809976

It's already turning up a lot of interesting issues in our production
code. I wonder if this would be useful for others as a native feature
in Mason. I.e. something turned on via a flag for emitting warnings
between page executions.

I've had some issues that I haven't tracked down with
copy_of_code_symbols interacting with constants created by "use
constants". As some of you may know using that module doesn't actually
create the equivalent of "sub CONST () { $value }", instead it creates
a reference in the symbol table to a read-only scalar at compile-time,
which perl then compiles into the optree.

That's all well and good, but for some reason these sometimes upgrade
to symbols that have {CODE} slots, I haven't tracked that down yet,
maybe someone doing \&CONST somewhere is causing that.

------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
Mason-users mailing list
Mason-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mason-users

Reply via email to