WASI syscall API built atop libuv
boson-attic/faas-knative-eventing-example 0
An example of using Knative Eventing with faas runtimes
OpenShift S2I builder images for Node.js
Ceph is a distributed object, block, and file storage platform
push eventdanbev/uvwasi
commit sha be745f51f030a343c6ca727437b26fb46a15a85b
add android build to CI This commit adds a CI task to build the project on Android.
commit sha 527f21dd23a9a0f3ba9f97b87a412a9992465827
add uvwasi_options_init() This commit adds a convenience function, uvwasi_options_init(), to initialize uvwasi_options_t structs to default values.
commit sha 9e752170fd6dec2205ee9ad9997528dd9baee183
poll_oneoff: add missing uv_run() in cleanup This allows ASAN to pass.
commit sha 9e32d30d60efc3f4324fbb2d7e8e6dbf7e0f0797
test: add simple poll_oneoff() test
commit sha f2075155f74593839bedc7bf688ff79fe119349e
update to libuv 1.38.0
commit sha c1063a1c6b55d9f75bc1d05c6e9621ec8fefbcc4
implement filestat_set_times() functions This commit adds proper implementations for uvwasi_fd_filestat_set_times() and uvwasi_path_filestat_set_times(), as well as tests.
commit sha 2bd269bd9f6780493682818a2bc27b8f6cdecd13
update to libuv 1.38.1
commit sha d3fe61d596873e6b81098ef91a2c881ca9773a4d
rename DEBUG() macro to UVWASI_DEBUG() This commit renames the DEBUG() macro to prevent name collisions. Fixes: https://github.com/cjihrig/uvwasi/issues/142
commit sha f2c8ca1fa61199d2230e414b0715435452dd6da4
build: add -Wall -Werror to CI build This commit adds build flags to CMake to enable all warnings and to turn warnings into errors.
push time in 6 days
pull request commentcjihrig/uvwasi
build: add -Wall -Werror to CI build
I’m on PTO at the moment and won’t be back for another 3 weeks.
But I still don’t have a windows env to try getting the same thing working on windows.
Perhaps this PR could be merged without that as it would at least fail on warnings for Unix environments? If not feel free to close this and I might revisit I when I get back.
lör 25 juli 2020 kl. 17:06 skrev Colin Ihrig [email protected]:
@danbev https://github.com/danbev are you still planning to work on this?
— You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/cjihrig/uvwasi/pull/138#issuecomment-663865750, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADJRX4IOEE2VZ54F3LVPMTR5LYIZANCNFSM4NHOTH7Q .
comment created time in 10 days
Pull request review commentnodejs/node
bootstrap: include bootstrapped Environment in builtin snapshot
void Environment::RemoveUnmanagedFd(int fd) { } } +void Environment::ForEachBaseObject(BaseObjectIterator iterator) {+ size_t i = 0;+ for (const auto& hook : cleanup_hooks_) {+ BaseObject* obj = hook.GetBaseObject();+ if (obj != nullptr) iterator(i, obj);+ i++;+ }+}++void PrintBaseObject(size_t i, BaseObject* obj) {+ std::cout << "#" << i << " " << obj << ": " << obj->MemoryInfoName() << "\n";+}++void Environment::PrintAllBaseObjects() {+ std::cout << "BaseObjects\n";+ ForEachBaseObject(PrintBaseObject);+}++EnvSerializeInfo Environment::Serialize(SnapshotCreator* creator) {+ EnvSerializeInfo info;+ Local<Context> ctx = context();++ info.async_hooks = async_hooks_.Serialize(ctx, creator);+ info.immediate_info = immediate_info_.Serialize(ctx, creator);+ info.tick_info = tick_info_.Serialize(ctx, creator);+ info.performance_state = performance_state_->Serialize(ctx, creator);+ info.stream_base_state = stream_base_state_.Serialize(ctx, creator);+ info.should_abort_on_uncaught_toggle =+ should_abort_on_uncaught_toggle_.Serialize(ctx, creator);++ size_t id = 0;+#define V(PropertyName, TypeName) \+ do { \+ Local<TypeName> field = PropertyName(); \+ if (!field.IsEmpty()) { \+ size_t index = creator->AddData(field); \+ info.persistent_templates.push_back({#PropertyName, id, index}); \+ } \+ id++; \+ } while (0);+ ENVIRONMENT_STRONG_PERSISTENT_TEMPLATES(V)+#undef V++ id = 0;+#define V(PropertyName, TypeName) \+ do { \+ Local<TypeName> field = PropertyName(); \+ if (!field.IsEmpty()) { \+ size_t index = creator->AddData(ctx, field); \+ info.persistent_values.push_back({#PropertyName, id, index}); \+ } \+ id++; \+ } while (0);+ ENVIRONMENT_STRONG_PERSISTENT_VALUES(V)+#undef V++ info.context = creator->AddData(ctx, context());+ return info;+}++std::ostream& operator<<(std::ostream& output,+ const std::vector<PropInfo>& vec) {+ output << "{\n";+ for (const auto& info : vec) {+ output << " { \"" << info.name << "\", " << std::to_string(info.id) << ", "+ << std::to_string(info.index) << " },\n";+ }+ output << "}";+ return output;+}++std::ostream& operator<<(std::ostream& output, const EnvSerializeInfo& i) {+ output << "{\n"+ << "// -- async_hooks begins --\n"+ << i.async_hooks << ",\n"+ << "// -- async_hooks begins --\n"+ << i.tick_info << ", // tick_info\n"+ << i.immediate_info << ", // immediate_info\n"+ << "// -- performance_state begins --\n"+ << i.performance_state << ",\n"+ << "// -- performance_state ends --\n"+ << i.stream_base_state << ", // stream_base_state\n"+ << i.should_abort_on_uncaught_toggle+ << ", // should_abort_on_uncaught_toggle\n"+ << "// -- persistent_templates begins --\n"+ << i.persistent_templates << ",\n"+ << "// persistent_templates ends --\n"+ << "// -- persistent_values begins --\n"+ << i.persistent_values << ",\n"+ << "// -- persistent_values ends --\n"+ << i.context << ", // context\n"+ << "}";+ return output;+}++void Environment::DeserializeProperties(const EnvSerializeInfo* info) {+ Local<Context> ctx = context();++ async_hooks_.Deserialize(ctx);+ immediate_info_.Deserialize(ctx);+ tick_info_.Deserialize(ctx);+ performance_state_->Deserialize(ctx);+ stream_base_state_.Deserialize(ctx);+ should_abort_on_uncaught_toggle_.Deserialize(ctx);++ if (enabled_debug_list_.enabled(DebugCategory::MKSNAPSHOT)) {+ fprintf(stderr, "deserializing...\n");+ std::cerr << *info << "\n";+ }++ const std::vector<PropInfo>& templates = info->persistent_templates;+ size_t i = 0; // index to the array+ size_t id = 0;+#define V(PropertyName, TypeName) \+ do { \+ if (templates.size() > i && id == templates[i].id) { \+ const PropInfo& d = templates[i]; \+ Debug(this, \+ DebugCategory::MKSNAPSHOT, \+ "deserializing %s template, %" PRIu64 "/%" PRIu64 " (#%" PRIu64 \+ ") \n", \+ d.name.c_str(), \+ static_cast<uint64_t>(i), \+ static_cast<uint64_t>(templates.size()), \+ static_cast<uint64_t>(id)); \+ DCHECK_EQ(d.name, #PropertyName); \+ MaybeLocal<TypeName> field = \+ isolate_->GetDataFromSnapshotOnce<TypeName>(d.index); \+ if (field.IsEmpty()) { \+ fprintf(stderr, \+ "Failed to deserialize environment template " #PropertyName \+ "\n"); \+ } \+ set_##PropertyName(field.ToLocalChecked()); \+ i++; \+ } \+ } while (0); \+ id++;+ ENVIRONMENT_STRONG_PERSISTENT_TEMPLATES(V);+#undef V++ i = 0; // index to the array+ id = 0;+ const std::vector<PropInfo>& values = info->persistent_values;+#define V(PropertyName, TypeName) \+ do { \+ if (values.size() > i && id == values[i].id) { \+ const PropInfo& d = values[i]; \+ Debug(this, \+ DebugCategory::MKSNAPSHOT, \+ "deserializing %s value, %" PRIu64 "/%" PRIu64 " (#%" PRIu64 \+ ") \n", \+ d.name.c_str(), \+ static_cast<uint64_t>(i), \+ static_cast<uint64_t>(values.size()), \+ static_cast<uint64_t>(id)); \+ DCHECK_EQ(values[i].name, #PropertyName); \+ MaybeLocal<TypeName> field = \+ ctx->GetDataFromSnapshotOnce<TypeName>(values[i++].index); \+ if (field.IsEmpty()) { \
Perhaps this could use ToLocal to avoid the following ToLocalChecked() call?
comment created time in 19 days
Pull request review commentnodejs/node
bootstrap: include bootstrapped Environment in builtin snapshot
void Environment::RemoveUnmanagedFd(int fd) { } } +void Environment::ForEachBaseObject(BaseObjectIterator iterator) {+ size_t i = 0;+ for (const auto& hook : cleanup_hooks_) {+ BaseObject* obj = hook.GetBaseObject();+ if (obj != nullptr) iterator(i, obj);+ i++;+ }+}++void PrintBaseObject(size_t i, BaseObject* obj) {+ std::cout << "#" << i << " " << obj << ": " << obj->MemoryInfoName() << "\n";+}++void Environment::PrintAllBaseObjects() {+ std::cout << "BaseObjects\n";+ ForEachBaseObject(PrintBaseObject);+}++EnvSerializeInfo Environment::Serialize(SnapshotCreator* creator) {+ EnvSerializeInfo info;+ Local<Context> ctx = context();++ info.async_hooks = async_hooks_.Serialize(ctx, creator);+ info.immediate_info = immediate_info_.Serialize(ctx, creator);+ info.tick_info = tick_info_.Serialize(ctx, creator);+ info.performance_state = performance_state_->Serialize(ctx, creator);+ info.stream_base_state = stream_base_state_.Serialize(ctx, creator);+ info.should_abort_on_uncaught_toggle =+ should_abort_on_uncaught_toggle_.Serialize(ctx, creator);++ size_t id = 0;+#define V(PropertyName, TypeName) \+ do { \+ Local<TypeName> field = PropertyName(); \+ if (!field.IsEmpty()) { \+ size_t index = creator->AddData(field); \+ info.persistent_templates.push_back({#PropertyName, id, index}); \+ } \+ id++; \+ } while (0);+ ENVIRONMENT_STRONG_PERSISTENT_TEMPLATES(V)+#undef V++ id = 0;+#define V(PropertyName, TypeName) \+ do { \+ Local<TypeName> field = PropertyName(); \+ if (!field.IsEmpty()) { \+ size_t index = creator->AddData(ctx, field); \+ info.persistent_values.push_back({#PropertyName, id, index}); \+ } \+ id++; \+ } while (0);+ ENVIRONMENT_STRONG_PERSISTENT_VALUES(V)+#undef V++ info.context = creator->AddData(ctx, context());+ return info;+}++std::ostream& operator<<(std::ostream& output,+ const std::vector<PropInfo>& vec) {+ output << "{\n";+ for (const auto& info : vec) {+ output << " { \"" << info.name << "\", " << std::to_string(info.id) << ", "+ << std::to_string(info.index) << " },\n";+ }+ output << "}";+ return output;+}++std::ostream& operator<<(std::ostream& output, const EnvSerializeInfo& i) {+ output << "{\n"+ << "// -- async_hooks begins --\n"+ << i.async_hooks << ",\n"+ << "// -- async_hooks begins --\n"+ << i.tick_info << ", // tick_info\n"+ << i.immediate_info << ", // immediate_info\n"+ << "// -- performance_state begins --\n"+ << i.performance_state << ",\n"+ << "// -- performance_state ends --\n"+ << i.stream_base_state << ", // stream_base_state\n"+ << i.should_abort_on_uncaught_toggle+ << ", // should_abort_on_uncaught_toggle\n"+ << "// -- persistent_templates begins --\n"+ << i.persistent_templates << ",\n"+ << "// persistent_templates ends --\n"+ << "// -- persistent_values begins --\n"+ << i.persistent_values << ",\n"+ << "// -- persistent_values ends --\n"+ << i.context << ", // context\n"+ << "}";+ return output;+}++void Environment::DeserializeProperties(const EnvSerializeInfo* info) {+ Local<Context> ctx = context();++ async_hooks_.Deserialize(ctx);+ immediate_info_.Deserialize(ctx);+ tick_info_.Deserialize(ctx);+ performance_state_->Deserialize(ctx);+ stream_base_state_.Deserialize(ctx);+ should_abort_on_uncaught_toggle_.Deserialize(ctx);++ if (enabled_debug_list_.enabled(DebugCategory::MKSNAPSHOT)) {+ fprintf(stderr, "deserializing...\n");+ std::cerr << *info << "\n";+ }++ const std::vector<PropInfo>& templates = info->persistent_templates;+ size_t i = 0; // index to the array+ size_t id = 0;+#define V(PropertyName, TypeName) \+ do { \+ if (templates.size() > i && id == templates[i].id) { \+ const PropInfo& d = templates[i]; \+ Debug(this, \+ DebugCategory::MKSNAPSHOT, \+ "deserializing %s template, %" PRIu64 "/%" PRIu64 " (#%" PRIu64 \+ ") \n", \+ d.name.c_str(), \+ static_cast<uint64_t>(i), \+ static_cast<uint64_t>(templates.size()), \+ static_cast<uint64_t>(id)); \+ DCHECK_EQ(d.name, #PropertyName); \+ MaybeLocal<TypeName> field = \+ isolate_->GetDataFromSnapshotOnce<TypeName>(d.index); \+ if (field.IsEmpty()) { \+ fprintf(stderr, \+ "Failed to deserialize environment template " #PropertyName \+ "\n"); \+ } \+ set_##PropertyName(field.ToLocalChecked()); \+ i++; \+ } \+ } while (0); \+ id++;+ ENVIRONMENT_STRONG_PERSISTENT_TEMPLATES(V);+#undef V++ i = 0; // index to the array+ id = 0;+ const std::vector<PropInfo>& values = info->persistent_values;+#define V(PropertyName, TypeName) \+ do { \+ if (values.size() > i && id == values[i].id) { \+ const PropInfo& d = values[i]; \+ Debug(this, \+ DebugCategory::MKSNAPSHOT, \+ "deserializing %s value, %" PRIu64 "/%" PRIu64 " (#%" PRIu64 \+ ") \n", \+ d.name.c_str(), \+ static_cast<uint64_t>(i), \+ static_cast<uint64_t>(values.size()), \+ static_cast<uint64_t>(id)); \+ DCHECK_EQ(values[i].name, #PropertyName); \+ MaybeLocal<TypeName> field = \+ ctx->GetDataFromSnapshotOnce<TypeName>(values[i++].index); \+ if (field.IsEmpty()) { \+ fprintf(stderr, \+ "Failed to deserialize environment value " #PropertyName \+ "\n"); \+ } \+ set_##PropertyName(field.ToLocalChecked()); \+ } \+ } while (0); \+ id++;+ ENVIRONMENT_STRONG_PERSISTENT_VALUES(V);+#undef V++ MaybeLocal<Context> ctx_from_snapshot =+ ctx->GetDataFromSnapshotOnce<Context>(info->context);+ if (ctx_from_snapshot.IsEmpty()) {
Perhaps this could use ToLocal to avoid the following ToLocalChecked() call?
comment created time in 19 days
Pull request review commentnodejs/node
bootstrap: include bootstrapped Environment in builtin snapshot
void Environment::RemoveUnmanagedFd(int fd) { } } +void Environment::ForEachBaseObject(BaseObjectIterator iterator) {+ size_t i = 0;+ for (const auto& hook : cleanup_hooks_) {+ BaseObject* obj = hook.GetBaseObject();+ if (obj != nullptr) iterator(i, obj);+ i++;+ }+}++void PrintBaseObject(size_t i, BaseObject* obj) {+ std::cout << "#" << i << " " << obj << ": " << obj->MemoryInfoName() << "\n";+}++void Environment::PrintAllBaseObjects() {+ std::cout << "BaseObjects\n";+ ForEachBaseObject(PrintBaseObject);+}++EnvSerializeInfo Environment::Serialize(SnapshotCreator* creator) {+ EnvSerializeInfo info;+ Local<Context> ctx = context();++ info.async_hooks = async_hooks_.Serialize(ctx, creator);+ info.immediate_info = immediate_info_.Serialize(ctx, creator);+ info.tick_info = tick_info_.Serialize(ctx, creator);+ info.performance_state = performance_state_->Serialize(ctx, creator);+ info.stream_base_state = stream_base_state_.Serialize(ctx, creator);+ info.should_abort_on_uncaught_toggle =+ should_abort_on_uncaught_toggle_.Serialize(ctx, creator);++ size_t id = 0;+#define V(PropertyName, TypeName) \+ do { \+ Local<TypeName> field = PropertyName(); \+ if (!field.IsEmpty()) { \+ size_t index = creator->AddData(field); \+ info.persistent_templates.push_back({#PropertyName, id, index}); \+ } \+ id++; \+ } while (0);+ ENVIRONMENT_STRONG_PERSISTENT_TEMPLATES(V)+#undef V++ id = 0;+#define V(PropertyName, TypeName) \+ do { \+ Local<TypeName> field = PropertyName(); \+ if (!field.IsEmpty()) { \+ size_t index = creator->AddData(ctx, field); \+ info.persistent_values.push_back({#PropertyName, id, index}); \+ } \+ id++; \+ } while (0);+ ENVIRONMENT_STRONG_PERSISTENT_VALUES(V)+#undef V++ info.context = creator->AddData(ctx, context());+ return info;+}++std::ostream& operator<<(std::ostream& output,+ const std::vector<PropInfo>& vec) {+ output << "{\n";+ for (const auto& info : vec) {+ output << " { \"" << info.name << "\", " << std::to_string(info.id) << ", "+ << std::to_string(info.index) << " },\n";+ }+ output << "}";+ return output;+}++std::ostream& operator<<(std::ostream& output, const EnvSerializeInfo& i) {+ output << "{\n"+ << "// -- async_hooks begins --\n"+ << i.async_hooks << ",\n"+ << "// -- async_hooks begins --\n"+ << i.tick_info << ", // tick_info\n"+ << i.immediate_info << ", // immediate_info\n"+ << "// -- performance_state begins --\n"+ << i.performance_state << ",\n"+ << "// -- performance_state ends --\n"+ << i.stream_base_state << ", // stream_base_state\n"+ << i.should_abort_on_uncaught_toggle+ << ", // should_abort_on_uncaught_toggle\n"+ << "// -- persistent_templates begins --\n"+ << i.persistent_templates << ",\n"+ << "// persistent_templates ends --\n"+ << "// -- persistent_values begins --\n"+ << i.persistent_values << ",\n"+ << "// -- persistent_values ends --\n"+ << i.context << ", // context\n"+ << "}";+ return output;+}++void Environment::DeserializeProperties(const EnvSerializeInfo* info) {+ Local<Context> ctx = context();++ async_hooks_.Deserialize(ctx);+ immediate_info_.Deserialize(ctx);+ tick_info_.Deserialize(ctx);+ performance_state_->Deserialize(ctx);+ stream_base_state_.Deserialize(ctx);+ should_abort_on_uncaught_toggle_.Deserialize(ctx);++ if (enabled_debug_list_.enabled(DebugCategory::MKSNAPSHOT)) {+ fprintf(stderr, "deserializing...\n");+ std::cerr << *info << "\n";+ }++ const std::vector<PropInfo>& templates = info->persistent_templates;+ size_t i = 0; // index to the array+ size_t id = 0;+#define V(PropertyName, TypeName) \+ do { \+ if (templates.size() > i && id == templates[i].id) { \+ const PropInfo& d = templates[i]; \+ Debug(this, \+ DebugCategory::MKSNAPSHOT, \+ "deserializing %s template, %" PRIu64 "/%" PRIu64 " (#%" PRIu64 \+ ") \n", \+ d.name.c_str(), \+ static_cast<uint64_t>(i), \+ static_cast<uint64_t>(templates.size()), \+ static_cast<uint64_t>(id)); \+ DCHECK_EQ(d.name, #PropertyName); \+ MaybeLocal<TypeName> field = \+ isolate_->GetDataFromSnapshotOnce<TypeName>(d.index); \+ if (field.IsEmpty()) { \
Perhaps this could use ToLocal to avoid the following ToLocalChecked() call?
MaybeLocal<TypeName> maybe_field = \
isolate_->GetDataFromSnapshotOnce<TypeName>(d.index); \
Local<TypeName> field; \
if (!maybe_field.ToLocal(&field)) { \
fprintf(stderr, \
"Failed to deserialize environment template " #PropertyName \
"\n"); \
} \
set_##PropertyName(field);
comment created time in 19 days
Pull request review commentnodejs/node
bootstrap: include bootstrapped Environment in builtin snapshot
void Environment::CollectUVExceptionInfo(Local<Value> object, syscall, message, path, dest); } +ImmediateInfo::ImmediateInfo(v8::Isolate* isolate, const SerializeInfo* info)+ : fields_(isolate, kFieldsCount, MAYBE_FIELD_PTR(info, fields)) {}++ImmediateInfo::SerializeInfo ImmediateInfo::Serialize(+ v8::Local<v8::Context> context, v8::SnapshotCreator* creator) {+ return {fields_.Serialize(context, creator)};+}++void ImmediateInfo::Deserialize(Local<Context> context) {+ fields_.Deserialize(context);+}++std::ostream& operator<<(std::ostream& output,+ const ImmediateInfo::SerializeInfo& i) {+ output << "{ " << i.fields << " }";+ return output;+}+ void ImmediateInfo::MemoryInfo(MemoryTracker* tracker) const { tracker->TrackField("fields", fields_); } +TickInfo::SerializeInfo TickInfo::Serialize(v8::Local<v8::Context> context,+ v8::SnapshotCreator* creator) {+ return {fields_.Serialize(context, creator)};+}++void TickInfo::Deserialize(Local<Context> context) {+ fields_.Deserialize(context);+}++std::ostream& operator<<(std::ostream& output,+ const TickInfo::SerializeInfo& i) {+ output << "{ " << i.fields << " }";+ return output;+}+ void TickInfo::MemoryInfo(MemoryTracker* tracker) const { tracker->TrackField("fields", fields_); } +TickInfo::TickInfo(v8::Isolate* isolate, const SerializeInfo* info)+ : fields_(+ isolate, kFieldsCount, info == nullptr ? nullptr : &(info->fields)) {}++AsyncHooks::AsyncHooks(v8::Isolate* isolate, const SerializeInfo* info)+ : async_ids_stack_(isolate, 16 * 2, MAYBE_FIELD_PTR(info, async_ids_stack)),+ fields_(isolate, kFieldsCount, MAYBE_FIELD_PTR(info, fields)),+ async_id_fields_(+ isolate, kUidFieldsCount, MAYBE_FIELD_PTR(info, async_id_fields)),+ info_(info) {+ v8::HandleScope handle_scope(isolate);+ if (info == nullptr) {+ clear_async_id_stack();++ // Always perform async_hooks checks, not just when async_hooks is enabled.+ // TODO(AndreasMadsen): Consider removing this for LTS releases.+ // See discussion in https://github.com/nodejs/node/pull/15454+ // When removing this, do it by reverting the commit. Otherwise the test+ // and flag changes won't be included.+ fields_[kCheck] = 1;++ // kDefaultTriggerAsyncId should be -1, this indicates that there is no+ // specified default value and it should fallback to the executionAsyncId.+ // 0 is not used as the magic value, because that indicates a missing+ // context which is different from a default context.+ async_id_fields_[AsyncHooks::kDefaultTriggerAsyncId] = -1;++ // kAsyncIdCounter should start at 1 because that'll be the id the execution+ // context during bootstrap (code that runs before entering uv_run()).+ async_id_fields_[AsyncHooks::kAsyncIdCounter] = 1;+ }+}++void AsyncHooks::Deserialize(Local<Context> context) {+ async_ids_stack_.Deserialize(context);+ fields_.Deserialize(context);+ async_id_fields_.Deserialize(context);+ if (info_->js_execution_async_resources != 0) {+ v8::Local<v8::Array> arr = context+ ->GetDataFromSnapshotOnce<v8::Array>(+ info_->js_execution_async_resources)+ .ToLocalChecked();+ js_execution_async_resources_.Reset(context->GetIsolate(), arr);+ }++ native_execution_async_resources_.resize(+ info_->native_execution_async_resources.size());+ for (size_t i = 0; i < info_->native_execution_async_resources.size(); ++i) {+ v8::Local<v8::Object> obj =+ context+ ->GetDataFromSnapshotOnce<v8::Object>(+ info_->native_execution_async_resources[i])+ .ToLocalChecked();+ native_execution_async_resources_[i].Reset(context->GetIsolate(), obj);+ }+ info_ = nullptr;+}++std::ostream& operator<<(std::ostream& output,+ const std::vector<SnapshotIndex>& v) {+ output << "{ ";+ for (const SnapshotIndex i : v) {+ output << i << ", ";+ }+ output << " }\n";
Nit: perhaps the newline character can be omitted here?
At the moment this will generate the following output:
// -- async_hooks begins --
{
0, // async_ids_stack
1, // fields
2, // async_id_fields
3, // js_execution_async_resources
{ }
, // native_execution_async_resources
},
// -- async_hooks ends --
And without the newline character it would be:
// -- async_hooks begins --
{
0, // async_ids_stack
1, // fields
2, // async_id_fields
3, // js_execution_async_resources
{ }, // native_execution_async_resources
},
// -- async_hooks ends --
comment created time in 19 days
push eventdanbev/learning-cpp
commit sha 113601a2f37b666d0c803c9384efc308c4a37bce
src: add example of getting function address
push time in 19 days
push eventdanbev/learning-v8
commit sha 948d0b5e92cd85cb01c8cb4d7d0a155c26acde3c
doc: add exernal reference section
push time in 19 days
push eventdanbev/learning-v8
commit sha db8996278ef4b542c68fa2b2f6bb6dfd4c9da43e
src: remove v8 namespace qualifier
push time in 19 days
push eventdanbev/learning-v8
commit sha b4371941484a15fbef4fcd1bb0855a008224f285
src: add external_references snapshot example
push time in 19 days
issue commentnodejs/TSC
Node.js Technical Steering Committee (TSC) Meeting 2020-07-16
I won't be able to make the meeting today but just wanted to say that I've started to review https://github.com/nodejs/node/pull/32984 and will continue tomorrow. I also hope to have time to take a closer look at @addaleax suggestion but I only have tomorrow before a month of PTO.
comment created time in 19 days
Pull request review commentnodejs/node
bootstrap: include bootstrapped Environment in builtin snapshot
int Start(int argc, char** argv) { Isolate::CreateParams params; const std::vector<size_t>* indexes = nullptr; std::vector<intptr_t> external_references;
I think external_references can be removed as it does not look like it is used anymore.
comment created time in 20 days
Pull request review commentnodejs/node
bootstrap: include bootstrapped Environment in builtin snapshot
void NativeModuleEnv::Initialize(Local<Object> target, target->SetIntegrityLevel(context, IntegrityLevel::kFrozen).FromJust(); } +void NativeModuleEnv::RegisterExternalReferences(+ ExternalReferenceRegistry* registry) {+ registry->Register(ConfigStringGetter);+ registry->Register(ModuleIdsGetter);+ registry->Register(ModuleIdsGetter);
It looks like ModuleIdsGetter is getting registered twice here?:
(lldb) expr external_references_
(std::vector<long, std::allocator<long int> >) $6 = size=85 {
....
[83] = 25056866
[84] = 25056866
(lldb) expr reinterpret_cast<intptr_t>(node::native_module::NativeModuleEnv::ModuleIdsGetter)
(intptr_t) $11 = 25056866
comment created time in 20 days
push eventdanbev/learning-v8
commit sha b6ccb184ae0b7b2de58ca0a9c428199d44c9d817
src: add AddData example
push time in 20 days
push eventdanbev/learning-v8
commit sha 9acdac2b6998b05213169107349c39947c1ec8c9
doc,src: add notes about CreateSnapshot test
push time in 20 days
push eventdanbev/learning-v8
commit sha 336ecade520543f1e7b9de7c727338288641ed3c
test: remove unused _v8_internal_Print_Object
push time in 21 days
push eventdanbev/learning-v8
commit sha 42cd997d09f0c8fb3ee5dd5b06879bfc27ce560d
src: remove exeption handling and add comments
push time in 21 days
push eventdanbev/learning-v8
commit sha 589cff5b0c5e4c473eece153b9984adea8958b9e
src: use Context::FromSnapshot to create the Context
push time in 21 days
push eventdanbev/learning-v8
commit sha 21de21826677e63baaa9945001f6fd99adb7e9c9
src: add snapshot exploration (wip)
push time in 21 days
push eventdanbev/learning-v8
commit sha 9d2c203ea89eb1d92650e8cbef84bcc674a7ee96
doc: various cleanups to README.md
push time in 21 days
push eventdanbev/learning-v8
commit sha 2369ea946c018977f974b279cca5212d17af5fa9
doc: add snapshot notes (wip)
push time in 22 days
PR closed nodejs/node
Currently, after having configured and built node and then updating a dependent target the following error is produced when trying to rebuild the project:
$ ./configure && make -j8
$ touch node.gypi
$ make -j8
configure: error: no such option: -f
make[1]: *** [Makefile:685: Makefile] Error 2
The reason for this is that the target cmd_regen_makefile is using the
command configure instead of gyp_node.py in out/Makefile:
cmd_regen_makefile = cd $(srcdir); /work/nodejs/node/configure -fmake
As far as I can tell gyp is using sys.argv[0] as the gyp_binary in
__init__.py:
params = {'options': options,
...
'gyp_binary': sys.argv[0],
But when called via 'configure' sys.argv[0] is 'configure' instead of gyp_node.py leading to the above error.
This commit suggests setting the program name explicitly in gyp_node.py. Alternatively perhaps this could be done in configure.py instead but I was not sure what would be best.
<!-- Thank you for your pull request. Please provide a description above and review the requirements below.
Bug fixes and new features should include tests and possibly benchmarks.
Contributors guide: https://github.com/nodejs/node/blob/master/CONTRIBUTING.md -->
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr closed time in 22 days
pull request commentnodejs/node
build,tools: fix cmd_regen_makefile
Landed in 8da0ae2526ffcd8981d4d0f0a9d3888ec398fbb9.
comment created time in 22 days
push eventnodejs/node
commit sha 8da0ae2526ffcd8981d4d0f0a9d3888ec398fbb9
build,tools: fix cmd_regen_makefile Currently, after having configured and built node and then updating a dependent target the following error is produced when trying to rebuild the project: $ ./configure && make -j8 $ touch node.gypi $ make -j8 configure: error: no such option: -f make[1]: *** [Makefile:685: Makefile] Error 2 The reason for this is that the target 'cmd_regen_makefile' is using the command 'configure' instead of 'gyp_node.py' in out/Makefile: cmd_regen_makefile = cd $(srcdir); /work/nodejs/node/configure -fmake As far as I can tell gyp is using sys.argv[0] as the 'gyp_binary' in __init__.py: params = {'options': options, ... 'gyp_binary': sys.argv[0], But when called via 'configure' sys.argv[0] is 'configure' instead of gyp_node.py leading to the above error. This commit suggests setting the program name explicitly in gyp_node.py. Alternatively perhaps this could be done in configure.py instead but I was not sure what would be best. PR-URL: https://github.com/nodejs/node/pull/34255 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: James M Snell <[email protected]>
push time in 22 days
push eventdanbev/learning-v8
commit sha 2696783111d747194d3fd9927136d9e7cc13ceac
doc: extract GN notes into separate file
push time in 22 days
push eventdanbev/learning-cpp
commit sha 2b200f4c35d37b138e8e0323a96c44897f3f3227
src: add static factory example
push time in 22 days
PR closed nodejs/node
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr closed time in 23 days
pull request commentnodejs/node
src: use FromMaybe instead of ToLocal in GetCert
Landed in eabe22b73371e59838f5ff501804aca3aae9f4a9.
comment created time in 23 days
PR closed nodejs/node
This commit extracts the code that is the same in GetCipherName,
GetCipherStandardName, and GetCipherVersion into function named
GetCipherValue.
The motivation for this change is to improve readabilty by removing the duplicated code.
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr closed time in 23 days
pull request commentnodejs/node
src: add GetCipherValue function
Landed in f9402b23fd0eeae317af593498c3434e984310ae.
comment created time in 23 days
push eventnodejs/node
commit sha f9402b23fd0eeae317af593498c3434e984310ae
src: add GetCipherValue function This commit extracts the code that is the same in GetCipherName, GetCipherStandardName, and GetCipherVersion into function named GetCipherValue. The motivation for this change is to improve readabilty by removing the duplicated code. PR-URL: https://github.com/nodejs/node/pull/34287 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Tobias Nießen <[email protected]> Reviewed-By: James M Snell <[email protected]>
push time in 23 days
push eventdanbev/node
commit sha a1b206d907ba5178c80a99078e7b5bca640400d9
squash!: use function pointer instead of std::function
push time in a month
Pull request review commentnodejs/node
src: add GetCipherValue function
Local<Value> ToV8Value(Environment* env, const BIOPointer& bio) { return ret.FromMaybe(Local<Value>()); } -MaybeLocal<Value> GetCipherName(- Environment* env,- const SSL_CIPHER* cipher) {+MaybeLocal<Value> GetCipherValue(Environment* env,+ const SSL_CIPHER* cipher,+ std::function<const char*(const SSL_CIPHER* cipher)> getstr) {
Ah good point, I'll update this shortly. Thanks!
comment created time in a month
push eventdanbev/learning-v8
commit sha 592e50b6dc725b5c984061741fdaed7b798aa139
doc: add mksnapshot usage message
push time in a month
push eventdanbev/learning-v8
commit sha 3c8117876879556ee4a2c16210b07bad946b147b
doc: extract snapshot section into separate file
push time in a month
PR opened nodejs/node
This commit extracts the code that is the same in GetCipherName,
GetCipherStandardName, and GetCipherVersion into function named
GetCipherValue.
The motivation for this change is to improve readabilty by removing the duplicated code.
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr created time in a month
push eventdanbev/node
commit sha c53513162706ef89943ec5143729561739690483
quic: additional minor cleanups in node_quic_session.h PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha bcde849be9f4a4593d99d77cbc1d87ba9fdc27ba
quic: remove unnecessary bool conversion The argument will always be a boolean already PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha edc71ef008cb8ac68b86da3a3df8d826aae6a249
quic: handle errors thrown / rejections in the session event Errors thrown within the session event handler will be handled by destroying the session (allowing a proper connection close to be sent to the client peer). They will not crash the parent QuicSocket by default. Instead, a `'sessionError'` event will be emitted, allowing the error to be logged or handled. PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha cc89aac5f7d5443e0be9d037f067391ab144244e
quic: refactor/improve error handling for busy event Also, change setServerBusy into a setter PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha e3813261b87f813cbd0cdc5199434de44b2a0c6a
quic: add tests confirming error handling for QuicSocket close event PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha afc9390ae58bdd7e5631402e4d3a0219d7f25993
quic: refactor/improve QuicSocket ready event handling PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha 94372b124a8c262d5104dc2a441d5af5e9355fd1
quic: refactor/improve/document QuicSocket listening event PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha 71236097d0e8782988c4b26049748197d963e4f5
quic: use Number() instead of bigint for QuicSocket stats PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha f2753c769591ec742921e4ee9455e0402aae863e
quic: unref timers again 0f97d6066a9037f59 accidentally removed this. Refs: https://github.com/nodejs/node/pull/34186 PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: James M Snell <[email protected]>
commit sha d08e99de242898c40e9410b9cb1e86c1bb8f830f
quic: use getter/setter for stateless reset toggle PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha fe11f6bf7cf8de128c224d06cb076e7fe571dfd3
quic: cleanup QuicSocketFlags, used shared state struct Some of the flags were no longer being used. Switched to use an AliasedStruct for shared state to avoid extraneous expensive JS=>C++ calls. Removed unused QuicSocket option PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha 511f8c1138afad082bdad048a09ac345d8ec57a3
quic: proper custom inspect for QuicEndpoint PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha b047930d76a4f011cd9961ea34bff7652629d7a4
quic: proper custom inspect for QuicSocket PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha 0860b11655c57597e36b8766157a5188d2e7ca22
quic: proper custom inspect for QuicSession PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha 458d243f20f48381c681ff29d09199bbb7c8f731
quic: proper custom inspect for QuicStream PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha 26493c02a26270cfbdd0cf3e46a7eaf649a7874a
quic: remove no longer valid CHECK PR-URL: https://github.com/nodejs/node/pull/34247 Reviewed-By: Anna Henningsen <[email protected]>
commit sha a95fb930d0d2bcf8ba3c86f4525d1348e60a7507
doc: document security issues with url.parse() Fixes: https://github.com/nodejs/node/issues/31279 PR-URL: https://github.com/nodejs/node/pull/34226 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]>
commit sha 949d1c1f0c65867f2cc79b860c83a2f76d4aee9d
doc: document behavior for once(ee, 'error') Fixes: https://github.com/nodejs/node/issues/31244 PR-URL: https://github.com/nodejs/node/pull/34225 Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Anna Henningsen <[email protected]>
commit sha 62bdb7e801ace08d5ec5443c10e89947bd94b288
doc: add note about multiple sync events and once Fixes: https://github.com/nodejs/node/issues/32431 PR-URL: https://github.com/nodejs/node/pull/34220 Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Anto Aravinth <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]>
commit sha 14ac6e42262fa89440be17122421d7f1fac7feb8
doc: document that whitespace is ignored in base64 decoding Fixes: https://github.com/nodejs/node/issues/8569 PR-URL: https://github.com/nodejs/node/pull/34227 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
push time in a month
push eventdanbev/learning-libcrypto
commit sha 9506446a0f57f1f5b68ff82eee4d0fc1bd8d3ed3
doc: add example of running single OpenSSL test
push time in a month
PR opened nodejs/node
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr created time in a month
push eventdanbev/openssl
commit sha 937a444f56ac0528a2146a973d2e0f37243c00b0
Revert "Configure: remove ref to missing Makefile.tmpl" This reverts commit a2567ac25252d0617fe7dc6ba52b966e8c1b2ed1.
commit sha d01eb61d5225295cb6ebdf4cc31558fbebab44d2
Configurations: make Makefile tmpl files non-links This commit updates Configurations/README.md and turns the Makefile templates into non-links. The motivation for this is that not all template exist in the directory leading to 404 Not found errors when accessed.
push time in a month
Pull request review commentopenssl/openssl
Configure: remove ref to missing Makefile.tmpl
For any name given by `build_file`, the "unified" system expects a template file in `Configurations/` named like the build file, with `.tmpl` appended, or in case of possible ambiguity, a combination of the second `build_scheme` list item and the `build_file` name. For-example, if `build_file` is set to `Makefile`, the template could be-[`Configurations/Makefile.tmpl`](Makefile.tmpl) or+example, if `build_file` is set to `Makefile`, the template would be [`Configurations/unix-Makefile.tmpl`](unix-Makefile.tmpl).-In case both [`Configurations/unix-Makefile.tmpl`](Makefile.tmpl) and-[`Configurations/Makefile.tmpl`](Makefile.tmpl) are present, the former takes-precedence.
That makes sense, I'll update it. Thanks
comment created time in a month
Pull request review commentopenssl/openssl
Configure: remove ref to missing Makefile.tmpl
if ($builder eq "unified") { # Store the name of the template file we will build the build file from # in %config. This may be useful for the build file itself. my @build_file_template_names =- ( $builder_platform."-".$target{build_file}.".tmpl",- $target{build_file}.".tmpl" );+ ( $builder_platform."-".$target{build_file}.".tmpl" );
Ah I see, thanks!
comment created time in a month
push eventdanbev/learning-v8
commit sha 9d1c2966f0c4a8081e296169b92d7bc9bbe9d90a
src: misc updates to context_test.cc
push time in a month
push eventdanbev/learning-libcrypto
commit sha 972880b2196099620bd696304bd333ac8abdfbaa
doc: update OpenSSL Build system section
push time in a month
PR opened openssl/openssl
This commit removes the reference to Makefile.tmpl in
Configurations/README.md, and also removes it from the
@build_file_templates array in the Configure script.
The motivation for removing it is that this file is referenced in
Configurations/README.md but as this file does not exist it leads to
a 404 Not Found.
I'm not really sure this should be removed from Configure, or if the
updates made to Configurations/README.md are correct but hopefully
others can chime in and provide advise on this.
pr created time in a month
push eventdanbev/node
commit sha 2a3b3cf815593a6a05641e9c35184041c17f5bfd
squash!: correct comment
push time in a month
Pull request review commentnodejs/node
build,tools: fix cmd_regen_makefile
def run_gyp(args): args.append('-Dlinux_use_bundled_gold=0') args.append('-Dlinux_use_gold_flags=0') + # Set the current program to this module. This is done because gyp+ # will the program path in targets it generates. If this script was called
Fixed now, thanks!
comment created time in a month
issue commentnodejs/node
There are two failing tests at the moment:
- test-crypto-dh-stateless.js asked about this in https://github.com/openssl/openssl/issues/12102#issuecomment-653438152.
- test-crypto-keygen.js opened upstream issue https://github.com/openssl/openssl/issues/12384
The snapshot issue related to Alpha 4 mentioned above has been fixed in https://github.com/openssl/openssl/issues/12290
For the time being the deprecation warnings are being suppressed by setting OPENSSL_API_COMAT in
https://github.com/nodejs/node/commit/a40bab8122b40ce36c623323e60087285d01e5fc.
comment created time in a month
push eventnodejs/node
commit sha a40bab8122b40ce36c623323e60087285d01e5fc
build: add OPENSSL_API_COMPAT macro This commit adds the OPENSSL_API_COMPAT macro and sets it to version 1.1.1 of OpenSSL when linking with a shared OpenSSL library. The motivation for this is that when linking against OpenSSL 3.x there are a lot of deprecation warnings and this allows them to be avoided. When we later upgrade the code base to 3.x this value can then be updated.
push time in a month
push eventdanbev/learning-v8
commit sha 8ea566341b738dd41da037cb2635d79571d9f8e5
src: get isolate_test to compile again
push time in a month
PR opened nodejs/node
Currently, after having configured and built node and then updating a dependent target the following error is produced when trying to rebuild the project:
$ ./configure && make -j8
$ touch node.gypi
$ make -j8
configure: error: no such option: -f
make[1]: *** [Makefile:685: Makefile] Error 2
The reason for this is that the target cmd_regen_makefile is using the
command configure instead of gyp_node.py in out/Makefile:
cmd_regen_makefile = cd $(srcdir); /work/nodejs/node/configure -fmake
As far as I can tell gyp is using sys.argv[0] as the gyp_binary in
__init__.py:
params = {'options': options,
...
'gyp_binary': sys.argv[0],
But when called via 'configure' sys.argv[0] is 'configure' instead of gyp_node.py leading to the above error.
This commit suggests setting the program name explicitly in gyp_node.py. Alternatively perhaps this could be done in configure.py instead but I was not sure what would be best.
<!-- Thank you for your pull request. Please provide a description above and review the requirements below.
Bug fixes and new features should include tests and possibly benchmarks.
Contributors guide: https://github.com/nodejs/node/blob/master/CONTRIBUTING.md -->
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr created time in a month
push eventdanbev/node
commit sha 9e30b7342f5a6fc2db222d86e6a7e59211cd189a
build,tools: fix cmd_regen_makefile Currently, after having configured and built node and then updating a dependent target the following error is produced when trying to rebuild the project: $ ./configure && make -j8 $ touch node.gypi $ make -j8 configure: error: no such option: -f make[1]: *** [Makefile:685: Makefile] Error 2 The reason for this is that the target 'cmd_regen_makefile' is using the command 'configure' instead of 'gyp_node.py' in out/Makefile: cmd_regen_makefile = cd $(srcdir); /work/nodejs/node/configure -fmake As far as I can tell gyp is using sys.argv[0] as the 'gyp_binary' in __init__.py: params = {'options': options, ... 'gyp_binary': sys.argv[0], But when called via 'configure' sys.argv[0] is 'configure' instead of gyp_node.py leading to the above error. This commit suggests setting the program name explicitly in gyp_node.py. Alternatively perhaps this could be done in configure.py instead but I was not sure what would be best.
push time in a month
push eventdanbev/node
commit sha 1375593e4e13f82d7e2c7caba82aa63246f79161
build,tools: fix cmd_regen_makefile Currently, after having configured and built node and then updating a dependent target the following error is produced when trying to rebuild the project: $ ./configure && make -j8 $ touch node.gypi $ make -j8 configure: error: no such option: -f make[1]: *** [Makefile:685: Makefile] Error 2 The reason for this is that the target 'cmd_regen_makefile' is using the command 'configure' instead of 'gyp_node.py': cmd_regen_makefile = cd $(srcdir); /work/nodejs/node/configure -fmake As far as I can tell gyp is using sys.argv[0] as the 'gyp_binary' in __init__.py: params = {'options': options, ... 'gyp_binary': sys.argv[0], But when called via 'configure' sys.argv[0] is 'configure' instead leading to the above error. This commit suggests setting the program name explicitly in gyp_node.py. Alternatively perhaps this could be done in configure.py instead but I was not sure what would be best.
push time in a month
push eventdanbev/node
commit sha 127f848ba1bf617c92324346868693020d94d26d
build,tools: fix cmd_regen_makefile Currently, after having configured and built node and then updating a dependent targets the following error is produced when trying to rebuild the project: $ ./configure && make -j8 $ touch node.gypi $ make -j8 configure: error: no such option: -f make[1]: *** [Makefile:685: Makefile] Error 2 The reason for this is that the target 'cmd_regen_makefile' is using the command 'configure' instead of 'gyp_node.py': cmd_regen_makefile = cd $(srcdir); /work/nodejs/node/configure -fmake As far as I can tell gyp is using sys.argv[0] as the 'gyp_binary' in __init__.py: params = {'options': options, ... 'gyp_binary': sys.argv[0], But when called via 'configure' sys.argv[0] is 'configure' instead leading to the above error. This commit suggests setting the program name explicitly in gyp_node.py. Alternatively perhaps this could be done in configure.py instead but I was not sure what would be best.
push time in a month
push eventdanbev/learning-v8
commit sha 076c66c3550fde02d71e12df933f0b712a5fff20
build: add v8_test_fixture.h as prerequisite This commit adds v8_test_fixture.h as a prerequisite to the test targets so that when it gets updated the test will be rebuilt.
push time in a month
push eventdanbev/learning-libcrypto
commit sha 4e2882df07530f572748ebffb2a77671f692c1bd
doc,src: add RAND_status issue notes/code
push time in a month
push eventdanbev/learning-libcrypto
commit sha 7a0c4275006ea6fc4dd15c31505d9bb542c111ac
doc: change the build target to linux-x86_64
push time in a month
push eventdanbev/learning-libcrypto
commit sha 5acdfd40a553b086efec5f173f6bd14fc80a884c
doc: update configure command to include linux-x86
push time in a month
issue openedopenssl/openssl
[3.0.0] EVP_PKEY_CTX_set_rsa_keygen_bits issue with EVP_PKEY_RSA_PSS
While working on upgrading Node.js to use OpenSSL 3.0.0 alpha 4 I've run into an issue when calling EVP_PKEY_CTX_set_rsa_keygen_bits in combination with an id of EVP_PKEY_RSA_PSS.
I've extracted the code used in Node.js into rsa-pss, and the section in question looks like this:
int modulus_bits = 512;
const uint32_t exponent = 0x10001;
int salt_len = 16;
const char* md_name = "sha256";
const EVP_MD* md = EVP_get_digestbyname(md_name);
const char* mgf1_name = "sha256";
const EVP_MD* mgf1_md = EVP_get_digestbyname(mgf1_name);
EVP_PKEY_CTX* ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA_PSS, NULL);
if (ctx == NULL) {
error_and_exit("Could not create a context for RSA_PSS");
}
if (EVP_PKEY_keygen_init(ctx) <= 0) {
error_and_exit("Could not initialize the RSA context");
}
if (EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, modulus_bits) <= 0) {
error_and_exit("EVP_PKEY_CTX_set_rsa_keygen_bits failed");
}
The output of running the rsa-pss is:
$ ./rsa_pss
RSA_PSS example
EVP_PKEY_CTX_set_rsa_keygen_bits failed
errno: 0, error:00000000:lib(0)::reason(0)
In EVP_PKEY_CTX_set_rsa_keygen_bits there is a check to see if the pkey_id is EVP_PKEY_RSA which is not the case in our situation as it is EVP_PKEY_RSA_PSS, and this is causing -1 to be returned:
https://github.com/openssl/openssl/blob/8c330e1939d6b7db93a963116354ef80ca0babb3/crypto/rsa/rsa_lib.c#L1331-L1332
It looks like in 1.1.1 there was a that check for both ids:
https://github.com/openssl/openssl/blob/e2e09d9fba1187f8d6aafaa34d4172f56f1ffb72/crypto/rsa/rsa_lib.c#L485-L493
I'm wondering if we should be doing something different for OpenSSL 3.0.0 since this check was removed, or if perhaps this is something that was just overlooked?
created time in a month
push eventdanbev/learning-libcrypto
commit sha ee783cf4f6eb6c5843b862058dedd5f8a30050ae
doc: clean up EVP_PKEY_CTX_set_rsa_pss_keygen_md section
push time in a month
push eventdanbev/learning-libcrypto
commit sha 4eeea065e19a020b61afd1ac94e5772dd375e744
src: remove OPENSSL_CONF usage for fips-provider
push time in a month
push eventdanbev/learning-libcrypto
commit sha ac6af84660da5280caca18f4405ac4187b3d52ef
src,doc: get fips-provider to run without error
push time in a month
PR closed nodejs/node
This commit adds a local variable named encoding_type which is set to the value of the Maybe using ToChecked().
The motivation for this is the code for ToChecked() could be executed multiple times depending on path taken at runtime. I also think this improves readability, or at least it is as readable as before this change.
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr closed time in a month
pull request commentnodejs/node
src: add encoding_type variable in WritePrivateKey
Landed in 30612316e4af64e530b9b3ecc1cbfc98d11cae3e.
comment created time in a month
push eventnodejs/node
commit sha 30612316e4af64e530b9b3ecc1cbfc98d11cae3e
src: add encoding_type variable in WritePrivateKey This commit adds a local variable named encoding_type which is set to the value of the Maybe using ToChecked(). The motivation for this is the code for ToChecked() could be executed multiple times depending on path taken at runtime. I also think this improves readability, or at least it is as readable as before this change. PR-URL: https://github.com/nodejs/node/pull/34181 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: David Carlier <[email protected]>
push time in a month
push eventdanbev/learning-libcrypto
commit sha 885b8e66e197899ea0b7ac1aae653d649e33ce6a
doc: add fips provider notes (wip)
push time in a month
push eventdanbev/learning-libcrypto
commit sha df2b11c700b44a4be1bc81ab0074d9eccf37f309
src: add example of loading a provider
push time in a month
push eventdanbev/learning-libcrypto
commit sha a3d51127297fbf67f043f3325a0cc3698436af0e
doc: update FIPS 3 notes
push time in a month
push eventdanbev/learning-libcrypto
commit sha 9d6e603fd3476f8c846f09b6cd191d710f4f3739
doc: misc cleanups
push time in a month
PR closed nodejs/node
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr closed time in a month
pull request commentnodejs/node
src: fix minor comment typo in KeyObjectData
Landed in 67ba825037b4082d5d16f922fb9ce54516b4a869.
comment created time in a month
push eventnodejs/node
commit sha 67ba825037b4082d5d16f922fb9ce54516b4a869
src: fix minor comment typo in KeyObjectData PR-URL: https://github.com/nodejs/node/pull/34167 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Tobias Nießen <[email protected]> Reviewed-By: David Carlier <[email protected]>
push time in a month
pull request commentnodejs/node
src: fix minor comment typo in KeyObjectData
CI-lite: https://ci.nodejs.org/job/node-test-pull-request-lite-pipeline/4175/
comment created time in a month
issue commentdanbev/learning-v8
Can I translate your book into Chinese?
I have translated the introduction in my fork
Nice! Well that sounds good to me then.
Would you feel comfortable if we add a link to your fork saying this is a work in progress to offer a Chinese translation?
comment created time in a month
PR opened nodejs/node
This commit adds a local variable named encoding_type which is set to the value of the Maybe using ToChecked().
The motivation for this is the code for ToChecked() could be executed multiple times depending on path taken at runtime. I also think this improves readability, or at least it is as readable as before this change.
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr created time in a month
push eventdanbev/learning-libcrypto
commit sha 446f641074e2f3f24a141fe2893617e9b134a1b7
ec: print out return code for EVP_PKEY_CTX_set_ec_param_enc
push time in a month
issue commentopenssl/openssl
[3.0.0] `genpkey -algorithm EC -pkeyopt ec_param_enc:explicit` fails
@romen There is no OpenSSL failure/error reported as far as I can tell, below is the output of the standalone program ec and the error in Node.js.
What I see happening is that the function legacy_ctrl_to_param is called and since there is no case that matches EVP_PKEY_EC the return statement will be reached and 0 will be returned. This is then checked in Node.js as interpreted as an error, see details below:
<details> <summary>ec output</summary>
$ ./ec
Elliptic Curve example
curve_nid of secp256k1: 714
EVP_PKEY_CTX_set_ec_param_enc is returning 0. Why?
errno: 0, error:00000000:lib(0)::reason(0)
</details> <details> <summary>Node.js error</summary>
$ ./out/Debug/node test/parallel/test-crypto-keygen.js
./out/Debug/node[876391]: ../src/node_crypto.cc:6350:void node::crypto::GenerateKeyPairJob::ToResult(v8::Local<v8::Value>*, v8::Local<v8::Value>*, v8::Local<v8::Value>*): Assertion `!errors_.empty()' failed.
1: 0xe4f878 node::DumpBacktrace(_IO_FILE*) [./out/Debug/node]
2: 0xf07561 node::Abort() [./out/Debug/node]
3: 0xf07617 [./out/Debug/node]
4: 0x10d636d node::crypto::GenerateKeyPairJob::ToResult(v8::Local<v8::Value>*, v8::Local<v8::Value>*, v8::Local<v8::Value>*) [./out/Debug/node]
5: 0x10d620e node::crypto::GenerateKeyPairJob::AfterThreadPoolWork() [./out/Debug/node]
6: 0x10d40a5 node::crypto::CryptoJob::AfterThreadPoolWork(int) [./out/Debug/node]
7: 0xec1b1c node::ThreadPoolWork::ScheduleWork()::{lambda(uv_work_s*, int)#2}::operator()(uv_work_s*, int) const [./out/Debug/node]
8: 0xec1b42 node::ThreadPoolWork::ScheduleWork()::{lambda(uv_work_s*, int)#2}::_FUN(uv_work_s*, int) [./out/Debug/node]
9: 0x1d6dabc [./out/Debug/node]
10: 0x1d6da01 [./out/Debug/node]
11: 0x1d72249 [./out/Debug/node]
12: 0x1d898a8 [./out/Debug/node]
13: 0x1d72bca uv_run [./out/Debug/node]
14: 0xf752a1 node::NodeMainInstance::Run() [./out/Debug/node]
15: 0xeb4e45 node::Start(int, char**) [./out/Debug/node]
16: 0x23331b2 main [./out/Debug/node]
17: 0x7f319142d1a3 __libc_start_main [/lib64/libc.so.6]
18: 0xdfecee _start [./out/Debug/node]
Aborted (core dumped)
</details>
comment created time in a month
issue commentopenssl/openssl
[3.0.0] `genpkey -algorithm EC -pkeyopt ec_param_enc:explicit` fails
I'm currently working on updating Node.js to build and run against OpenSSL 3.x and we use EVP_PKEY_CTX_set_ec_param_enc. (I've extracted this into a standalone program, ec.c which might be easier to follow)
This is causing test failures for us at the moment, but we can add checks to skip them until a fix lands upstream. I just wanted to let you know that we've run into this, and please let us know if there is anything we should do differently.
comment created time in a month
push eventdanbev/learning-libcrypto
commit sha e4d7ff1fd6eff6ddf293fd7cf554698b11384fd8
src: print the group order
push time in a month
push eventdanbev/learning-v8
commit sha 8fd4c20a5aa21f4970369c490f4a650031131021
doc: add initial array notes (wip)
push time in a month
push eventdanbev/learning-libcrypto
commit sha f57b24cfbad6dd81383462c86129bc5a262ff8ee
src: add back EVP_PKEY_CTX_set_ec_param_enc
push time in a month
push eventdanbev/learning-libcrypto
commit sha efe6521d09ee079a1b85d3df9e3f5667c9933ea0
src: print private and public keys
push time in a month
PR opened nodejs/node
Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->
- [x]
make -j4 test(UNIX), orvcbuild test(Windows) passes - [x] commit message follows commit guidelines
<!-- Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->
pr created time in a month
push eventdanbev/learning-libcrypto
commit sha 0d91389ecb020dad9e89a6432f37e16479a645c4
src: add error function to ec example
push time in a month
push eventdanbev/learning-libcrypto
commit sha 0b4164cf3449bde1cca28467fc24178b993dd7d4
doc: remove optype diff After trying this update other things failed which leads me to think that this is not the way forward. I'm going to open an issue in OpenSSL to see if they can give some pointers.
push time in a month
push eventdanbev/learning-libcrypto
commit sha 6beba0f559ed0cd7bb6eed9ab98770ddec110ce9
src: add message to error function
push time in a month
push eventdanbev/learning-libcrypto
commit sha 9ba1f3281386182516e79c3d27e7c3e7c6fe2334
src: remove loading of default provider
push time in a month
push eventdanbev/learning-libcrypto
commit sha 805ba8d0c19ca0008e6313e7dab54e2b90d857f0
src: add error_and_exit function to rsa_pss
push time in a month