koffi 1.0.3 → 1.1.0-beta.0
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 +48 -22
- package/build/qemu/1.1.0-beta.0/koffi_darwin_x64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_freebsd_arm64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_freebsd_ia32.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_freebsd_x64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_linux_arm.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_linux_arm64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_linux_ia32.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_linux_x64.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_win32_ia32.tar.gz +0 -0
- package/build/qemu/1.1.0-beta.0/koffi_win32_x64.tar.gz +0 -0
- package/package.json +1 -1
- package/qemu/qemu.js +11 -5
- package/qemu/registry/machines.json +20 -10
- package/src/abi_arm32.cc +130 -215
- package/src/abi_arm64.cc +103 -117
- package/src/abi_x64_sysv.cc +117 -135
- package/src/abi_x64_win.cc +89 -98
- package/src/abi_x86.cc +91 -99
- package/src/call.cc +164 -40
- package/src/call.hh +53 -31
- package/src/ffi.cc +163 -19
- package/src/ffi.hh +30 -22
- package/src/util.cc +0 -127
- package/src/util.hh +0 -16
- package/test/misc.c +68 -2
- package/vendor/libcc/libcc.hh +1 -1
- package/build/qemu/1.0.3/koffi_darwin_x64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_freebsd_arm64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_freebsd_ia32.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_freebsd_x64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_linux_arm.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_linux_arm64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_linux_ia32.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_linux_x64.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_win32_ia32.tar.gz +0 -0
- package/build/qemu/1.0.3/koffi_win32_x64.tar.gz +0 -0
- package/test/misc.js +0 -180
- 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/README.md
CHANGED
|
@@ -16,36 +16,37 @@ Koffi is a fast and easy-to-use FFI module for Node.js, with support for primiti
|
|
|
16
16
|
|
|
17
17
|
After the release of version 1.0, the following features are planned:
|
|
18
18
|
|
|
19
|
-
* 1.1:
|
|
20
|
-
* 1.2:
|
|
19
|
+
* 1.1: Asynchronous calls
|
|
20
|
+
* 1.2: Fixed-size array types
|
|
21
|
+
* 1.3: C to JS callbacks
|
|
21
22
|
|
|
22
23
|
The following platforms __are officially supported and tested__ at the moment:
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
--------- | -------------------------------- |
|
|
26
|
-
Windows | x86 (cdecl, stdcall, fastcall) | 🟩 | 🟥
|
|
27
|
-
Windows | x86_64 | 🟩 | 🟥
|
|
28
|
-
Linux | x86 | 🟩 | 🟥
|
|
29
|
-
Linux | x86_64 | 🟩 | 🟥
|
|
30
|
-
Linux | ARM32+VFP Little Endian | 🟩 | 🟥
|
|
31
|
-
Linux | ARM64 Little Endian | 🟩 | 🟥
|
|
32
|
-
FreeBSD | x86 | 🟩 | 🟥
|
|
33
|
-
FreeBSD | x86_64 | 🟩 | 🟥
|
|
34
|
-
FreeBSD | ARM64 Little Endian | 🟩 | 🟥
|
|
35
|
-
macOS | x86_64 | 🟩 | 🟥
|
|
36
|
-
macOS | ARM64 (M1) Little Endian | 🟩 | 🟥
|
|
37
|
-
OpenBSD | x86_64 | 🟧
|
|
38
|
-
OpenBSD | x86 | 🟧
|
|
39
|
-
OpenBSD | ARM64 Little Endian | 🟧
|
|
40
|
-
NetBSD | x86_64 | 🟧
|
|
41
|
-
NetBSD | x86 | 🟧
|
|
42
|
-
NetBSD | ARM64 Little Endian | 🟧
|
|
25
|
+
Platform | Architecture | Sync calls | Async calls | Callbacks | Pre-built binary
|
|
26
|
+
--------- | -------------------------------- | ---------- | ----------- | --------- | ----------------
|
|
27
|
+
Windows | x86 (cdecl, stdcall, fastcall) | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
28
|
+
Windows | x86_64 | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
29
|
+
Linux | x86 | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
30
|
+
Linux | x86_64 | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
31
|
+
Linux | ARM32+VFP Little Endian | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
32
|
+
Linux | ARM64 Little Endian | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
33
|
+
FreeBSD | x86 | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
34
|
+
FreeBSD | x86_64 | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
35
|
+
FreeBSD | ARM64 Little Endian | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
36
|
+
macOS | x86_64 | 🟩 Yes | 🟩 Yes | 🟥 No | 🟩 Yes
|
|
37
|
+
macOS | ARM64 (M1) Little Endian | 🟩 Yes | 🟩 Yes | 🟥 No | 🟥 No
|
|
38
|
+
OpenBSD | x86_64 | 🟧 Maybe | 🟧 Maybe | 🟥 No | 🟥 No
|
|
39
|
+
OpenBSD | x86 | 🟧 Maybe | 🟧 Maybe | 🟥 No | 🟥 No
|
|
40
|
+
OpenBSD | ARM64 Little Endian | 🟧 Maybe | 🟧 Maybe | 🟥 No | 🟥 No
|
|
41
|
+
NetBSD | x86_64 | 🟧 Maybe | 🟧 Maybe | 🟥 No | 🟥 No
|
|
42
|
+
NetBSD | x86 | 🟧 Maybe | 🟧 Maybe | 🟥 No | 🟥 No
|
|
43
|
+
NetBSD | ARM64 Little Endian | 🟧 Maybe | 🟧 Maybe | 🟥 No | 🟥 No
|
|
43
44
|
|
|
44
45
|
🟩 Tested, fully operational
|
|
45
46
|
🟧 May work, but not actively tested
|
|
46
47
|
🟥 Does not work yet
|
|
47
48
|
|
|
48
|
-
This is still in development, bugs are to expected. More tests will come in the near future.
|
|
49
|
+
This is still in development, bugs are to be expected. More tests will come in the near future.
|
|
49
50
|
|
|
50
51
|
# Get started
|
|
51
52
|
|
|
@@ -226,6 +227,31 @@ const printf = lib.func('printf', 'int', ['string', '...']);
|
|
|
226
227
|
printf('Integer %d, double %g, string %s', 'int', 6, 'double', 8.5, 'string', 'THE END');
|
|
227
228
|
```
|
|
228
229
|
|
|
230
|
+
## Asynchronous calls
|
|
231
|
+
|
|
232
|
+
You can issue asynchronous calls by calling the function through its async member.
|
|
233
|
+
In this case, you need to provide a callback function as the last argument, with
|
|
234
|
+
`(err, res)` parameters.
|
|
235
|
+
|
|
236
|
+
```js
|
|
237
|
+
const koffi = require('koffi');
|
|
238
|
+
const lib = koffi.load('libc.so.6');
|
|
239
|
+
|
|
240
|
+
const atoi = lib.func('int atoi(const char *str)');
|
|
241
|
+
|
|
242
|
+
atoi.async('1257', (err, res) => {
|
|
243
|
+
console.log('Result:', res);
|
|
244
|
+
})
|
|
245
|
+
console.log('Hello World!');
|
|
246
|
+
|
|
247
|
+
// This program will print "Hello World!", and then "Result: 1257"
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
You can easily convert this callback-style async function with `util.promisify()` from the
|
|
251
|
+
Node.js standard library.
|
|
252
|
+
|
|
253
|
+
Variadic functions do not support async.
|
|
254
|
+
|
|
229
255
|
## Callbacks
|
|
230
256
|
|
|
231
257
|
Koffi does not yet support passing JS functions as callbacks. This is planned for version 1.1.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/qemu/qemu.js
CHANGED
|
@@ -430,16 +430,22 @@ async function copy(func) {
|
|
|
430
430
|
let copied = true;
|
|
431
431
|
|
|
432
432
|
for (let directory of func(machine)) {
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
433
|
+
for (let i = 0; i < 10; i++) {
|
|
434
|
+
try {
|
|
435
|
+
await machine.ssh.exec('rm', ['-rf', directory]);
|
|
436
|
+
break;
|
|
437
|
+
} catch (err) {
|
|
438
|
+
// Fails often on Windows (busy directory or whatever), but rarely a problem
|
|
439
|
+
|
|
440
|
+
await wait(1000);
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
437
443
|
}
|
|
438
444
|
|
|
439
445
|
try {
|
|
440
446
|
await machine.ssh.putDirectory(snapshot_dir, directory, {
|
|
441
447
|
recursive: true,
|
|
442
|
-
concurrency: 4
|
|
448
|
+
concurrency: (process.platform != 'win32') ? 4 : 1
|
|
443
449
|
});
|
|
444
450
|
} catch (err) {
|
|
445
451
|
ignore.add(machine);
|
|
@@ -35,8 +35,9 @@
|
|
|
35
35
|
"Build": "node ../cnoke/cnoke.js -C test"
|
|
36
36
|
},
|
|
37
37
|
"commands": {
|
|
38
|
+
"Test Sync": "node test/sync.js",
|
|
39
|
+
"Test Async": "node test/async.js",
|
|
38
40
|
"Test Raylib": "xvfb-run node test/raylib.js",
|
|
39
|
-
"Test Misc": "node test/misc.js",
|
|
40
41
|
"Test SQLite": "node test/sqlite.js"
|
|
41
42
|
}
|
|
42
43
|
}
|
|
@@ -79,8 +80,9 @@
|
|
|
79
80
|
"Build": "node ../cnoke/cnoke.js -C test"
|
|
80
81
|
},
|
|
81
82
|
"commands": {
|
|
83
|
+
"Test Sync": "node test/sync.js",
|
|
84
|
+
"Test Async": "node test/async.js",
|
|
82
85
|
"Test Raylib": "xvfb-run node test/raylib.js",
|
|
83
|
-
"Test Misc": "node test/misc.js",
|
|
84
86
|
"Test SQLite": "node test/sqlite.js"
|
|
85
87
|
}
|
|
86
88
|
}
|
|
@@ -123,8 +125,9 @@
|
|
|
123
125
|
"Build": "node ../cnoke/cnoke.js -C test"
|
|
124
126
|
},
|
|
125
127
|
"commands": {
|
|
128
|
+
"Test Sync": "node test/sync.js",
|
|
129
|
+
"Test Async": "node test/async.js",
|
|
126
130
|
"Test Raylib": "xvfb-run node test/raylib.js",
|
|
127
|
-
"Test Misc": "node test/misc.js",
|
|
128
131
|
"Test SQLite": "node test/sqlite.js"
|
|
129
132
|
}
|
|
130
133
|
}
|
|
@@ -167,8 +170,9 @@
|
|
|
167
170
|
"Build": "node ../cnoke/cnoke.js -C test"
|
|
168
171
|
},
|
|
169
172
|
"commands": {
|
|
173
|
+
"Test Sync": "node test/sync.js",
|
|
174
|
+
"Test Async": "node test/async.js",
|
|
170
175
|
"Test Raylib": "xvfb-run node test/raylib.js",
|
|
171
|
-
"Test Misc": "node test/misc.js",
|
|
172
176
|
"Test SQLite": "node test/sqlite.js"
|
|
173
177
|
}
|
|
174
178
|
}
|
|
@@ -218,8 +222,9 @@
|
|
|
218
222
|
"Build": "C:\\Node32\\node32.cmd node ../cnoke/cnoke.js -C test"
|
|
219
223
|
},
|
|
220
224
|
"commands": {
|
|
225
|
+
"Test Sync": "C:\\Node32\\node32.cmd node test/sync.js",
|
|
226
|
+
"Test Async": "C:\\Node32\\node32.cmd node test/async.js",
|
|
221
227
|
"Test Raylib": "seatsh C:\\Node32\\node32.cmd node test/raylib.js",
|
|
222
|
-
"Test Misc": "C:\\Node32\\node32.cmd node test/misc.js",
|
|
223
228
|
"Test SQLite": "C:\\Node32\\node32.cmd node test/sqlite.js"
|
|
224
229
|
}
|
|
225
230
|
},
|
|
@@ -230,8 +235,9 @@
|
|
|
230
235
|
"Build": "C:\\Node64\\node64.cmd node ../cnoke/cnoke.js -C test"
|
|
231
236
|
},
|
|
232
237
|
"commands": {
|
|
238
|
+
"Test Sync": "C:\\Node64\\node64.cmd node test/sync.js",
|
|
239
|
+
"Test Async": "C:\\Node64\\node64.cmd node test/async.js",
|
|
233
240
|
"Test Raylib": "seatsh C:\\Node64\\node64.cmd node test/raylib.js",
|
|
234
|
-
"Test Misc": "C:\\Node64\\node64.cmd node test/misc.js",
|
|
235
241
|
"Test SQLite": "C:\\Node64\\node64.cmd node test/sqlite.js"
|
|
236
242
|
}
|
|
237
243
|
}
|
|
@@ -274,8 +280,9 @@
|
|
|
274
280
|
"Build": "node ../cnoke/cnoke.js -C test"
|
|
275
281
|
},
|
|
276
282
|
"commands": {
|
|
283
|
+
"Test Sync": "node test/sync.js",
|
|
284
|
+
"Test Async": "node test/async.js",
|
|
277
285
|
"Test Raylib": "xvfb-run node test/raylib.js",
|
|
278
|
-
"Test Misc": "node test/misc.js",
|
|
279
286
|
"Test SQLite": "node test/sqlite.js"
|
|
280
287
|
}
|
|
281
288
|
}
|
|
@@ -318,8 +325,9 @@
|
|
|
318
325
|
"Build": "node ../cnoke/cnoke.js -C test"
|
|
319
326
|
},
|
|
320
327
|
"commands": {
|
|
328
|
+
"Test Sync": "node test/sync.js",
|
|
329
|
+
"Test Async": "node test/async.js",
|
|
321
330
|
"Test Raylib": "xvfb-run node test/raylib.js",
|
|
322
|
-
"Test Misc": "node test/misc.js",
|
|
323
331
|
"Test SQLite": "node test/sqlite.js"
|
|
324
332
|
}
|
|
325
333
|
}
|
|
@@ -362,8 +370,9 @@
|
|
|
362
370
|
"Build": "node ../cnoke/cnoke.js -C test"
|
|
363
371
|
},
|
|
364
372
|
"commands": {
|
|
373
|
+
"Test Sync": "node test/sync.js",
|
|
374
|
+
"Test Async": "node test/async.js",
|
|
365
375
|
"Test Raylib": "xvfb-run node test/raylib.js",
|
|
366
|
-
"Test Misc": "node test/misc.js",
|
|
367
376
|
"Test SQLite": "node test/sqlite.js"
|
|
368
377
|
}
|
|
369
378
|
}
|
|
@@ -406,7 +415,8 @@
|
|
|
406
415
|
"Build": "PATH=/usr/local/bin:/usr/bin:/bin SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk node ../cnoke/cnoke.js -C test"
|
|
407
416
|
},
|
|
408
417
|
"commands": {
|
|
409
|
-
"Test
|
|
418
|
+
"Test Sync": "PATH=/usr/local/bin:/usr/bin:/bin node test/sync.js",
|
|
419
|
+
"Test Async": "PATH=/usr/local/bin:/usr/bin:/bin node test/async.js",
|
|
410
420
|
"Test SQLite": "PATH=/usr/local/bin:/usr/bin:/bin node test/sqlite.js"
|
|
411
421
|
}
|
|
412
422
|
}
|