Avoiding language mode/version combinatorics (was: Simple tail calls)

# Peter Michaux (17 years ago)

2008/12/6 Mark S. Miller <erights at google.com>:

On Sat, Dec 6, 2008 at 2:25 PM, Michael Day <mikeday at yeslogic.com> wrote:

function f() { with (o) return g(); }

Okay, so the with statement modifies the scope chain, which must be undone after the call to g(). Off the top of my head, I would say that this should still be a tail call unless enough implementers complain :)

By the time Harmony starts firming up, depending on developer uptake of ES3.1's strict mode, we may decide that Harmony should be a successor only of ES3.1-strict. Since both strict and Harmony will require opt-in, ES3.1-nonstrict would remain for any code that does not opt-in.

Since language design is hard, and since ES3.1-strict is a less bizarre starting point for language design, I hope it turns out that way. For example, since ES3.1-strict doesn't have "with", we could leave "with" out of Harmony and dodge your question ;). We should wait until we get more data about receptivity to ES3.1's strict mode before making any irrevocable decisions. But let's keep this possibility in mind in our Harmony discussions.

Very appealing idea for harmony.

Peter