koffi 1.0.1 → 1.0.4

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.
Files changed (50) hide show
  1. package/CMakeLists.txt +12 -11
  2. package/README.md +23 -20
  3. package/build/qemu/1.0.4/koffi_darwin_x64.tar.gz +0 -0
  4. package/build/qemu/1.0.4/koffi_freebsd_arm64.tar.gz +0 -0
  5. package/build/qemu/1.0.4/koffi_freebsd_ia32.tar.gz +0 -0
  6. package/build/qemu/1.0.4/koffi_freebsd_x64.tar.gz +0 -0
  7. package/build/qemu/1.0.4/koffi_linux_arm.tar.gz +0 -0
  8. package/build/qemu/1.0.4/koffi_linux_arm64.tar.gz +0 -0
  9. package/build/qemu/1.0.4/koffi_linux_ia32.tar.gz +0 -0
  10. package/build/qemu/1.0.4/koffi_linux_x64.tar.gz +0 -0
  11. package/build/qemu/1.0.4/koffi_win32_ia32.tar.gz +0 -0
  12. package/build/qemu/1.0.4/koffi_win32_x64.tar.gz +0 -0
  13. package/package.json +8 -4
  14. package/qemu/qemu.js +794 -0
  15. package/qemu/registry/machines.json +415 -0
  16. package/qemu/registry/sha256sum.txt +45 -0
  17. package/src/{call_arm32.cc → abi_arm32.cc} +153 -219
  18. package/src/{call_arm32_fwd.S → abi_arm32_fwd.S} +0 -0
  19. package/src/{call_arm64.cc → abi_arm64.cc} +130 -123
  20. package/src/{call_arm64_fwd.S → abi_arm64_fwd.S} +0 -0
  21. package/src/{call_x64_sysv.cc → abi_x64_sysv.cc} +138 -135
  22. package/src/{call_x64_sysv_fwd.S → abi_x64_sysv_fwd.S} +0 -0
  23. package/src/{call_x64_win.cc → abi_x64_win.cc} +107 -99
  24. package/src/{call_x64_win_fwd.asm → abi_x64_win_fwd.asm} +0 -0
  25. package/src/{call_x86.cc → abi_x86.cc} +110 -107
  26. package/src/{call_x86_fwd.S → abi_x86_fwd.S} +0 -0
  27. package/src/{call_x86_fwd.asm → abi_x86_fwd.asm} +0 -0
  28. package/src/call.cc +353 -0
  29. package/src/call.hh +132 -4
  30. package/src/ffi.cc +16 -2
  31. package/src/ffi.hh +8 -12
  32. package/src/util.cc +7 -280
  33. package/src/util.hh +0 -107
  34. package/test/CMakeLists.txt +1 -0
  35. package/test/misc.c +355 -0
  36. package/test/misc.def +3 -0
  37. package/test/misc.js +227 -0
  38. package/test/raylib.js +165 -0
  39. package/test/sqlite.js +104 -0
  40. package/vendor/libcc/libcc.hh +1 -1
  41. package/build/qemu/1.0.1/koffi_darwin_x64.tar.gz +0 -0
  42. package/build/qemu/1.0.1/koffi_freebsd_arm64.tar.gz +0 -0
  43. package/build/qemu/1.0.1/koffi_freebsd_ia32.tar.gz +0 -0
  44. package/build/qemu/1.0.1/koffi_freebsd_x64.tar.gz +0 -0
  45. package/build/qemu/1.0.1/koffi_linux_arm.tar.gz +0 -0
  46. package/build/qemu/1.0.1/koffi_linux_arm64.tar.gz +0 -0
  47. package/build/qemu/1.0.1/koffi_linux_ia32.tar.gz +0 -0
  48. package/build/qemu/1.0.1/koffi_linux_x64.tar.gz +0 -0
  49. package/build/qemu/1.0.1/koffi_win32_ia32.tar.gz +0 -0
  50. package/build/qemu/1.0.1/koffi_win32_x64.tar.gz +0 -0
package/CMakeLists.txt CHANGED
@@ -24,11 +24,12 @@ endif()
24
24
  # ---- Koffi ----
25
25
 
