On Fri, Feb 27, 2015 at 2:43 AM, Michael Hablich <habl...@chromium.org>
wrote:

> Hey v8-users,
>
> we're making big changes to the api (again).  We've found that our api makes
> it extremely difficult to write exception safe code.
>
> *Reference issue*
> https://code.google.com/p/v8/issues/detail?id=3929
>
> *Further description*
> Consider the following:
>
> Local<Value> x = some_value;
> s = x.ToString();
> // in the current context, ToString might throw an exception, run out
> of stack space, whatever...
> // if that happens we just return an empty Local<String>
> s->Anything() // Crash!
>
> There's too much implicit stuff happening here, and it's bad.  It's especially
> bad if you use threads and rely on TerminateExecution(), which causes
> lots of v8 function to return empty handles unexpectedly.
>
> To fix this, we will begin adding functions whose signature makes it 
> impossible
> to make this mistake and we will deprecate and eventually remove all old
> functions.  The new functions will in general come in
> two flavours:
>
> functions like:
> Local<String> ToString(Isolate*);
>
> will become:
> MaybeLocal<String> ToString(Local<Context>);
>
> and functions like:
> double NumberValue();
>
> will become:
> Maybe<bool> NumberValue(Local<Context>);
>
> The Maybe values ensure at compilation time that the value returned is checked
> by the embedder, and the explicit Context makes it clear that a context
> is actually required and that javascript may be executed in that context.
>

I'm curious about this bit of the design: why was it decided to add an
argument here rather than require a Context to be entered (via
Context::Scope)?

Rather late to the discussion, I know. Apologies

- Adam


> *Timeline*
> We will add the new API parts gradually to the codebase. When this is
> finished there will be approx. 6 weeks of time where the old and the new
> API will exist side-by-side. This is a good time to make the adjustments in
> your embedding code. After this period the old API will get removed.
>
> We apologize in advance for any trouble this may cause, but we're positive
> that this change will reduce crash rates for practically all v8 embedders.
>
> Cheers,
> Michael Hablich
>
> --
> --
> v8-users mailing list
> v8-users@googlegroups.com
> http://groups.google.com/group/v8-users
> ---
> You received this message because you are subscribed to the Google Groups
> "v8-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to v8-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to