koffi 0.9.33 → 0.9.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -95
- package/package.json +1 -1
- package/src/call_arm32.cc +18 -8
- package/src/ffi.cc +1 -2
- package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
- package/vendor/node-addon-api/CONTRIBUTING.md +0 -93
- package/vendor/node-addon-api/appveyor.yml +0 -37
- package/vendor/node-addon-api/benchmark/README.md +0 -47
- package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
- package/vendor/node-addon-api/benchmark/function_args.cc +0 -217
- package/vendor/node-addon-api/benchmark/function_args.js +0 -60
- package/vendor/node-addon-api/benchmark/index.js +0 -34
- package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -91
- package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -37
- package/vendor/node-addon-api/doc/addon.md +0 -163
- package/vendor/node-addon-api/doc/array.md +0 -81
- package/vendor/node-addon-api/doc/array_buffer.md +0 -155
- package/vendor/node-addon-api/doc/async_context.md +0 -86
- package/vendor/node-addon-api/doc/async_operations.md +0 -31
- package/vendor/node-addon-api/doc/async_worker.md +0 -427
- package/vendor/node-addon-api/doc/async_worker_variants.md +0 -557
- package/vendor/node-addon-api/doc/bigint.md +0 -97
- package/vendor/node-addon-api/doc/boolean.md +0 -68
- package/vendor/node-addon-api/doc/buffer.md +0 -150
- package/vendor/node-addon-api/doc/callback_scope.md +0 -54
- package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
- package/vendor/node-addon-api/doc/checker-tool.md +0 -32
- package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
- package/vendor/node-addon-api/doc/cmake-js.md +0 -68
- package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
- package/vendor/node-addon-api/doc/creating_a_release.md +0 -62
- package/vendor/node-addon-api/doc/dataview.md +0 -248
- package/vendor/node-addon-api/doc/date.md +0 -68
- package/vendor/node-addon-api/doc/env.md +0 -196
- package/vendor/node-addon-api/doc/error.md +0 -120
- package/vendor/node-addon-api/doc/error_handling.md +0 -254
- package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
- package/vendor/node-addon-api/doc/external.md +0 -63
- package/vendor/node-addon-api/doc/function.md +0 -402
- package/vendor/node-addon-api/doc/function_reference.md +0 -238
- package/vendor/node-addon-api/doc/generator.md +0 -13
- package/vendor/node-addon-api/doc/handle_scope.md +0 -63
- package/vendor/node-addon-api/doc/hierarchy.md +0 -91
- package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
- package/vendor/node-addon-api/doc/maybe.md +0 -76
- package/vendor/node-addon-api/doc/memory_management.md +0 -27
- package/vendor/node-addon-api/doc/name.md +0 -29
- package/vendor/node-addon-api/doc/node-gyp.md +0 -82
- package/vendor/node-addon-api/doc/number.md +0 -163
- package/vendor/node-addon-api/doc/object.md +0 -411
- package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
- package/vendor/node-addon-api/doc/object_reference.md +0 -117
- package/vendor/node-addon-api/doc/object_wrap.md +0 -588
- package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
- package/vendor/node-addon-api/doc/promises.md +0 -79
- package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
- package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
- package/vendor/node-addon-api/doc/range_error.md +0 -59
- package/vendor/node-addon-api/doc/reference.md +0 -113
- package/vendor/node-addon-api/doc/setup.md +0 -110
- package/vendor/node-addon-api/doc/string.md +0 -93
- package/vendor/node-addon-api/doc/symbol.md +0 -61
- package/vendor/node-addon-api/doc/threadsafe.md +0 -121
- package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
- package/vendor/node-addon-api/doc/type_error.md +0 -59
- package/vendor/node-addon-api/doc/typed_array.md +0 -78
- package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
- package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
- package/vendor/node-addon-api/doc/value.md +0 -340
- package/vendor/node-addon-api/doc/version_management.md +0 -43
- package/vendor/node-addon-api/package.json +0 -415
- package/vendor/node-addon-api/test/README.md +0 -91
- package/vendor/node-addon-api/test/addon.cc +0 -36
- package/vendor/node-addon-api/test/addon.js +0 -11
- package/vendor/node-addon-api/test/addon_build/index.js +0 -49
- package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -17
- package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -62
- package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
- package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
- package/vendor/node-addon-api/test/addon_data.cc +0 -99
- package/vendor/node-addon-api/test/addon_data.js +0 -46
- package/vendor/node-addon-api/test/array_buffer.cc +0 -243
- package/vendor/node-addon-api/test/array_buffer.js +0 -69
- package/vendor/node-addon-api/test/async_context.cc +0 -36
- package/vendor/node-addon-api/test/async_context.js +0 -122
- package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -83
- package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -46
- package/vendor/node-addon-api/test/async_progress_worker.cc +0 -134
- package/vendor/node-addon-api/test/async_progress_worker.js +0 -61
- package/vendor/node-addon-api/test/async_worker.cc +0 -106
- package/vendor/node-addon-api/test/async_worker.js +0 -179
- package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -13
- package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
- package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
- package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
- package/vendor/node-addon-api/test/basic_types/array.js +0 -35
- package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -38
- package/vendor/node-addon-api/test/basic_types/boolean.js +0 -35
- package/vendor/node-addon-api/test/basic_types/number.cc +0 -99
- package/vendor/node-addon-api/test/basic_types/number.js +0 -114
- package/vendor/node-addon-api/test/basic_types/value.cc +0 -120
- package/vendor/node-addon-api/test/basic_types/value.js +0 -133
- package/vendor/node-addon-api/test/bigint.cc +0 -91
- package/vendor/node-addon-api/test/bigint.js +0 -53
- package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
- package/vendor/node-addon-api/test/binding.cc +0 -173
- package/vendor/node-addon-api/test/binding.gyp +0 -124
- package/vendor/node-addon-api/test/buffer.cc +0 -183
- package/vendor/node-addon-api/test/buffer.js +0 -69
- package/vendor/node-addon-api/test/callbackscope.cc +0 -22
- package/vendor/node-addon-api/test/callbackscope.js +0 -49
- package/vendor/node-addon-api/test/common/index.js +0 -114
- package/vendor/node-addon-api/test/common/test_helper.h +0 -71
- package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
- package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
- package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
- package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -90
- package/vendor/node-addon-api/test/date.cc +0 -44
- package/vendor/node-addon-api/test/date.js +0 -18
- package/vendor/node-addon-api/test/env_cleanup.cc +0 -88
- package/vendor/node-addon-api/test/env_cleanup.js +0 -56
- package/vendor/node-addon-api/test/error.cc +0 -287
- package/vendor/node-addon-api/test/error.js +0 -81
- package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
- package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
- package/vendor/node-addon-api/test/error_terminating_environment.js +0 -95
- package/vendor/node-addon-api/test/external.cc +0 -81
- package/vendor/node-addon-api/test/external.js +0 -88
- package/vendor/node-addon-api/test/function.cc +0 -324
- package/vendor/node-addon-api/test/function.js +0 -133
- package/vendor/node-addon-api/test/function_reference.cc +0 -202
- package/vendor/node-addon-api/test/function_reference.js +0 -157
- package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -61
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -57
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -48
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -58
- package/vendor/node-addon-api/test/handlescope.cc +0 -60
- package/vendor/node-addon-api/test/handlescope.js +0 -14
- package/vendor/node-addon-api/test/index.js +0 -159
- package/vendor/node-addon-api/test/maybe/check.cc +0 -23
- package/vendor/node-addon-api/test/maybe/index.js +0 -38
- package/vendor/node-addon-api/test/memory_management.cc +0 -17
- package/vendor/node-addon-api/test/memory_management.js +0 -9
- package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
- package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
- package/vendor/node-addon-api/test/name.cc +0 -108
- package/vendor/node-addon-api/test/name.js +0 -59
- package/vendor/node-addon-api/test/napi_child.js +0 -14
- package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
- package/vendor/node-addon-api/test/object/delete_property.js +0 -41
- package/vendor/node-addon-api/test/object/finalizer.cc +0 -29
- package/vendor/node-addon-api/test/object/finalizer.js +0 -28
- package/vendor/node-addon-api/test/object/get_property.cc +0 -34
- package/vendor/node-addon-api/test/object/get_property.js +0 -40
- package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
- package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
- package/vendor/node-addon-api/test/object/has_property.cc +0 -38
- package/vendor/node-addon-api/test/object/has_property.js +0 -37
- package/vendor/node-addon-api/test/object/object.cc +0 -350
- package/vendor/node-addon-api/test/object/object.js +0 -217
- package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -66
- package/vendor/node-addon-api/test/object/object_deprecated.js +0 -47
- package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
- package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
- package/vendor/node-addon-api/test/object/set_property.cc +0 -45
- package/vendor/node-addon-api/test/object/set_property.js +0 -30
- package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
- package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
- package/vendor/node-addon-api/test/object_reference.cc +0 -219
- package/vendor/node-addon-api/test/object_reference.js +0 -259
- package/vendor/node-addon-api/test/objectwrap.cc +0 -268
- package/vendor/node-addon-api/test/objectwrap.js +0 -284
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
- package/vendor/node-addon-api/test/objectwrap_function.cc +0 -45
- package/vendor/node-addon-api/test/objectwrap_function.js +0 -22
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
- package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
- package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -40
- package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -19
- package/vendor/node-addon-api/test/promise.cc +0 -29
- package/vendor/node-addon-api/test/promise.js +0 -18
- package/vendor/node-addon-api/test/reference.cc +0 -24
- package/vendor/node-addon-api/test/reference.js +0 -14
- package/vendor/node-addon-api/test/run_script.cc +0 -56
- package/vendor/node-addon-api/test/run_script.js +0 -45
- package/vendor/node-addon-api/test/symbol.cc +0 -79
- package/vendor/node-addon-api/test/symbol.js +0 -73
- package/vendor/node-addon-api/test/testUtil.js +0 -54
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -195
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -188
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -63
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -12
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -115
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -26
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -225
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -42
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -53
- package/vendor/node-addon-api/test/thunking_manual.cc +0 -140
- package/vendor/node-addon-api/test/thunking_manual.js +0 -17
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -68
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -12
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -28
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -7
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -53
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -53
- package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
- package/vendor/node-addon-api/test/typedarray.cc +0 -216
- package/vendor/node-addon-api/test/typedarray.js +0 -69
- package/vendor/node-addon-api/test/version_management.cc +0 -27
- package/vendor/node-addon-api/test/version_management.js +0 -31
- package/vendor/node-addon-api/unit-test/README.md +0 -28
- package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
- package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
- package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
- package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
- package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
- package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
- package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
- package/vendor/node-addon-api/unit-test/setup.js +0 -13
- package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
- package/vendor/node-addon-api/unit-test/test.js +0 -30
- package/vendor/raylib/projects/VS2019/examples/audio_module_playing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/audio_multichannel_sound.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/audio_music_stream.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/audio_raw_stream.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/audio_sound_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_2d_camera.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_2d_camera_platformer.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_3d_camera_first_person.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_3d_camera_free.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_3d_camera_mode.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_3d_picking.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_basic_window.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_custom_logging.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_drop_files.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_input_gamepad.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_input_gestures.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_input_keys.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_input_mouse.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_input_mouse_wheel.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_input_multitouch.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_loading_thread.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_quat_conversion.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_random_values.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_scissor_test.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_split_screen.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_storage_values.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_vr_simulator.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_window_flags.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_window_letterbox.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/core_world_screen.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/easings_testbed.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/embedded_files_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_animation.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_billboard.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_box_collisions.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_cubicmap.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_first_person_maze.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_geometric_shapes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_heightmap.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_loading_gltf.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_loading_vox.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_mesh_generation.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_mesh_picking.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_orthographic_projection.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_rlgl_solar_system.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_skybox.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_waving_cubes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/models_yaw_pitch_roll.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/physics_demo.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/physics_friction.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/physics_movement.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/physics_restitution.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/physics_shatter.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/raudio_standalone.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/rlgl_standalone.vcxproj +0 -391
- package/vendor/raylib/projects/VS2019/examples/shaders_basic_lighting.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_custom_uniform.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_eratosthenes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_fog.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_hot_reloading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_julia_set.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_mesh_instancing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_model_shader.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_multi_sample2d.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_palette_switch.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_postprocessing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_raymarching.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_shapes_textures.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_simple_mask.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_spotlight.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_texture_drawing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shaders_texture_waves.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_basic_shapes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_bouncing_ball.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_collision_area.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_colors_palette.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_draw_circle_sector.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_draw_rectangle_rounded.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_draw_ring.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_easings_ball_anim.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_easings_box_anim.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_easings_rectangle_array.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_following_eyes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_lines_bezier.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib_anim.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/shapes_rectangle_scaling.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_font_filters.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_font_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_font_sdf.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_font_spritefont.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_format_text.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_input_box.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_raylib_fonts.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_rectangle_bounds.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_unicode.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/text_writing_anim.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_background_scrolling.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_blend_modes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_bunnymark.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_draw_tiled.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_image_drawing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_image_generation.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_image_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_image_processing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_image_text.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_logo_raylib.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_mouse_painting.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_npatch_drawing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_particles_blending.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_raw_data.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_rectangle.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_sprite_button.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_sprite_explosion.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_srcrec_dstrec.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/examples/textures_to_image.vcxproj +0 -387
- package/vendor/raylib/projects/VS2019/raylib/raylib.vcxproj +0 -341
- package/vendor/raylib/projects/VS2019/raylib.sln +0 -2274
- package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +0 -226
- package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +0 -10
- package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +0 -4
- package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +0 -75
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Table of contents
|
|
2
2
|
|
|
3
3
|
- [Introduction](#introduction)
|
|
4
|
+
- [Benchmarks](#benchmarks)
|
|
5
|
+
* [atoi results](#atoi-results)
|
|
6
|
+
* [Raylib results](#raylib-results)
|
|
4
7
|
- [Installation](#installation)
|
|
5
8
|
* [Windows](#windows)
|
|
6
9
|
* [Other platforms](#other-platforms)
|
|
7
10
|
- [Get started](#get-started)
|
|
8
11
|
- [Tests](#tests)
|
|
9
|
-
- [Benchmarks](#benchmarks)
|
|
10
|
-
* [atoi results](#atoi-results)
|
|
11
|
-
* [Raylib results](#raylib-results)
|
|
12
12
|
|
|
13
13
|
# Introduction
|
|
14
14
|
|
|
@@ -27,12 +27,13 @@ The following platforms __are officially supported and tested__ at the moment:
|
|
|
27
27
|
* FreeBSD ARM64 Little Endian
|
|
28
28
|
* macOS x86_64
|
|
29
29
|
|
|
30
|
-
The following platforms will __soon be officially supported__
|
|
30
|
+
The following platforms will __soon be officially supported__, when I can get my hand on a machine...:
|
|
31
31
|
|
|
32
32
|
* macOS ARM64
|
|
33
33
|
|
|
34
34
|
The following platforms __may be supported__ but are not tested:
|
|
35
35
|
|
|
36
|
+
* Linux ARM32 (full software FP) Little Endian
|
|
36
37
|
* NetBSD x86_64
|
|
37
38
|
* NetBSD ARM64
|
|
38
39
|
* OpenBSD x86_64
|
|
@@ -40,6 +41,65 @@ The following platforms __may be supported__ but are not tested:
|
|
|
40
41
|
|
|
41
42
|
This is still in development, bugs are to expected. More tests will come in the near future.
|
|
42
43
|
|
|
44
|
+
# Benchmarks
|
|
45
|
+
|
|
46
|
+
In order to run it, go to `koffi/benchmark` and run `../../cnoke/cnoke.js` (or `node ..\..\cnoke\cnoke.js` on Windows) before doing anything else.
|
|
47
|
+
|
|
48
|
+
Once this is done, you can execute each implementation, e.g. `build/atoi_cc` or `./atoi_koffi.js`. You can optionally define a custom number of iterations, e.g. `./atoi_koffi.js 10000000`.
|
|
49
|
+
|
|
50
|
+
## atoi results
|
|
51
|
+
|
|
52
|
+
This test is based around repeated calls to a simple standard C function atoi, and has three implementations:
|
|
53
|
+
- the first one is the reference, it calls atoi through an N-API module, and is close to the theoretical limit of a perfect (no overhead) Node.js > C FFI implementation.
|
|
54
|
+
- the second one calls atoi through Koffi
|
|
55
|
+
- the third one uses the official Node.js FFI implementation, node-ffi-napi
|
|
56
|
+
|
|
57
|
+
Because atoi is a small call, the FFI overhead is clearly visible.
|
|
58
|
+
|
|
59
|
+
### Linux
|
|
60
|
+
|
|
61
|
+
The results below were measured on my x86_64 Linux machine (AMD® Ryzen™ 7 5800H 16G):
|
|
62
|
+
|
|
63
|
+
Benchmark | Iterations | Total time | Overhead
|
|
64
|
+
------------- | ---------- | ----------- | ----------
|
|
65
|
+
atoi_napi | 20000000 | 1.10s | (baseline)
|
|
66
|
+
atoi_koffi | 20000000 | 1.91s | x1.73
|
|
67
|
+
atoi_node_ffi | 20000000 | 640.49s | x582
|
|
68
|
+
|
|
69
|
+
### Windows
|
|
70
|
+
|
|
71
|
+
The results below were measured on my x86_64 Windows machine (AMD® Ryzen™ 7 5800H 16G):
|
|
72
|
+
|
|
73
|
+
Benchmark | Iterations | Total time | Overhead
|
|
74
|
+
------------- | ---------- | ----------- | ----------
|
|
75
|
+
atoi_napi | 20000000 | 1.94s | (baseline)
|
|
76
|
+
atoi_koffi | 20000000 | 3.15s | x1.62
|
|
77
|
+
atoi_node_ffi | 20000000 | 640.49s | x242
|
|
78
|
+
|
|
79
|
+
## Raylib results
|
|
80
|
+
|
|
81
|
+
This benchmark uses the CPU-based image drawing functions in Raylib. The calls are much heavier than in the atoi benchmark, thus the FFI overhead is reduced. In this implemenetation, the baseline is a full C++ version of the code.
|
|
82
|
+
|
|
83
|
+
### Linux
|
|
84
|
+
|
|
85
|
+
The results below were measured on my x86_64 Linux machine (AMD® Ryzen™ 7 5800H 16G):
|
|
86
|
+
|
|
87
|
+
Benchmark | Iterations | Total time | Overhead
|
|
88
|
+
--------------- | ---------- | ----------- | ----------
|
|
89
|
+
raylib_cc | 100 | 4.14s | (baseline)
|
|
90
|
+
raylib_koffi | 100 | 6.25s | x1.51
|
|
91
|
+
raylib_node_ffi | 100 | 27.13s | x6.55
|
|
92
|
+
|
|
93
|
+
### Windows
|
|
94
|
+
|
|
95
|
+
The results below were measured on my x86_64 Windows machine (AMD® Ryzen™ 7 5800H 16G):
|
|
96
|
+
|
|
97
|
+
Benchmark | Iterations | Total time | Overhead
|
|
98
|
+
--------------- | ---------- | ----------- | ----------
|
|
99
|
+
raylib_cc | 100 | 8.39s | (baseline)
|
|
100
|
+
raylib_koffi | 100 | 11.51s | x1.37
|
|
101
|
+
raylib_node_ffi | 100 | 31.47s | x3.8
|
|
102
|
+
|
|
43
103
|
# Installation
|
|
44
104
|
|
|
45
105
|
## Windows
|
|
@@ -251,94 +311,4 @@ Each machine is configured to run a VNC server available locally, which you can
|
|
|
251
311
|
|
|
252
312
|
```sh
|
|
253
313
|
node test.js info debian_x64
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
# Benchmarks
|
|
257
|
-
|
|
258
|
-
At this stage, two benchmarks are implemented:
|
|
259
|
-
* The first one is based around repeated calls to atoi, and has four implementations: one in C++, one calling atoi through an NAPI module, one using Koffi, and one with node-ffi-napi. This is a simple function, thus the JS and FFI overhead is clearly visible.
|
|
260
|
-
* The second one is based around Raylib, and will execute much more heavier functions repeatdly. Also in three versions: Koffi, node-ffi-napi and C code.
|
|
261
|
-
|
|
262
|
-
In order to run it, go to `koffi/benchmark` and run `../../cnoke/cnoke.js` (or `node ..\..\cnoke\cnoke.js` on Windows) before doing anything else.
|
|
263
|
-
|
|
264
|
-
Once this is done, you can execute each implementation, e.g. `build/atoi_cc` or `./atoi_koffi.js`. You can optionally define a custom number of iterations, e.g. `./atoi_koffi.js 10000000`.
|
|
265
|
-
|
|
266
|
-
## atoi results
|
|
267
|
-
|
|
268
|
-
Here are some results from 2022-04-24 on Linux on my machine (AMD® Ryzen™ 7 5800H 16G):
|
|
269
|
-
|
|
270
|
-
```sh
|
|
271
|
-
$ build/atoi_cc
|
|
272
|
-
Iterations: 20000000
|
|
273
|
-
Time: 0.24s
|
|
274
|
-
|
|
275
|
-
$ ./atoi_napi.js
|
|
276
|
-
Iterations: 20000000
|
|
277
|
-
Time: 1.10s
|
|
278
|
-
|
|
279
|
-
$ ./atoi_koffi.js
|
|
280
|
-
Iterations: 20000000
|
|
281
|
-
Time: 1.91s
|
|
282
|
-
|
|
283
|
-
# Note: the Node-FFI version does a few setTimeout calls to force the GC to run (around 20
|
|
284
|
-
# for the example below), without which Node will consume all memory because the GC never appears
|
|
285
|
-
# to run, or not enough. It's not ideal but on the other hand it counts as another limitation
|
|
286
|
-
# to Node-FFI performance.
|
|
287
|
-
$ ./atoi_node_ffi.js
|
|
288
|
-
Iterations: 20000000
|
|
289
|
-
Time: 640.49s
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
And on Windows on the same machine (AMD® Ryzen™ 7 5800H 16G):
|
|
293
|
-
|
|
294
|
-
```sh
|
|
295
|
-
$ build\atoi_cc.exe
|
|
296
|
-
Iterations: 20000000
|
|
297
|
-
Time: 0.25s
|
|
298
|
-
|
|
299
|
-
$ node atoi_napi.js
|
|
300
|
-
Iterations: 20000000
|
|
301
|
-
Time: 1.94s
|
|
302
|
-
|
|
303
|
-
$ node atoi_koffi.js
|
|
304
|
-
Iterations: 20000000
|
|
305
|
-
Time: 3.15s
|
|
306
|
-
|
|
307
|
-
$ node atoi_node_ffi.js
|
|
308
|
-
Iterations: 20000000
|
|
309
|
-
Time: 267.20s
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
## Raylib results
|
|
313
|
-
|
|
314
|
-
Here are some results from 2022-04-24 on Linux on my machine (AMD® Ryzen™ 7 5800H 16G):
|
|
315
|
-
|
|
316
|
-
```sh
|
|
317
|
-
$ build/raylib_cc
|
|
318
|
-
Iterations: 100
|
|
319
|
-
Time: 4.14s
|
|
320
|
-
|
|
321
|
-
$ ./raylib_koffi.js
|
|
322
|
-
Iterations: 100
|
|
323
|
-
Time: 6.25s
|
|
324
|
-
|
|
325
|
-
$ ./raylib_node_ffi.js
|
|
326
|
-
Iterations: 100
|
|
327
|
-
Time: 27.13s
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
And on Windows on the same machine (AMD® Ryzen™ 7 5800H 16G):
|
|
331
|
-
|
|
332
|
-
```sh
|
|
333
|
-
$ build\raylib_cc.exe
|
|
334
|
-
Iterations: 100
|
|
335
|
-
Time: 8.39s
|
|
336
|
-
|
|
337
|
-
$ node raylib_koffi.js
|
|
338
|
-
Iterations: 100
|
|
339
|
-
Time: 11.51s
|
|
340
|
-
|
|
341
|
-
$ node raylib_node_ffi.js
|
|
342
|
-
Iterations: 100
|
|
343
|
-
Time: 32.47s
|
|
344
|
-
```
|
|
314
|
+
```
|
package/package.json
CHANGED
package/src/call_arm32.cc
CHANGED
|
@@ -39,6 +39,7 @@ extern "C" HfaRet ForwardCallXDDDD(const void *func, uint8_t *sp);
|
|
|
39
39
|
|
|
40
40
|
static bool IsHFA(const TypeInfo *type)
|
|
41
41
|
{
|
|
42
|
+
#ifdef __ARM_PCS_VFP
|
|
42
43
|
if (type->primitive != PrimitiveKind::Record)
|
|
43
44
|
return false;
|
|
44
45
|
|
|
@@ -54,6 +55,9 @@ static bool IsHFA(const TypeInfo *type)
|
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
return true;
|
|
58
|
+
#else
|
|
59
|
+
return false;
|
|
60
|
+
#endif
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
bool AnalyseFunction(InstanceData *, FunctionInfo *func)
|
|
@@ -107,17 +111,23 @@ bool AnalyseFunction(InstanceData *, FunctionInfo *func)
|
|
|
107
111
|
case PrimitiveKind::Float64: {
|
|
108
112
|
Size need = param.type->size / 4;
|
|
109
113
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
+
#ifdef __ARM_PCS_VFP
|
|
115
|
+
bool vfp = !param.variadic;
|
|
116
|
+
#else
|
|
117
|
+
bool vfp = false;
|
|
118
|
+
#endif
|
|
119
|
+
|
|
120
|
+
if (vfp) {
|
|
121
|
+
if (need <= vec_avail) {
|
|
122
|
+
param.vec_count = need;
|
|
123
|
+
vec_avail -= need;
|
|
114
124
|
} else {
|
|
115
125
|
started_stack = true;
|
|
116
126
|
}
|
|
117
127
|
} else {
|
|
118
|
-
if (need <=
|
|
119
|
-
param.
|
|
120
|
-
|
|
128
|
+
if (need <= gpr_avail) {
|
|
129
|
+
param.gpr_count = need;
|
|
130
|
+
gpr_avail -= need;
|
|
121
131
|
} else {
|
|
122
132
|
started_stack = true;
|
|
123
133
|
}
|
|
@@ -136,7 +146,7 @@ bool AnalyseFunction(InstanceData *, FunctionInfo *func)
|
|
|
136
146
|
vec_avail = 0;
|
|
137
147
|
started_stack = true;
|
|
138
148
|
}
|
|
139
|
-
} else
|
|
149
|
+
} else {
|
|
140
150
|
int gpr_count = (param.type->size + 3) / 4;
|
|
141
151
|
|
|
142
152
|
if (gpr_count <= gpr_avail) {
|
package/src/ffi.cc
CHANGED
|
@@ -284,7 +284,7 @@ static Napi::Value TranslateVariadicCall(const Napi::CallbackInfo &info)
|
|
|
284
284
|
return env.Null();
|
|
285
285
|
}
|
|
286
286
|
|
|
287
|
-
for (Size i = func.parameters.len; i < info.Length(); i += 2) {
|
|
287
|
+
for (Size i = func.parameters.len; i < (Size)info.Length(); i += 2) {
|
|
288
288
|
ParameterInfo param = {};
|
|
289
289
|
|
|
290
290
|
param.type = ResolveType(instance, info[i], ¶m.directions);
|
|
@@ -585,7 +585,6 @@ static Napi::Object InitBaseTypes(Napi::Env env)
|
|
|
585
585
|
RegisterPrimitiveType(instance, "float", PrimitiveKind::Float32, 4, alignof(float));
|
|
586
586
|
RegisterPrimitiveType(instance, "double", PrimitiveKind::Float64, 8, alignof(double));
|
|
587
587
|
RegisterPrimitiveType(instance, "string", PrimitiveKind::String, RG_SIZE(void *), alignof(void *));
|
|
588
|
-
RegisterPrimitiveType(instance, "str", PrimitiveKind::String, RG_SIZE(void *), alignof(void *));
|
|
589
588
|
|
|
590
589
|
Napi::Object types = Napi::Object::New(env);
|
|
591
590
|
for (TypeInfo &type: instance->types) {
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# Developer's Certificate of Origin 1.1
|
|
3
|
-
|
|
4
|
-
By making a contribution to this project, I certify that:
|
|
5
|
-
|
|
6
|
-
(a) The contribution was created in whole or in part by me and I
|
|
7
|
-
have the right to submit it under the open source license
|
|
8
|
-
indicated in the file; or
|
|
9
|
-
|
|
10
|
-
(b) The contribution is based upon previous work that, to the best
|
|
11
|
-
of my knowledge, is covered under an appropriate open source
|
|
12
|
-
license and I have the right under that license to submit that
|
|
13
|
-
work with modifications, whether created in whole or in part
|
|
14
|
-
by me, under the same open source license (unless I am
|
|
15
|
-
permitted to submit under a different license), as indicated
|
|
16
|
-
in the file; or
|
|
17
|
-
|
|
18
|
-
(c) The contribution was provided directly to me by some other
|
|
19
|
-
person who certified (a), (b) or (c) and I have not modified
|
|
20
|
-
it.
|
|
21
|
-
|
|
22
|
-
(d) I understand and agree that this project and the contribution
|
|
23
|
-
are public and that a record of the contribution (including all
|
|
24
|
-
personal information I submit with it, including my sign-off) is
|
|
25
|
-
maintained indefinitely and may be redistributed consistent with
|
|
26
|
-
this project or the open source license(s) involved.
|
|
27
|
-
|
|
28
|
-
# **node-addon-api** Contribution Philosophy
|
|
29
|
-
|
|
30
|
-
The **node-addon-api** team loves contributions. There are many ways in which you can
|
|
31
|
-
contribute to **node-addon-api**:
|
|
32
|
-
- Source code fixes
|
|
33
|
-
- Additional tests
|
|
34
|
-
- Documentation improvements
|
|
35
|
-
- Joining the Node-API working group and participating in meetings
|
|
36
|
-
|
|
37
|
-
## Source changes
|
|
38
|
-
|
|
39
|
-
**node-addon-api** is meant to be a thin convenience wrapper around Node-API. With this
|
|
40
|
-
in mind, contributions of any new APIs that wrap around a core Node-API API will
|
|
41
|
-
be considered for merge. However, changes that wrap existing **node-addon-api**
|
|
42
|
-
APIs are encouraged to instead be provided as an ecosystem module. The
|
|
43
|
-
**node-addon-api** team is happy to link to a curated set of modules that build on
|
|
44
|
-
top of **node-addon-api** if they have broad usefulness to the community and promote
|
|
45
|
-
a recommended idiom or pattern.
|
|
46
|
-
|
|
47
|
-
### Rationale
|
|
48
|
-
|
|
49
|
-
The Node-API team considered a couple different approaches with regards to changes
|
|
50
|
-
extending **node-addon-api**
|
|
51
|
-
- Larger core module - Incorporate these helpers and patterns into **node-addon-api**
|
|
52
|
-
- Extras package - Create a new package (strawman name '**node-addon-api**-extras')
|
|
53
|
-
that contain utility classes and methods that help promote good patterns and
|
|
54
|
-
idioms while writing native addons with **node-addon-api**.
|
|
55
|
-
- Ecosystem - Encourage creation of a module ecosystem around **node-addon-api**
|
|
56
|
-
where folks can build on top of it.
|
|
57
|
-
|
|
58
|
-
#### Larger Core
|
|
59
|
-
This is probably our simplest option in terms of immediate action needed. It
|
|
60
|
-
would involve landing any open PRs against **node-addon-api**, and continuing to
|
|
61
|
-
encourage folks to make PRs for utility helpers against the same repository.
|
|
62
|
-
|
|
63
|
-
The downside of the approach is the following:
|
|
64
|
-
- Less coherency for our API set
|
|
65
|
-
- More maintenance burden on the Node-API WG core team.
|
|
66
|
-
|
|
67
|
-
#### Extras Package
|
|
68
|
-
This involves us spinning up a new package which contains the utility classes
|
|
69
|
-
and methods. This has the benefit of having a separate module where helpers
|
|
70
|
-
which make it easier to implement certain patterns and idioms for native addons
|
|
71
|
-
easier.
|
|
72
|
-
|
|
73
|
-
The downside of this approach is the following:
|
|
74
|
-
- Potential for confusion - we'll need to provide clear documentation to help the
|
|
75
|
-
community understand where a particular contribution should be directed to (what
|
|
76
|
-
belongs in **node-addon-api** vs **node-addon-api-extras**)
|
|
77
|
-
- Need to define the level of support/API guarantees
|
|
78
|
-
- Unclear if the maintenance burden on the Node-API WG is reduced or not
|
|
79
|
-
|
|
80
|
-
#### Ecosystem
|
|
81
|
-
This doesn't require a ton of up-front work from the Node-API WG. Instead of
|
|
82
|
-
accepting utility PRs into **node-addon-api** or creating and maintaining a new
|
|
83
|
-
module, the WG will encourage the creation of an ecosystem of modules that
|
|
84
|
-
build on top of **node-addon-api**, and provide some level of advertising for these
|
|
85
|
-
modules (listing them out on the repository/wiki, using them in workshops/tutorials
|
|
86
|
-
etc).
|
|
87
|
-
|
|
88
|
-
The downside of this approach is the following:
|
|
89
|
-
- Potential for lack of visibility - evangelism and education is hard, and module
|
|
90
|
-
authors might not find right patterns and instead implement things themselves
|
|
91
|
-
- There might be greater friction for the Node-API WG in evolving APIs since the
|
|
92
|
-
ecosystem would have taken dependencies on the API shape of **node-addon-api**
|
|
93
|
-
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
environment:
|
|
2
|
-
# https://github.com/jasongin/nvs/blob/HEAD/doc/CI.md
|
|
3
|
-
NVS_VERSION: 1.4.2
|
|
4
|
-
matrix:
|
|
5
|
-
- NODEJS_VERSION: node/10
|
|
6
|
-
- NODEJS_VERSION: node/12
|
|
7
|
-
- NODEJS_VERSION: node/14
|
|
8
|
-
- NODEJS_VERSION: nightly
|
|
9
|
-
|
|
10
|
-
os: Visual Studio 2017
|
|
11
|
-
platform:
|
|
12
|
-
- x86
|
|
13
|
-
- x64
|
|
14
|
-
|
|
15
|
-
install:
|
|
16
|
-
# nvs
|
|
17
|
-
- git clone --branch v%NVS_VERSION% --depth 1 https://github.com/jasongin/nvs %LOCALAPPDATA%\nvs
|
|
18
|
-
- set PATH=%LOCALAPPDATA%\nvs;%PATH%
|
|
19
|
-
- nvs --version
|
|
20
|
-
# node.js
|
|
21
|
-
- nvs add %NODEJS_VERSION%/%PLATFORM%
|
|
22
|
-
- nvs use %NODEJS_VERSION%/%PLATFORM%
|
|
23
|
-
- node --version
|
|
24
|
-
- node -p process.arch
|
|
25
|
-
- npm --version
|
|
26
|
-
# app
|
|
27
|
-
- npm install
|
|
28
|
-
|
|
29
|
-
test_script:
|
|
30
|
-
- npm test
|
|
31
|
-
|
|
32
|
-
build: off
|
|
33
|
-
|
|
34
|
-
version: "{build}"
|
|
35
|
-
|
|
36
|
-
cache:
|
|
37
|
-
- node_modules
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# Benchmarks
|
|
2
|
-
|
|
3
|
-
## Running the benchmarks
|
|
4
|
-
|
|
5
|
-
From the parent directory, run
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm run-script benchmark
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
The above script supports the following arguments:
|
|
12
|
-
|
|
13
|
-
* `--benchmarks=...`: A semicolon-separated list of benchmark names. These names
|
|
14
|
-
will be mapped to file names in this directory by appending `.js`.
|
|
15
|
-
|
|
16
|
-
## Adding benchmarks
|
|
17
|
-
|
|
18
|
-
The steps below should be followed when adding new benchmarks.
|
|
19
|
-
|
|
20
|
-
0. Decide on a name for the benchmark. This name will be used in several places.
|
|
21
|
-
This example will use the name `new_benchmark`.
|
|
22
|
-
|
|
23
|
-
0. Create files `new_benchmark.cc` and `new_benchmark.js` in this directory.
|
|
24
|
-
|
|
25
|
-
0. Copy an existing benchmark in `binding.gyp` and change the target name prefix
|
|
26
|
-
and the source file name to `new_benchmark`. This should result in two new
|
|
27
|
-
targets which look like this:
|
|
28
|
-
|
|
29
|
-
```gyp
|
|
30
|
-
{
|
|
31
|
-
'target_name': 'new_benchmark',
|
|
32
|
-
'sources': [ 'new_benchmark.cc' ],
|
|
33
|
-
'includes': [ '../except.gypi' ],
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
'target_name': 'new_benchmark_noexcept',
|
|
37
|
-
'sources': [ 'new_benchmark.cc' ],
|
|
38
|
-
'includes': [ '../noexcept.gypi' ],
|
|
39
|
-
},
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
There should always be a pair of targets: one bearing the name of the
|
|
43
|
-
benchmark and configured with C++ exceptions enabled, and one bearing the
|
|
44
|
-
same name followed by the suffix `_noexcept` and configured with C++
|
|
45
|
-
exceptions disabled. This will ensure that the benchmark can be written to
|
|
46
|
-
cover both the case where C++ exceptions are enabled and the case where they
|
|
47
|
-
are disabled.
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
'target_defaults': { 'includes': ['../common.gypi'] },
|
|
3
|
-
'targets': [
|
|
4
|
-
{
|
|
5
|
-
'target_name': 'function_args',
|
|
6
|
-
'sources': [ 'function_args.cc' ],
|
|
7
|
-
'includes': [ '../except.gypi' ],
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
'target_name': 'function_args_noexcept',
|
|
11
|
-
'sources': [ 'function_args.cc' ],
|
|
12
|
-
'includes': [ '../noexcept.gypi' ],
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
'target_name': 'property_descriptor',
|
|
16
|
-
'sources': [ 'property_descriptor.cc' ],
|
|
17
|
-
'includes': [ '../except.gypi' ],
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
'target_name': 'property_descriptor_noexcept',
|
|
21
|
-
'sources': [ 'property_descriptor.cc' ],
|
|
22
|
-
'includes': [ '../noexcept.gypi' ],
|
|
23
|
-
},
|
|
24
|
-
]
|
|
25
|
-
}
|