The latest canary update uncovered a few new deprecations from V8.
~I didn't check, but those can probably already be fixed on master.~
[ ] v8::Message::GetLineNumber() in node.cc:
Maybe<int> GetLineNumber(Local<Context> context)../src/node.cc:1273:40: warning: βint v8::Message::GetLineNumber() constβ is deprecated:
Use maybe version [-Wdeprecated-declarations]
int linenum = message->GetLineNumber();
^
[ ] v8::Message::GetSourceLine() in node.cc:
MaybeLocal<String> GetSourceLine(Local<Context> context)../src/node.cc:1275:69: warning: βv8::Local<v8::String> v8::Message::GetSourceLine() constβ is deprecated: Use maybe version [-Wdeprecated-declarations]
node::Utf8Value sourceline(env->isolate(), message->GetSourceLine());
^
[ ] v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>) in node.cc, node_api.cc, node_buffer.cc, node_v8.cc and node_crypto.cc:
Utf8Value(Isolate* isolate, Local<v8::Value> obj)../src/node.cc:1423:35: warning: βv8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
String::Utf8Value message(er);
^
../src/node_api.cc:3323:63: warning:
βv8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
*v8::String::Utf8Value(async_resource_name)),
^
../src/node_buffer.cc:990:42: warning:
βv8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
String::Utf8Value needle_value(needle);
^
../src/node_v8.cc:117:34: warning: βv8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
String::Utf8Value flags(args[0]);
^
../src/node_crypto.cc:4176:21: warning:
βv8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
String::Utf8Value passphrase(args[3]);
^~~~~~~~~~
[ ] v8::Script::Run() in node.cc and node_contextify.cc:
MaybeLocal<Value> Run(Local<Context> context)../src/node.cc:1475:54: warning: βv8::Local<v8::Value> v8::Script::Run()β is deprecated: Use maybe version [-Wdeprecated-declarations]
Local<Value> result = script.ToLocalChecked()->Run();
^
../src/node_contextify.cc:1079:28: warning: βv8::Local<v8::Value> v8::Script::Run()β is deprecated: Use maybe version [-Wdeprecated-declarations]
result = script->Run();
^
../src/node_contextify.cc:1082:28: warning: βv8::Local<v8::Value> v8::Script::Run()β is deprecated: Use maybe version [-Wdeprecated-declarations]
result = script->Run();
^
../src/node_contextify.cc:1085:28: warning: βv8::Local<v8::Value> v8::Script::Run()β is deprecated: Use maybe version [-Wdeprecated-declarations]
result = script->Run();
^
../src/node_contextify.cc:1087:28: warning: βv8::Local<v8::Value> v8::Script::Run()β is deprecated: Use maybe version [-Wdeprecated-declarations]
result = script->Run();
^
[ ] v8::String::Value::Value(v8::Local<v8::Value>) in node_buffer.cc, string_bytes.cc and inspector_js_api.cc:
Value(Isolate* isolate, Local<v8::Value> obj)../src/node_buffer.cc:957:38: warning: βv8::String::Value::Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
String::Value needle_value(needle);
^
../src/string_bytes.cc:372:32: warning: βv8::String::Value::Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
String::Value value(str);
^
../src/string_bytes.cc:383:32: warning: βv8::String::Value::Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
String::Value value(str);
^
../src/string_bytes.cc:482:30: warning: βv8::String::Value::Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
String::Value value(str);
^
../src/inspector_js_api.cc:241:42: warning: βv8::String::Value::Value(v8::Local<v8::Value>)β is deprecated: Use Isolate version [-Wdeprecated-declarations]
String::Value task_name_value(task_name);
^
Edit: Alternative APIs are all available on master. I added the signatures of the methods that are supposed to be used in the OP.
We are actually actively working on moving stuff marked as V8_DEPRECATE_SOON to V8_DEPRECATED.
@hashseed good to know! I'll update this issue with the new deprecations as they arrive.
This is the tracking bug for that effort.
If this is still open may I know if I can take it up.
If this is still open may I know if I can take it up.
Go for it. If you have issues you can comment here.
Are those listed above 1:1 replacements?
From:
v8::Message::GetLineNumber()
To:
v8::Message::Maybe
@helmutgranda They should be.
FWIW I have put up an initial version about how to migrate the deprecated APIs in the C++ style guide quite some time ago, just have not found the time to polish it and open a PR, but here it is:
https://github.com/joyeecheung/node/blob/v8-maybe-doc/CPP_STYLE_GUIDE.md#use-maybe-version-of-v8-apis
Since there are some maybes that should be handled with care (proper cleanups), I am not quite sure how many of them are actually good first contributions (In my understanding good first contributions are not PRs that potentially need more than 3 rounds of reviews, those should be uh..probably good second contributions or something for people who are already familiar with the PR process).
@targos @gibfahn Can I pick this up? I think it'll be a good first issue :)
@wuweiweiwu if agreed please feel free to lately I've been held up with some events preparation.
@joyeecheung / @targos are tests necessary for these changes? If so, how to go about writing them?
Most helpful comment
This is the tracking bug for that effort.