26
26
  set(KOFFI_SRC
27
- src/call_arm32.cc
28
- src/call_arm64.cc
29
- src/call_x64_sysv.cc
30
- src/call_x64_win.cc
31
- src/call_x86.cc
27
+ src/call.cc
28
+ src/abi_arm32.cc
29
+ src/abi_arm64.cc
30
+ src/abi_x64_sysv.cc
31
+ src/abi_x64_win.cc
32
+ src/abi_x86.cc
32
33
  src/ffi.cc
33
34
  src/parser.cc
34
35
  src/util.cc
@@ -36,19 +37,19 @@ set(KOFFI_SRC
36
37
  )
37
38
  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
38
39
  if(WIN32)
39
- list(APPEND KOFFI_SRC src/call_x64_win_fwd.asm)
40
+ list(APPEND KOFFI_SRC src/abi_x64_win_fwd.asm)
40
41
  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
41
- list(APPEND KOFFI_SRC src/call_arm64_fwd.S)
42
+ list(APPEND KOFFI_SRC src/abi_arm64_fwd.S)
42
43
  else()
43
- list(APPEND KOFFI_SRC src/call_x64_sysv_fwd.S)
44
+ list(APPEND KOFFI_SRC src/abi_x64_sysv_fwd.S)
44
45
  endif()
45
46
  elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
46
47
  if(WIN32)
47
- list(APPEND KOFFI_SRC src/call_x86_fwd.asm)
48
+ list(APPEND KOFFI_SRC src/abi_x86_fwd.asm)
48
49
  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i[3456]86|x86|AMD64")
49
- list(APPEND KOFFI_SRC src/call_x86_fwd.S)
50
+ list(APPEND KOFFI_SRC src/abi_x86_fwd.S)
50
51
  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv[678]l")
51
- list(APPEND KOFFI_SRC src/call_arm32_fwd.S)
52
+ list(APPEND KOFFI_SRC src/abi_arm32_fwd.S)
52
53
  endif()
53
54
  endif()
54
55
 
package/README.md CHANGED
@@ -16,28 +16,31 @@ 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: C to JS callbacks
20
- * 1.2: Support fixed array types
19
+ * 1.1: Asynchronous calls
20
+ * 1.2: C to JS callbacks
21
+ * 1.3: Unions and (fixed size) array types
21
22
 
22
23
  The following platforms __are officially supported and tested__ at the moment:
23
24
 
24
- Platoform | Architecture | JS to C | C to JS (callback) | Pre-built binary
25
- --------- | -------------------------------- | ------- | ------------------ | ----------------
26
- Windows | x86 (cdecl, stdcall, fastcall) | 🟩 | 🟥 | Yes
27
- Windows | x86_64 | 🟩 | 🟥 | Yes
28
- Linux | x86 | 🟩 | 🟥 | Yes
29
- Linux | x86_64 | 🟩 | 🟥 | Yes
30
- Linux | ARM32+VFP Little Endian | 🟩 | 🟥 | Yes
31
- Linux | ARM64 Little Endian | 🟩 | 🟥 | Yes
32
- FreeBSD | x86 | 🟩 | 🟥 | Yes
33
- FreeBSD | x86_64 | 🟩 | 🟥 | Yes
34
- FreeBSD | ARM64 Little Endian | 🟩 | 🟥 | Yes
35
- macOS | x86_64 | 🟩 | 🟥 | Yes
36
- macOS | ARM64 (M1) Little Endian | 🟩 | 🟥 | No x
37
- NetBSD | x86_64 | 🟧 | 🟥 | No x
38
- NetBSD | ARM64 Little Endian | 🟧 | 🟥 | No x
39
- OpenBSD | x86_64 | 🟧 | 🟥 | No x
40
- OpenBSD | ARM64 Little Endian | 🟧 | 🟥 | No x
25
+ Platoform | Architecture | JS to C | C to JS (callback) | Pre-built binary
26
+ --------- | -------------------------------- | -------- | ------------------ | ----------------
27
+ Windows | x86 (cdecl, stdcall, fastcall) | 🟩 Yes | 🟥 No | 🟩 Yes
28
+ Windows | x86_64 | 🟩 Yes | 🟥 No | 🟩 Yes
29
+ Linux | x86 | 🟩 Yes | 🟥 No | 🟩 Yes
30
+ Linux | x86_64 | 🟩 Yes | 🟥 No | 🟩 Yes
31
+ Linux | ARM32+VFP Little Endian | 🟩 Yes | 🟥 No | 🟩 Yes
32
+ Linux | ARM64 Little Endian | 🟩 Yes | 🟥 No | 🟩 Yes
33
+ FreeBSD | x86 | 🟩 Yes | 🟥 No | 🟩 Yes
34
+ FreeBSD | x86_64 | 🟩 Yes | 🟥 No | 🟩 Yes
35
+ FreeBSD | ARM64 Little Endian | 🟩 Yes | 🟥 No | 🟩 Yes
36
+ macOS | x86_64 | 🟩 Yes | 🟥 No | 🟩 Yes
37
+ macOS | ARM64 (M1) Little Endian | 🟩 Yes | 🟥 No | 🟥 No
38
+ OpenBSD | x86_64 | 🟧 Maybe | 🟥 No | 🟥 No
39
+ OpenBSD | x86 | 🟧 Maybe | 🟥 No | 🟥 No
40
+ OpenBSD | ARM64 Little Endian | 🟧 Maybe | 🟥 No | 🟥 No
41
+ NetBSD | x86_64 | 🟧 Maybe | 🟥 No | 🟥 No
42
+ NetBSD | x86 | 🟧 Maybe | 🟥 No | 🟥 No
43
+ NetBSD | ARM64 Little Endian | 🟧 Maybe | 🟥 No | 🟥 No
41
44
 
42
45
  🟩 Tested, fully operational
43
46
  🟧 May work, but not actively tested
@@ -101,7 +104,7 @@ MessageBoxA(null, 'Hello', 'Foobar', MB_ICONINFORMATION);
101
104
 
102
105
  ## Raylib example
103
106
 
104
- This section assumes you know how to build C shared libraries, such as Raylib. You may need to fix the URL to the library before you can do anything.
107
+ This section assumes you know how to build C shared libraries, such as Raylib. You may need to fix the path to the library before you can do anything.
105
108
 
106
109
  ```js
107
110
  const koffi = require('koffi');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koffi",
3
- "version": "1.0.1",
3
+ "version": "1.0.4",
4
4
  "description": "Fast and simple FFI (foreign function interface) for Node.js",
5
5
  "keywords": [
6
6
  "foreign",
@@ -40,10 +40,14 @@
40
40
  "benchmark/CMakeLists.txt",
41
41
  "benchmark/atoi_*",
42
42
  "benchmark/raylib_*",
43
+ "qemu/qemu.js",
44
+ "qemu/registry",
43
45
  "test/CMakeLists.txt",
44
- "test/test.js",
45
- "test/registry",
46
- "test/tests",
46
+ "test/misc.c",
47
+ "test/misc.def",
48
+ "test/misc.js",
49
+ "test/raylib.js",
50
+ "test/sqlite.js",
47
51
  "vendor",
48
52
  "LICENSE.txt",
49
53
  "README.md",