Thanks for asking. I'm a zelot on timely destruction, and
have been meaning to lobby for not dropping it in Perl
6!
Cool, then. Give me examples of things that'll break without timely
finalization!
If there is a performance issue, at least make it optional.
Ah, therein lies the rub. You can't make something like this
optional. It's either there, with full support for it, or it's not
there. There is no optional here. (If there was, I'd not be asking
this question)
Unfortunately none of the things you've presented quite do
it. Filehandles will be cleaned up reasonably quickly. Windows
definitely ought not go missing without some active action on the
part of a program. And "after" semantics on objects when they get
destroyed, well, you get that. It's just potentially indeterminate
when it happens. (Which, I realize, is the issue)
I think if the compiler could emit code that says "exit
scope; if referece count of the variable reached zero, then call
function" then it can take it from there.
There are no reference counts in parrot, and thus none in perl 6. If
there were this wouldn't be an issue.