koffi 2.1.3 → 2.1.5

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 (374) hide show
  1. package/ChangeLog.md +17 -0
  2. package/doc/contribute.md +5 -5
  3. package/doc/index.rst +1 -1
  4. package/doc/memory.md +1 -0
  5. package/doc/templates/badges.html +1 -1
  6. package/package.json +44 -68
  7. package/src/cnoke/LICENSE.txt +661 -0
  8. package/src/cnoke/README.md +97 -0
  9. package/src/cnoke/assets/FindCNoke.cmake +71 -0
  10. package/src/cnoke/assets/win_delay_hook.c +34 -0
  11. package/src/cnoke/cnoke.js +968 -0
  12. package/src/cnoke/package.json +25 -0
  13. package/{vendor → src/core}/libcc/libcc.cc +38 -11
  14. package/{vendor → src/core}/libcc/libcc.hh +4 -2
  15. package/{CMakeLists.txt → src/koffi/CMakeLists.txt} +3 -3
  16. package/{benchmark → src/koffi/benchmark}/CMakeLists.txt +9 -6
  17. package/{benchmark → src/koffi/benchmark}/atoi_koffi.js +0 -0
  18. package/{benchmark → src/koffi/benchmark}/atoi_napi.cc +1 -1
  19. package/{benchmark → src/koffi/benchmark}/atoi_napi.js +0 -0
  20. package/{benchmark → src/koffi/benchmark}/atoi_node_ffi.js +0 -0
  21. package/src/koffi/benchmark/benchmark.js +118 -0
  22. package/src/koffi/benchmark/rand_koffi.js +52 -0
  23. package/src/koffi/benchmark/rand_napi.cc +69 -0
  24. package/src/koffi/benchmark/rand_napi.js +47 -0
  25. package/src/koffi/benchmark/rand_node_ffi.js +55 -0
  26. package/{benchmark → src/koffi/benchmark}/raylib_cc.cc +2 -2
  27. package/{benchmark → src/koffi/benchmark}/raylib_cc.js +0 -0
  28. package/{benchmark → src/koffi/benchmark}/raylib_koffi.js +0 -0
  29. package/{benchmark → src/koffi/benchmark}/raylib_node_ffi.js +0 -0
  30. package/{benchmark → src/koffi/benchmark}/raylib_node_raylib.js +0 -0
  31. package/src/koffi/build/2.1.5/koffi_darwin_arm64.tar.gz +0 -0
  32. package/src/koffi/build/2.1.5/koffi_darwin_x64.tar.gz +0 -0
  33. package/src/koffi/build/2.1.5/koffi_freebsd_arm64.tar.gz +0 -0
  34. package/src/koffi/build/2.1.5/koffi_freebsd_ia32.tar.gz +0 -0
  35. package/src/koffi/build/2.1.5/koffi_freebsd_x64.tar.gz +0 -0
  36. package/src/koffi/build/2.1.5/koffi_linux_arm32hf.tar.gz +0 -0
  37. package/src/koffi/build/2.1.5/koffi_linux_arm64.tar.gz +0 -0
  38. package/src/koffi/build/2.1.5/koffi_linux_ia32.tar.gz +0 -0
  39. package/src/koffi/build/2.1.5/koffi_linux_riscv64hf64.tar.gz +0 -0
  40. package/src/koffi/build/2.1.5/koffi_linux_x64.tar.gz +0 -0
  41. package/src/koffi/build/2.1.5/koffi_openbsd_ia32.tar.gz +0 -0
  42. package/src/koffi/build/2.1.5/koffi_openbsd_x64.tar.gz +0 -0
  43. package/src/koffi/build/2.1.5/koffi_win32_arm64.tar.gz +0 -0
  44. package/src/koffi/build/2.1.5/koffi_win32_ia32.tar.gz +0 -0
  45. package/src/koffi/build/2.1.5/koffi_win32_x64.tar.gz +0 -0
  46. package/src/koffi/qemu/qemu/.gitkeep +0 -0
  47. package/{qemu → src/koffi/qemu}/qemu.js +227 -133
  48. package/{qemu → src/koffi/qemu}/registry/machines.json +24 -0
  49. package/{qemu → src/koffi/qemu}/registry/sha256sum.txt +0 -0
  50. package/src/{abi_arm32.cc → koffi/src/abi_arm32.cc} +1 -1
  51. package/src/{abi_arm32_fwd.S → koffi/src/abi_arm32_fwd.S} +0 -0
  52. package/src/{abi_arm64.cc → koffi/src/abi_arm64.cc} +1 -1
  53. package/src/{abi_arm64_fwd.S → koffi/src/abi_arm64_fwd.S} +0 -0
  54. package/src/{abi_arm64_fwd.asm → koffi/src/abi_arm64_fwd.asm} +0 -0
  55. package/src/{abi_riscv64.cc → koffi/src/abi_riscv64.cc} +1 -1
  56. package/src/{abi_riscv64_fwd.S → koffi/src/abi_riscv64_fwd.S} +0 -0
  57. package/src/{abi_x64_sysv.cc → koffi/src/abi_x64_sysv.cc} +1 -1
  58. package/src/{abi_x64_sysv_fwd.S → koffi/src/abi_x64_sysv_fwd.S} +0 -0
  59. package/src/{abi_x64_win.cc → koffi/src/abi_x64_win.cc} +1 -1
  60. package/src/{abi_x64_win_fwd.asm → koffi/src/abi_x64_win_fwd.asm} +0 -0
  61. package/src/{abi_x86.cc → koffi/src/abi_x86.cc} +1 -1
  62. package/src/{abi_x86_fwd.S → koffi/src/abi_x86_fwd.S} +0 -0
  63. package/src/{abi_x86_fwd.asm → koffi/src/abi_x86_fwd.asm} +0 -0
  64. package/src/{call.cc → koffi/src/call.cc} +1 -1
  65. package/src/{call.hh → koffi/src/call.hh} +2 -2
  66. package/src/{ffi.cc → koffi/src/ffi.cc} +34 -18
  67. package/src/{ffi.hh → koffi/src/ffi.hh} +5 -3
  68. package/src/{index.js → koffi/src/index.js} +0 -0
  69. package/src/{parser.cc → koffi/src/parser.cc} +1 -1
  70. package/src/{parser.hh → koffi/src/parser.hh} +1 -1
  71. package/src/{util.cc → koffi/src/util.cc} +1 -1
  72. package/src/{util.hh → koffi/src/util.hh} +1 -1
  73. package/{test → src/koffi/test}/CMakeLists.txt +14 -15
  74. package/{test → src/koffi/test}/async.js +0 -0
  75. package/{test → src/koffi/test}/callbacks.js +0 -0
  76. package/{test → src/koffi/test}/misc.c +13 -0
  77. package/{test → src/koffi/test}/misc.def +0 -0
  78. package/{test → src/koffi/test}/raylib.js +0 -0
  79. package/{test → src/koffi/test}/sqlite.js +1 -1
  80. package/{test → src/koffi/test}/sync.js +17 -0
  81. package/vendor/brotli/BUILD +144 -0
  82. package/vendor/brotli/CMakeLists.txt +421 -0
  83. package/vendor/brotli/CONTRIBUTING.md +27 -0
  84. package/vendor/brotli/LICENSE +19 -0
  85. package/vendor/brotli/MANIFEST.in +17 -0
  86. package/vendor/brotli/Makefile +55 -0
  87. package/vendor/brotli/Makefile.am +38 -0
  88. package/vendor/brotli/README +15 -0
  89. package/vendor/brotli/README.md +104 -0
  90. package/vendor/brotli/WORKSPACE +21 -0
  91. package/vendor/brotli/bootstrap +35 -0
  92. package/vendor/brotli/c/common/constants.c +15 -0
  93. package/vendor/brotli/c/common/constants.h +200 -0
  94. package/vendor/brotli/c/common/context.c +156 -0
  95. package/vendor/brotli/c/common/context.h +113 -0
  96. package/vendor/brotli/c/common/dictionary.c +5914 -0
  97. package/vendor/brotli/c/common/dictionary.h +64 -0
  98. package/vendor/brotli/c/common/platform.c +22 -0
  99. package/vendor/brotli/c/common/platform.h +594 -0
  100. package/vendor/brotli/c/common/transform.c +291 -0
  101. package/vendor/brotli/c/common/transform.h +85 -0
  102. package/vendor/brotli/c/common/version.h +26 -0
  103. package/vendor/brotli/c/dec/bit_reader.c +76 -0
  104. package/vendor/brotli/c/dec/bit_reader.h +351 -0
  105. package/vendor/brotli/c/dec/decode.c +2608 -0
  106. package/vendor/brotli/c/dec/huffman.c +339 -0
  107. package/vendor/brotli/c/dec/huffman.h +121 -0
  108. package/vendor/brotli/c/dec/prefix.h +732 -0
  109. package/vendor/brotli/c/dec/state.c +159 -0
  110. package/vendor/brotli/c/dec/state.h +365 -0
  111. package/vendor/brotli/c/enc/backward_references.c +145 -0
  112. package/vendor/brotli/c/enc/backward_references.h +39 -0
  113. package/vendor/brotli/c/enc/backward_references_hq.c +843 -0
  114. package/vendor/brotli/c/enc/backward_references_hq.h +95 -0
  115. package/vendor/brotli/c/enc/backward_references_inc.h +163 -0
  116. package/vendor/brotli/c/enc/bit_cost.c +35 -0
  117. package/vendor/brotli/c/enc/bit_cost.h +63 -0
  118. package/vendor/brotli/c/enc/bit_cost_inc.h +127 -0
  119. package/vendor/brotli/c/enc/block_encoder_inc.h +34 -0
  120. package/vendor/brotli/c/enc/block_splitter.c +194 -0
  121. package/vendor/brotli/c/enc/block_splitter.h +51 -0
  122. package/vendor/brotli/c/enc/block_splitter_inc.h +440 -0
  123. package/vendor/brotli/c/enc/brotli_bit_stream.c +1314 -0
  124. package/vendor/brotli/c/enc/brotli_bit_stream.h +84 -0
  125. package/vendor/brotli/c/enc/cluster.c +56 -0
  126. package/vendor/brotli/c/enc/cluster.h +48 -0
  127. package/vendor/brotli/c/enc/cluster_inc.h +320 -0
  128. package/vendor/brotli/c/enc/command.c +28 -0
  129. package/vendor/brotli/c/enc/command.h +190 -0
  130. package/vendor/brotli/c/enc/compress_fragment.c +790 -0
  131. package/vendor/brotli/c/enc/compress_fragment.h +61 -0
  132. package/vendor/brotli/c/enc/compress_fragment_two_pass.c +645 -0
  133. package/vendor/brotli/c/enc/compress_fragment_two_pass.h +54 -0
  134. package/vendor/brotli/c/enc/dictionary_hash.c +1846 -0
  135. package/vendor/brotli/c/enc/dictionary_hash.h +25 -0
  136. package/vendor/brotli/c/enc/encode.c +1927 -0
  137. package/vendor/brotli/c/enc/encoder_dict.c +33 -0
  138. package/vendor/brotli/c/enc/encoder_dict.h +43 -0
  139. package/vendor/brotli/c/enc/entropy_encode.c +503 -0
  140. package/vendor/brotli/c/enc/entropy_encode.h +122 -0
  141. package/vendor/brotli/c/enc/entropy_encode_static.h +539 -0
  142. package/vendor/brotli/c/enc/fast_log.c +105 -0
  143. package/vendor/brotli/c/enc/fast_log.h +66 -0
  144. package/vendor/brotli/c/enc/find_match_length.h +79 -0
  145. package/vendor/brotli/c/enc/hash.h +488 -0
  146. package/vendor/brotli/c/enc/hash_composite_inc.h +125 -0
  147. package/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +293 -0
  148. package/vendor/brotli/c/enc/hash_longest_match64_inc.h +267 -0
  149. package/vendor/brotli/c/enc/hash_longest_match_inc.h +262 -0
  150. package/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +266 -0
  151. package/vendor/brotli/c/enc/hash_rolling_inc.h +212 -0
  152. package/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +329 -0
  153. package/vendor/brotli/c/enc/histogram.c +100 -0
  154. package/vendor/brotli/c/enc/histogram.h +63 -0
  155. package/vendor/brotli/c/enc/histogram_inc.h +51 -0
  156. package/vendor/brotli/c/enc/literal_cost.c +175 -0
  157. package/vendor/brotli/c/enc/literal_cost.h +30 -0
  158. package/vendor/brotli/c/enc/memory.c +170 -0
  159. package/vendor/brotli/c/enc/memory.h +114 -0
  160. package/vendor/brotli/c/enc/metablock.c +663 -0
  161. package/vendor/brotli/c/enc/metablock.h +105 -0
  162. package/vendor/brotli/c/enc/metablock_inc.h +183 -0
  163. package/vendor/brotli/c/enc/params.h +46 -0
  164. package/vendor/brotli/c/enc/prefix.h +53 -0
  165. package/vendor/brotli/c/enc/quality.h +165 -0
  166. package/vendor/brotli/c/enc/ringbuffer.h +167 -0
  167. package/vendor/brotli/c/enc/static_dict.c +486 -0
  168. package/vendor/brotli/c/enc/static_dict.h +40 -0
  169. package/vendor/brotli/c/enc/static_dict_lut.h +5864 -0
  170. package/vendor/brotli/c/enc/utf8_util.c +85 -0
  171. package/vendor/brotli/c/enc/utf8_util.h +32 -0
  172. package/vendor/brotli/c/enc/write_bits.h +87 -0
  173. package/vendor/brotli/c/include/brotli/decode.h +344 -0
  174. package/vendor/brotli/c/include/brotli/encode.h +448 -0
  175. package/vendor/brotli/c/include/brotli/port.h +288 -0
  176. package/vendor/brotli/c/include/brotli/types.h +83 -0
  177. package/vendor/brotli/c/tools/brotli.c +1116 -0
  178. package/vendor/brotli/c/tools/brotli.md +107 -0
  179. package/vendor/brotli/compiler_config_setting.bzl +28 -0
  180. package/vendor/brotli/configure +8 -0
  181. package/vendor/brotli/configure-cmake +318 -0
  182. package/vendor/brotli/configure.ac +14 -0
  183. package/vendor/brotli/docs/brotli.1 +132 -0
  184. package/vendor/brotli/docs/constants.h.3 +47 -0
  185. package/vendor/brotli/docs/decode.h.3 +415 -0
  186. package/vendor/brotli/docs/encode.h.3 +586 -0
  187. package/vendor/brotli/docs/types.h.3 +117 -0
  188. package/vendor/brotli/premake5.lua +78 -0
  189. package/vendor/brotli/python/Makefile +57 -0
  190. package/vendor/brotli/python/README.md +54 -0
  191. package/vendor/brotli/python/_brotli.cc +753 -0
  192. package/vendor/brotli/python/bro.py +160 -0
  193. package/vendor/brotli/python/brotli.py +56 -0
  194. package/vendor/brotli/python/tests/__init__.py +0 -0
  195. package/vendor/brotli/python/tests/_test_utils.py +112 -0
  196. package/vendor/brotli/python/tests/bro_test.py +102 -0
  197. package/vendor/brotli/python/tests/compress_test.py +41 -0
  198. package/vendor/brotli/python/tests/compressor_test.py +94 -0
  199. package/vendor/brotli/python/tests/decompress_test.py +42 -0
  200. package/vendor/brotli/python/tests/decompressor_test.py +59 -0
  201. package/vendor/brotli/scripts/libbrotlicommon.pc.in +11 -0
  202. package/vendor/brotli/scripts/libbrotlidec.pc.in +12 -0
  203. package/vendor/brotli/scripts/libbrotlienc.pc.in +12 -0
  204. package/vendor/brotli/scripts/sources.lst +104 -0
  205. package/vendor/brotli/setup.cfg +5 -0
  206. package/vendor/brotli/setup.py +293 -0
  207. package/vendor/brotli/tests/Makefile +17 -0
  208. package/vendor/brotli/tests/compatibility_test.sh +25 -0
  209. package/vendor/brotli/tests/roundtrip_test.sh +36 -0
  210. package/vendor/brotli/tests/run-compatibility-test.cmake +31 -0
  211. package/vendor/brotli/tests/run-roundtrip-test.cmake +36 -0
  212. package/vendor/brotli/tests/testdata/empty +0 -0
  213. package/vendor/brotli/tests/testdata/empty.compressed +1 -0
  214. package/vendor/brotli/tests/testdata/ukkonooa +1 -0
  215. package/vendor/brotli/tests/testdata/ukkonooa.compressed +0 -0
  216. package/vendor/miniz/ChangeLog.md +235 -0
  217. package/vendor/miniz/LICENSE +22 -0
  218. package/vendor/miniz/examples/example1.c +105 -0
  219. package/vendor/miniz/examples/example2.c +164 -0
  220. package/vendor/miniz/examples/example3.c +269 -0
  221. package/vendor/miniz/examples/example4.c +102 -0
  222. package/vendor/miniz/examples/example5.c +327 -0
  223. package/vendor/miniz/examples/example6.c +166 -0
  224. package/vendor/miniz/miniz.c +7835 -0
  225. package/vendor/miniz/miniz.h +1422 -0
  226. package/vendor/miniz/readme.md +46 -0
  227. package/vendor/{sqlite3 → sqlite3mc}/sqlite3ext.h +18 -2
  228. package/vendor/{sqlite3/sqlite3.c → sqlite3mc/sqlite3mc.c} +60872 -4890
  229. package/vendor/sqlite3mc/sqlite3mc.def +312 -0
  230. package/vendor/{sqlite3/sqlite3.h → sqlite3mc/sqlite3mc.h} +480 -36
  231. package/build/qemu/2.1.3/koffi_darwin_arm64.tar.gz +0 -0
  232. package/build/qemu/2.1.3/koffi_darwin_x64.tar.gz +0 -0
  233. package/build/qemu/2.1.3/koffi_freebsd_arm64.tar.gz +0 -0
  234. package/build/qemu/2.1.3/koffi_freebsd_ia32.tar.gz +0 -0
  235. package/build/qemu/2.1.3/koffi_freebsd_x64.tar.gz +0 -0
  236. package/build/qemu/2.1.3/koffi_linux_arm32hf.tar.gz +0 -0
  237. package/build/qemu/2.1.3/koffi_linux_arm64.tar.gz +0 -0
  238. package/build/qemu/2.1.3/koffi_linux_ia32.tar.gz +0 -0
  239. package/build/qemu/2.1.3/koffi_linux_riscv64hf64.tar.gz +0 -0
  240. package/build/qemu/2.1.3/koffi_linux_x64.tar.gz +0 -0
  241. package/build/qemu/2.1.3/koffi_openbsd_ia32.tar.gz +0 -0
  242. package/build/qemu/2.1.3/koffi_openbsd_x64.tar.gz +0 -0
  243. package/build/qemu/2.1.3/koffi_win32_arm64.tar.gz +0 -0
  244. package/build/qemu/2.1.3/koffi_win32_ia32.tar.gz +0 -0
  245. package/build/qemu/2.1.3/koffi_win32_x64.tar.gz +0 -0
  246. package/vendor/_patches/glfw_001_fix_openbsd_xlib_soname.patch +0 -145
  247. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +0 -226
  248. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +0 -10
  249. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +0 -4
  250. package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +0 -75
  251. package/vendor/raylib/projects/VS2022/examples/audio_module_playing.vcxproj +0 -390
  252. package/vendor/raylib/projects/VS2022/examples/audio_multichannel_sound.vcxproj +0 -390
  253. package/vendor/raylib/projects/VS2022/examples/audio_music_stream.vcxproj +0 -390
  254. package/vendor/raylib/projects/VS2022/examples/audio_raw_stream.vcxproj +0 -390
  255. package/vendor/raylib/projects/VS2022/examples/audio_sound_loading.vcxproj +0 -390
  256. package/vendor/raylib/projects/VS2022/examples/audio_stream_effects.vcxproj +0 -390
  257. package/vendor/raylib/projects/VS2022/examples/core_2d_camera.vcxproj +0 -390
  258. package/vendor/raylib/projects/VS2022/examples/core_2d_camera_mouse_zoom.vcxproj +0 -390
  259. package/vendor/raylib/projects/VS2022/examples/core_2d_camera_platformer.vcxproj +0 -390
  260. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_first_person.vcxproj +0 -390
  261. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_free.vcxproj +0 -390
  262. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_mode.vcxproj +0 -390
  263. package/vendor/raylib/projects/VS2022/examples/core_3d_picking.vcxproj +0 -390
  264. package/vendor/raylib/projects/VS2022/examples/core_basic_screen_manager.vcxproj +0 -390
  265. package/vendor/raylib/projects/VS2022/examples/core_basic_window.vcxproj +0 -390
  266. package/vendor/raylib/projects/VS2022/examples/core_custom_frame_control.vcxproj +0 -390
  267. package/vendor/raylib/projects/VS2022/examples/core_custom_logging.vcxproj +0 -390
  268. package/vendor/raylib/projects/VS2022/examples/core_drop_files.vcxproj +0 -390
  269. package/vendor/raylib/projects/VS2022/examples/core_input_gamepad.vcxproj +0 -387
  270. package/vendor/raylib/projects/VS2022/examples/core_input_gestures.vcxproj +0 -387
  271. package/vendor/raylib/projects/VS2022/examples/core_input_keys.vcxproj +0 -387
  272. package/vendor/raylib/projects/VS2022/examples/core_input_mouse.vcxproj +0 -387
  273. package/vendor/raylib/projects/VS2022/examples/core_input_mouse_wheel.vcxproj +0 -387
  274. package/vendor/raylib/projects/VS2022/examples/core_input_multitouch.vcxproj +0 -387
  275. package/vendor/raylib/projects/VS2022/examples/core_loading_thread.vcxproj +0 -387
  276. package/vendor/raylib/projects/VS2022/examples/core_random_values.vcxproj +0 -387
  277. package/vendor/raylib/projects/VS2022/examples/core_scissor_test.vcxproj +0 -387
  278. package/vendor/raylib/projects/VS2022/examples/core_split_screen.vcxproj +0 -387
  279. package/vendor/raylib/projects/VS2022/examples/core_storage_values.vcxproj +0 -387
  280. package/vendor/raylib/projects/VS2022/examples/core_vr_simulator.vcxproj +0 -387
  281. package/vendor/raylib/projects/VS2022/examples/core_window_flags.vcxproj +0 -387
  282. package/vendor/raylib/projects/VS2022/examples/core_window_letterbox.vcxproj +0 -387
  283. package/vendor/raylib/projects/VS2022/examples/core_window_should_close.vcxproj +0 -390
  284. package/vendor/raylib/projects/VS2022/examples/core_world_screen.vcxproj +0 -387
  285. package/vendor/raylib/projects/VS2022/examples/easings_testbed.vcxproj +0 -387
  286. package/vendor/raylib/projects/VS2022/examples/embedded_files_loading.vcxproj +0 -387
  287. package/vendor/raylib/projects/VS2022/examples/models_animation.vcxproj +0 -387
  288. package/vendor/raylib/projects/VS2022/examples/models_billboard.vcxproj +0 -387
  289. package/vendor/raylib/projects/VS2022/examples/models_box_collisions.vcxproj +0 -387
  290. package/vendor/raylib/projects/VS2022/examples/models_cubicmap.vcxproj +0 -387
  291. package/vendor/raylib/projects/VS2022/examples/models_first_person_maze.vcxproj +0 -387
  292. package/vendor/raylib/projects/VS2022/examples/models_geometric_shapes.vcxproj +0 -387
  293. package/vendor/raylib/projects/VS2022/examples/models_heightmap.vcxproj +0 -387
  294. package/vendor/raylib/projects/VS2022/examples/models_loading.vcxproj +0 -387
  295. package/vendor/raylib/projects/VS2022/examples/models_loading_gltf.vcxproj +0 -387
  296. package/vendor/raylib/projects/VS2022/examples/models_loading_vox.vcxproj +0 -387
  297. package/vendor/raylib/projects/VS2022/examples/models_mesh_generation.vcxproj +0 -387
  298. package/vendor/raylib/projects/VS2022/examples/models_mesh_picking.vcxproj +0 -387
  299. package/vendor/raylib/projects/VS2022/examples/models_orthographic_projection.vcxproj +0 -387
  300. package/vendor/raylib/projects/VS2022/examples/models_rlgl_solar_system.vcxproj +0 -387
  301. package/vendor/raylib/projects/VS2022/examples/models_skybox.vcxproj +0 -387
  302. package/vendor/raylib/projects/VS2022/examples/models_waving_cubes.vcxproj +0 -387
  303. package/vendor/raylib/projects/VS2022/examples/models_yaw_pitch_roll.vcxproj +0 -387
  304. package/vendor/raylib/projects/VS2022/examples/rlgl_compute_shaders.vcxproj +0 -391
  305. package/vendor/raylib/projects/VS2022/examples/rlgl_standalone.vcxproj +0 -391
  306. package/vendor/raylib/projects/VS2022/examples/shaders_basic_lighting.vcxproj +0 -387
  307. package/vendor/raylib/projects/VS2022/examples/shaders_custom_uniform.vcxproj +0 -387
  308. package/vendor/raylib/projects/VS2022/examples/shaders_eratosthenes.vcxproj +0 -387
  309. package/vendor/raylib/projects/VS2022/examples/shaders_fog.vcxproj +0 -387
  310. package/vendor/raylib/projects/VS2022/examples/shaders_hot_reloading.vcxproj +0 -387
  311. package/vendor/raylib/projects/VS2022/examples/shaders_julia_set.vcxproj +0 -387
  312. package/vendor/raylib/projects/VS2022/examples/shaders_mesh_instancing.vcxproj +0 -387
  313. package/vendor/raylib/projects/VS2022/examples/shaders_model_shader.vcxproj +0 -387
  314. package/vendor/raylib/projects/VS2022/examples/shaders_multi_sample2d.vcxproj +0 -387
  315. package/vendor/raylib/projects/VS2022/examples/shaders_palette_switch.vcxproj +0 -387
  316. package/vendor/raylib/projects/VS2022/examples/shaders_postprocessing.vcxproj +0 -387
  317. package/vendor/raylib/projects/VS2022/examples/shaders_raymarching.vcxproj +0 -387
  318. package/vendor/raylib/projects/VS2022/examples/shaders_shapes_textures.vcxproj +0 -387
  319. package/vendor/raylib/projects/VS2022/examples/shaders_simple_mask.vcxproj +0 -387
  320. package/vendor/raylib/projects/VS2022/examples/shaders_spotlight.vcxproj +0 -387
  321. package/vendor/raylib/projects/VS2022/examples/shaders_texture_drawing.vcxproj +0 -387
  322. package/vendor/raylib/projects/VS2022/examples/shaders_texture_waves.vcxproj +0 -387
  323. package/vendor/raylib/projects/VS2022/examples/shapes_basic_shapes.vcxproj +0 -387
  324. package/vendor/raylib/projects/VS2022/examples/shapes_bouncing_ball.vcxproj +0 -387
  325. package/vendor/raylib/projects/VS2022/examples/shapes_collision_area.vcxproj +0 -387
  326. package/vendor/raylib/projects/VS2022/examples/shapes_colors_palette.vcxproj +0 -387
  327. package/vendor/raylib/projects/VS2022/examples/shapes_draw_circle_sector.vcxproj +0 -387
  328. package/vendor/raylib/projects/VS2022/examples/shapes_draw_rectangle_rounded.vcxproj +0 -387
  329. package/vendor/raylib/projects/VS2022/examples/shapes_draw_ring.vcxproj +0 -387
  330. package/vendor/raylib/projects/VS2022/examples/shapes_easings_ball_anim.vcxproj +0 -387
  331. package/vendor/raylib/projects/VS2022/examples/shapes_easings_box_anim.vcxproj +0 -387
  332. package/vendor/raylib/projects/VS2022/examples/shapes_easings_rectangle_array.vcxproj +0 -387
  333. package/vendor/raylib/projects/VS2022/examples/shapes_following_eyes.vcxproj +0 -387
  334. package/vendor/raylib/projects/VS2022/examples/shapes_lines_bezier.vcxproj +0 -387
  335. package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib.vcxproj +0 -387
  336. package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib_anim.vcxproj +0 -387
  337. package/vendor/raylib/projects/VS2022/examples/shapes_rectangle_scaling.vcxproj +0 -387
  338. package/vendor/raylib/projects/VS2022/examples/text_codepoints_loading.vcxproj +0 -387
  339. package/vendor/raylib/projects/VS2022/examples/text_draw_3d.vcxproj +0 -387
  340. package/vendor/raylib/projects/VS2022/examples/text_font_filters.vcxproj +0 -387
  341. package/vendor/raylib/projects/VS2022/examples/text_font_loading.vcxproj +0 -387
  342. package/vendor/raylib/projects/VS2022/examples/text_font_sdf.vcxproj +0 -387
  343. package/vendor/raylib/projects/VS2022/examples/text_font_spritefont.vcxproj +0 -387
  344. package/vendor/raylib/projects/VS2022/examples/text_format_text.vcxproj +0 -387
  345. package/vendor/raylib/projects/VS2022/examples/text_input_box.vcxproj +0 -387
  346. package/vendor/raylib/projects/VS2022/examples/text_raylib_fonts.vcxproj +0 -387
  347. package/vendor/raylib/projects/VS2022/examples/text_rectangle_bounds.vcxproj +0 -387
  348. package/vendor/raylib/projects/VS2022/examples/text_unicode.vcxproj +0 -387
  349. package/vendor/raylib/projects/VS2022/examples/text_writing_anim.vcxproj +0 -387
  350. package/vendor/raylib/projects/VS2022/examples/textures_background_scrolling.vcxproj +0 -387
  351. package/vendor/raylib/projects/VS2022/examples/textures_blend_modes.vcxproj +0 -387
  352. package/vendor/raylib/projects/VS2022/examples/textures_bunnymark.vcxproj +0 -387
  353. package/vendor/raylib/projects/VS2022/examples/textures_draw_tiled.vcxproj +0 -387
  354. package/vendor/raylib/projects/VS2022/examples/textures_fog_of_war.vcxproj +0 -387
  355. package/vendor/raylib/projects/VS2022/examples/textures_gif_player.vcxproj +0 -387
  356. package/vendor/raylib/projects/VS2022/examples/textures_image_drawing.vcxproj +0 -387
  357. package/vendor/raylib/projects/VS2022/examples/textures_image_generation.vcxproj +0 -387
  358. package/vendor/raylib/projects/VS2022/examples/textures_image_loading.vcxproj +0 -387
  359. package/vendor/raylib/projects/VS2022/examples/textures_image_processing.vcxproj +0 -387
  360. package/vendor/raylib/projects/VS2022/examples/textures_image_text.vcxproj +0 -387
  361. package/vendor/raylib/projects/VS2022/examples/textures_logo_raylib.vcxproj +0 -387
  362. package/vendor/raylib/projects/VS2022/examples/textures_mouse_painting.vcxproj +0 -387
  363. package/vendor/raylib/projects/VS2022/examples/textures_npatch_drawing.vcxproj +0 -387
  364. package/vendor/raylib/projects/VS2022/examples/textures_particles_blending.vcxproj +0 -387
  365. package/vendor/raylib/projects/VS2022/examples/textures_polygon.vcxproj +0 -387
  366. package/vendor/raylib/projects/VS2022/examples/textures_raw_data.vcxproj +0 -387
  367. package/vendor/raylib/projects/VS2022/examples/textures_sprite_anim.vcxproj +0 -387
  368. package/vendor/raylib/projects/VS2022/examples/textures_sprite_button.vcxproj +0 -387
  369. package/vendor/raylib/projects/VS2022/examples/textures_sprite_explosion.vcxproj +0 -387
  370. package/vendor/raylib/projects/VS2022/examples/textures_srcrec_dstrec.vcxproj +0 -387
  371. package/vendor/raylib/projects/VS2022/examples/textures_to_image.vcxproj +0 -387
  372. package/vendor/raylib/projects/VS2022/raylib/raylib.vcxproj +0 -340
  373. package/vendor/raylib/projects/VS2022/raylib.sln +0 -2347
  374. package/vendor/sqlite3/shell.c +0 -23496
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "cnoke",
3
+ "version": "3.2.1",
4
+ "description": "Build native Node addons based on CMake, without extra dependency",
5
+ "keywords": [
6
+ "native",
7
+ "addon",
8
+ "cmake",
9
+ "c",
10
+ "c++"
11
+ ],
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/Koromix/rygel.git"
15
+ },
16
+ "author": "Niels Martignène <niels.martignene@protonmail.com>",
17
+ "bin": "cnoke.js",
18
+ "license": "AGPL-3.0",
19
+ "files": [
20
+ "cnoke.js",
21
+ "LICENSE.txt",
22
+ "README.md",
23
+ "assets"
24
+ ]
25
+ }
@@ -3069,6 +3069,7 @@ OpenResult OpenDescriptor(const char *filename, unsigned int flags, unsigned int
3069
3069
  DWORD access = 0;
3070
3070
  DWORD share = 0;
3071
3071
  DWORD creation = 0;
3072
+ DWORD attributes = 0;
3072
3073
  int oflags = -1;
3073
3074
  switch (flags & ((int)OpenFlag::Read |
3074
3075
  (int)OpenFlag::Write |
@@ -3077,47 +3078,63 @@ OpenResult OpenDescriptor(const char *filename, unsigned int flags, unsigned int
3077
3078
  access = GENERIC_READ;
3078
3079
  share = FILE_SHARE_READ | FILE_SHARE_WRITE;
3079
3080
  creation = OPEN_EXISTING;
3080
-
3081
+ attributes = FILE_ATTRIBUTE_NORMAL;
3081
3082
  oflags = _O_RDONLY | _O_BINARY | _O_NOINHERIT;
3082
3083
  } break;
3083
3084
  case (int)OpenFlag::Write: {
3084
3085
  access = GENERIC_WRITE;
3085
3086
  share = FILE_SHARE_READ | FILE_SHARE_WRITE;
3086
- creation = (flags & (int)OpenFlag::Exclusive) ? CREATE_NEW : CREATE_ALWAYS;
3087
-
3087
+ creation = CREATE_ALWAYS;
3088
+ attributes = FILE_ATTRIBUTE_NORMAL;
3088
3089
  oflags = _O_WRONLY | _O_CREAT | _O_TRUNC | _O_BINARY | _O_NOINHERIT;
3089
3090
  } break;
3090
3091
  case (int)OpenFlag::Read | (int)OpenFlag::Write: {
3091
3092
  access = GENERIC_READ | GENERIC_WRITE;
3092
3093
  share = FILE_SHARE_READ | FILE_SHARE_WRITE;
3093
- creation = (flags & (int)OpenFlag::Exclusive) ? CREATE_NEW : CREATE_ALWAYS;
3094
-
3094
+ creation = CREATE_ALWAYS;
3095
+ attributes = FILE_ATTRIBUTE_NORMAL;
3095
3096
  oflags = _O_RDWR | _O_CREAT | _O_TRUNC | _O_BINARY | _O_NOINHERIT;
3096
3097
  } break;
3097
3098
  case (int)OpenFlag::Append: {
3098
3099
  access = GENERIC_WRITE;
3099
3100
  share = FILE_SHARE_READ | FILE_SHARE_WRITE;
3100
- creation = (flags & (int)OpenFlag::Exclusive) ? CREATE_NEW : CREATE_ALWAYS;
3101
-
3101
+ creation = CREATE_ALWAYS;
3102
+ attributes = FILE_ATTRIBUTE_NORMAL;
3102
3103
  oflags = _O_WRONLY | _O_CREAT | _O_APPEND | _O_BINARY | _O_NOINHERIT;
3103
3104
  } break;
3104
3105
  }
3105
3106
  RG_ASSERT(oflags >= 0);
3106
3107
 
3107
- if (flags & (int)OpenFlag::Exclusive) {
3108
+ if (flags & (int)OpenFlag::Directory) {
3109
+ RG_ASSERT(!(flags & (int)OpenFlag::Exclusive));
3110
+ RG_ASSERT(!(flags & (int)OpenFlag::Append));
3111
+
3112
+ creation = OPEN_EXISTING;
3113
+ attributes = FILE_FLAG_BACKUP_SEMANTICS;
3114
+ oflags &= ~(_O_CREAT | _O_TRUNC | _O_BINARY);
3115
+ }
3116
+ if (flags & (int)OpenFlag::Exists) {
3117
+ RG_ASSERT(!(flags & (int)OpenFlag::Exclusive));
3118
+
3119
+ creation = OPEN_EXISTING;
3120
+ oflags &= ~_O_CREAT;
3121
+ } else if (flags & (int)OpenFlag::Exclusive) {
3122
+ RG_ASSERT(creation == CREATE_ALWAYS);
3123
+
3124
+ creation = CREATE_NEW;
3108
3125
  oflags |= (int)_O_EXCL;
3109
3126
  }
3110
3127
  share |= FILE_SHARE_DELETE;
3111
3128
 
3112
3129
  HANDLE h;
3113
3130
  if (win32_utf8) {
3114
- h = CreateFileA(filename, access, share, nullptr, creation, FILE_ATTRIBUTE_NORMAL, nullptr);
3131
+ h = CreateFileA(filename, access, share, nullptr, creation, attributes, nullptr);
3115
3132
  } else {
3116
3133
  wchar_t filename_w[4096];
3117
3134
  if (ConvertUtf8ToWin32Wide(filename, filename_w) < 0)
3118
3135
  return OpenResult::OtherError;
3119
3136
 
3120
- h = CreateFileW(filename_w, access, share, nullptr, creation, FILE_ATTRIBUTE_NORMAL, nullptr);
3137
+ h = CreateFileW(filename_w, access, share, nullptr, creation, attributes, nullptr);
3121
3138
  }
3122
3139
  if (h == INVALID_HANDLE_VALUE) {
3123
3140
  DWORD err = GetLastError();
@@ -3410,7 +3427,17 @@ OpenResult OpenDescriptor(const char *filename, unsigned int flags, unsigned int
3410
3427
  }
3411
3428
  RG_ASSERT(oflags >= 0);
3412
3429
 
3413
- if (flags & (int)OpenFlag::Exclusive) {
3430
+ if (flags & (int)OpenFlag::Directory) {
3431
+ RG_ASSERT(!(flags & (int)OpenFlag::Exclusive));
3432
+ RG_ASSERT(!(flags & (int)OpenFlag::Append));
3433
+
3434
+ oflags &= ~O_CREAT;
3435
+ }
3436
+ if (flags & (int)OpenFlag::Exists) {
3437
+ RG_ASSERT(!(flags & (int)OpenFlag::Exclusive));
3438
+ oflags &= ~O_CREAT;
3439
+ } else if (flags & (int)OpenFlag::Exclusive) {
3440
+ RG_ASSERT(oflags & O_CREAT);
3414
3441
  oflags |= O_EXCL;
3415
3442
  }
3416
3443
 
@@ -272,7 +272,7 @@ constexpr Size Kilobytes(Size len) { return len * 1000; }
272
272
  template <typename T, unsigned N>
273
273
  char (&ComputeArraySize(T const (&)[N]))[N];
274
274
  #define RG_LEN(Array) RG_SIZE(RG::ComputeArraySize(Array))
275
- #define RG_OFFSET_OF(Type, Member) __builtin_offsetof(Type, Member)
275
+ #define RG_OFFSET_OF(Type, Member) ((Size)__builtin_offsetof(Type, Member))
276
276
 
277
277
  static inline constexpr uint16_t ReverseBytes(uint16_t u)
278
278
  {
@@ -3868,7 +3868,9 @@ enum class OpenFlag {
3868
3868
  Write = 1 << 1,
3869
3869
  Append = 1 << 2,
3870
3870
 
3871
- Exclusive = 1 << 3
3871
+ Directory = 1 << 3,
3872
+ Exists = 1 << 4,
3873
+ Exclusive = 1 << 5
3872
3874
  };
3873
3875
 
3874
3876
  enum class OpenResult {
@@ -44,7 +44,7 @@ set(KOFFI_SRC
44
44
  src/ffi.cc
45
45
  src/parser.cc
46
46
  src/util.cc
47
- vendor/libcc/libcc.cc
47
+ ../../src/core/libcc/libcc.cc
48
48
  )
49
49
  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
50
50
  # CMAKE_SYSTEM_PROCESSOR is wrong on Windows ARM64
@@ -98,9 +98,9 @@ elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
98
98
  endif()
99
99
 
100
100
  add_node_addon(NAME koffi SOURCES ${KOFFI_SRC})
101
- target_include_directories(koffi PRIVATE . vendor/node-addon-api)
101
+ target_include_directories(koffi PRIVATE . ../.. ../../vendor/node-addon-api)
102
102
 
103
- target_compile_definitions(koffi PRIVATE FELIX_TARGET=koffi NAPI_DISABLE_CPP_EXCEPTIONS NAPI_VERSION=8)
103
+ target_compile_definitions(koffi PRIVATE FELIX_TARGET=koffi NAPI_DISABLE_CPP_EXCEPTIONS NAPI_VERSION=8 LIBCC_NO_BROTLI LIBCC_NO_MINIZ)
104
104
  if(WIN32)
105
105
  target_compile_definitions(koffi PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE)
106
106
  target_link_libraries(koffi PRIVATE ws2_32)
@@ -36,8 +36,9 @@ endif()
36
36
 
37
37
  # ---- atoi ----
38
38
 
39
- add_node_addon(NAME atoi_napi SOURCES atoi_napi.cc ../vendor/libcc/libcc.cc)
40
- target_include_directories(atoi_napi PRIVATE .. ../vendor/node-addon-api)
39
+ add_node_addon(NAME atoi_napi SOURCES atoi_napi.cc ../../../src/core/libcc/libcc.cc)
40
+ target_compile_definitions(atoi_napi PRIVATE LIBCC_NO_BROTLI LIBCC_NO_MINIZ)
41
+ target_include_directories(atoi_napi PRIVATE ../../.. ../../../vendor/node-addon-api)
41
42
  target_link_libraries(atoi_napi PRIVATE Threads::Threads)
42
43
 
43
44
  if(WIN32)
@@ -49,8 +50,9 @@ endif()
49
50
 
50
51
  # ---- rand ----
51
52
 
52
- add_node_addon(NAME rand_napi SOURCES rand_napi.cc ../vendor/libcc/libcc.cc)
53
- target_include_directories(rand_napi PRIVATE .. ../vendor/node-addon-api)
53
+ add_node_addon(NAME rand_napi SOURCES rand_napi.cc ../../../src/core/libcc/libcc.cc)
54
+ target_compile_definitions(rand_napi PRIVATE LIBCC_NO_BROTLI LIBCC_NO_MINIZ)
55
+ target_include_directories(rand_napi PRIVATE ../../.. ../../../vendor/node-addon-api)
54
56
  target_link_libraries(rand_napi PRIVATE Threads::Threads)
55
57
 
56
58
  if(WIN32)
@@ -62,8 +64,9 @@ endif()
62
64
 
63
65
  # ---- Raylib ----
64
66
 
65
- add_executable(raylib_cc raylib_cc.cc ../vendor/libcc/libcc.cc)
66
- target_include_directories(raylib_cc PRIVATE ..)
67
+ add_executable(raylib_cc raylib_cc.cc ../../../src/core/libcc/libcc.cc)
68
+ target_compile_definitions(raylib_cc PRIVATE LIBCC_NO_BROTLI LIBCC_NO_MINIZ)
69
+ target_include_directories(raylib_cc PRIVATE ../../..)
67
70
  target_link_libraries(raylib_cc PRIVATE Threads::Threads raylib)
68
71
 
69
72
  if(WIN32)
File without changes
@@ -11,7 +11,7 @@
11
11
  // You should have received a copy of the GNU Affero General Public License
12
12
  // along with this program. If not, see https://www.gnu.org/licenses/.
13
13
 
14
- #include "vendor/libcc/libcc.hh"
14
+ #include "src/core/libcc/libcc.hh"
15
15
  #include <napi.h>
16
16
 
17
17
  namespace RG {
File without changes
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env node
2
+
3
+ // This program is free software: you can redistribute it and/or modify
4
+ // it under the terms of the GNU Affero General Public License as published by
5
+ // the Free Software Foundation, either version 3 of the License, or
6
+ // (at your option) any later version.
7
+ //
8
+ // This program is distributed in the hope that it will be useful,
9
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ // GNU Affero General Public License for more details.
12
+ //
13
+ // You should have received a copy of the GNU Affero General Public License
14
+ // along with this program. If not, see https://www.gnu.org/licenses/.
15
+
16
+ const { spawnSync } = require('child_process');
17
+ const fs = require('fs');
18
+ const path = require('path');
19
+ const minimatch = require('minimatch');
20
+
21
+ main();
22
+
23
+ function main() {
24
+ try {
25
+ let select = process.argv.slice(2);
26
+ benchmark(select);
27
+ } catch (err) {
28
+ console.error(err);
29
+ process.exit(1);
30
+ }
31
+ }
32
+
33
+ function benchmark(select) {
34
+ if (!select.length || select.includes('rand'))
35
+ format(run('rand', 'rand_napi'), 'ns');
36
+ if (!select.length || select.includes('atoi'))
37
+ format(run('atoi', 'atoi_napi'), 'ns');
38
+ if (!select.length || select.includes('raylib'))
39
+ format(run('raylib', 'raylib_node_raylib'), 'us');
40
+ }
41
+
42
+ function run(name, ref) {
43
+ let tests = [];
44
+ {
45
+ let entries = fs.readdirSync(__dirname);
46
+
47
+ let pattern = name + '_*.js';
48
+ let re = minimatch.makeRe(pattern);
49
+
50
+ for (let entry of entries) {
51
+ if (entry.match(re)) {
52
+ let test = {
53
+ name: path.basename(entry, '.js'),
54
+ filename: path.join(__dirname, entry)
55
+ };
56
+
57
+ if (test.name == ref)
58
+ ref = test;
59
+ tests.push(test);
60
+ }
61
+ }
62
+ }
63
+
64
+ if (typeof ref == 'string')
65
+ throw new Error('Failed to find reference test');
66
+
67
+ for (let test of tests) {
68
+ let proc = spawnSync(process.execPath, [test.filename]);
69
+
70
+ if (proc.status == null)
71
+ throw new Error(proc.error);
72
+ if (proc.status !== 0)
73
+ throw new Error(proc.stderr);
74
+
75
+ let perf = JSON.parse(proc.stdout);
76
+
77
+ test.iterations = perf.iterations;
78
+ test.time = perf.time;
79
+ }
80
+
81
+ for (let test of tests) {
82
+ test.ratio = (ref.time / ref.iterations) / (test.time / test.iterations);
83
+
84
+ if (test != ref) {
85
+ test.overhead = Math.round((1 / test.ratio - 1) * 100);
86
+ } else {
87
+ test.overhead = '(ref)';
88
+ }
89
+ }
90
+
91
+ tests.sort((test1, test2) => test2.ratio - test1.ratio);
92
+
93
+ return tests;
94
+ }
95
+
96
+ function format(tests, unit) {
97
+ let len0 = tests.reduce((acc, test) => Math.max(acc, test.name.length), 0);
98
+
99
+ console.log(`${'Benchmark'.padEnd(len0, ' ')} | Iteration time | Relative performance | Overhead`);
100
+ console.log(`${'-'.padEnd(len0, '-')} | -------------- | -------------------- | --------`);
101
+ for (let test of tests) {
102
+ let time = format_time(test.time / test.iterations, unit);
103
+ let ratio = test.ratio.toFixed(test.ratio < 0.01 ? 3 : 2);
104
+ let overhead = (typeof test.overhead == 'number') ? `${test.overhead >= 0 ? '+' : ''}${test.overhead}%` : test.overhead;
105
+
106
+ console.log(`${test.name.padEnd(len0, ' ')} | ${('' + time).padEnd(14, ' ')} | x${('' + ratio).padEnd(19, ' ')} | ${overhead}`);
107
+ }
108
+
109
+ console.log('');
110
+ }
111
+
112
+ function format_time(time, unit) {
113
+ switch (unit) {
114
+ case 'ms': { return (time * 1).toFixed(1) + ' ms'; } break;
115
+ case 'us': { return (time * 1000).toFixed(1) + ' µs'; } break;
116
+ case 'ns': { return (time * 10000000).toFixed(0) + ' ns'; } break;
117
+ }
118
+ }
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env node
2
+
3
+ // This program is free software: you can redistribute it and/or modify
4
+ // it under the terms of the GNU Affero General Public License as published by
5
+ // the Free Software Foundation, either version 3 of the License, or
6
+ // (at your option) any later version.
7
+ //
8
+ // This program is distributed in the hope that it will be useful,
9
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ // GNU Affero General Public License for more details.
12
+ //
13
+ // You should have received a copy of the GNU Affero General Public License
14
+ // along with this program. If not, see https://www.gnu.org/licenses/.
15
+
16
+ const koffi = require('./build/koffi.node');
17
+
18
+ let sum = 0;
19
+
20
+ main();
21
+
22
+ function main() {
23
+ let time = 5000;
24
+
25
+ if (process.argv.length >= 3) {
26
+ time = parseFloat(process.argv[2]) * 1000;
27
+ if (Number.isNaN(time))
28
+ throw new Error('Not a valid number');
29
+ if (time < 0)
30
+ throw new Error('Time must be positive');
31
+ }
32
+
33
+ let lib = koffi.load(process.platform == 'win32' ? 'msvcrt.dll' : null);
34
+
35
+ const srand = lib.cdecl('srand', 'void', ['uint']);
36
+ const rand = lib.cdecl('rand', 'int', []);
37
+
38
+ srand(42);
39
+
40
+ let start = performance.now();
41
+ let iterations = 0;
42
+
43
+ while (performance.now() - start < time) {
44
+ for (let i = 0; i < 1000000; i++)
45
+ sum += rand();
46
+
47
+ iterations += 1000000;
48
+ }
49
+
50
+ time = performance.now() - start;
51
+ console.log(JSON.stringify({ iterations: iterations, time: Math.round(time) }));
52
+ }
@@ -0,0 +1,69 @@
1
+ // This program is free software: you can redistribute it and/or modify
2
+ // it under the terms of the GNU Affero General Public License as published by
3
+ // the Free Software Foundation, either version 3 of the License, or
4
+ // (at your option) any later version.
5
+ //
6
+ // This program is distributed in the hope that it will be useful,
7
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
8
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
+ // GNU Affero General Public License for more details.
10
+ //
11
+ // You should have received a copy of the GNU Affero General Public License
12
+ // along with this program. If not, see https://www.gnu.org/licenses/.
13
+
14
+ #include "src/core/libcc/libcc.hh"
15
+ #include <napi.h>
16
+
17
+ namespace RG {
18
+
19
+ template <typename T, typename... Args>
20
+ void ThrowError(Napi::Env env, const char *msg, Args... args)
21
+ {
22
+ char buf[1024];
23
+ Fmt(buf, msg, args...);
24
+
25
+ auto err = T::New(env, buf);
26
+ err.ThrowAsJavaScriptException();
27
+ }
28
+
29
+ static Napi::Value RunSrand(const Napi::CallbackInfo &info)
30
+ {
31
+ Napi::Env env = info.Env();
32
+
33
+ if (RG_UNLIKELY(info.Length() < 1)) {
34
+ ThrowError<Napi::TypeError>(env, "Expected 1 argument, got %1", info.Length());
35
+ return env.Null();
36
+ }
37
+ if (RG_UNLIKELY(!info[0].IsNumber())) {
38
+ ThrowError<Napi::TypeError>(env, "Unexpected type for seed, expected number");
39
+ return env.Null();
40
+ }
41
+
42
+ unsigned int seed = (info[0].As<Napi::Number>()).Uint32Value();
43
+ srand(seed);
44
+
45
+ return env.Null();
46
+ }
47
+
48
+ static Napi::Value RunRand(const Napi::CallbackInfo &info)
49
+ {
50
+ Napi::Env env = info.Env();
51
+
52
+ int rnd = rand();
53
+
54
+ return Napi::Number::New(env, rnd);
55
+ }
56
+
57
+ }
58
+
59
+ static Napi::Object InitModule(Napi::Env env, Napi::Object exports)
60
+ {
61
+ using namespace RG;
62
+
63
+ exports.Set("srand", Napi::Function::New(env, RunSrand));
64
+ exports.Set("rand", Napi::Function::New(env, RunRand));
65
+
66
+ return exports;
67
+ }
68
+
69
+ NODE_API_MODULE(koffi, InitModule);
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+
3
+ // This program is free software: you can redistribute it and/or modify
4
+ // it under the terms of the GNU Affero General Public License as published by
5
+ // the Free Software Foundation, either version 3 of the License, or
6
+ // (at your option) any later version.
7
+ //
8
+ // This program is distributed in the hope that it will be useful,
9
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ // GNU Affero General Public License for more details.
12
+ //
13
+ // You should have received a copy of the GNU Affero General Public License
14
+ // along with this program. If not, see https://www.gnu.org/licenses/.
15
+
16
+ const rand = require('./build/rand_napi.node');
17
+
18
+ let sum = 0;
19
+
20
+ main();
21
+
22
+ function main() {
23
+ let time = 5000;
24
+
25
+ if (process.argv.length >= 3) {
26
+ time = parseFloat(process.argv[2]) * 1000;
27
+ if (Number.isNaN(time))
28
+ throw new Error('Not a valid number');
29
+ if (time < 0)
30
+ throw new Error('Time must be positive');
31
+ }
32
+
33
+ rand.srand(42);
34
+
35
+ let start = performance.now();
36
+ let iterations = 0;
37
+
38
+ while (performance.now() - start < time) {
39
+ for (let i = 0; i < 1000000; i++)
40
+ sum += rand.rand();
41
+
42
+ iterations += 1000000;
43
+ }
44
+
45
+ time = performance.now() - start;
46
+ console.log(JSON.stringify({ iterations: iterations, time: Math.round(time) }));
47
+ }
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env node
2
+
3
+ // This program is free software: you can redistribute it and/or modify
4
+ // it under the terms of the GNU Affero General Public License as published by
5
+ // the Free Software Foundation, either version 3 of the License, or
6
+ // (at your option) any later version.
7
+ //
8
+ // This program is distributed in the hope that it will be useful,
9
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ // GNU Affero General Public License for more details.
12
+ //
13
+ // You should have received a copy of the GNU Affero General Public License
14
+ // along with this program. If not, see https://www.gnu.org/licenses/.
15
+
16
+ const ref = require('ref-napi');
17
+ const ffi = require('ffi-napi');
18
+ const struct = require('ref-struct-di')(ref);
19
+
20
+ let sum = 0;
21
+
22
+ main();
23
+
24
+ async function main() {
25
+ let time = 5000;
26
+
27
+ if (process.argv.length >= 3) {
28
+ time = parseFloat(process.argv[2]) * 1000;
29
+ if (Number.isNaN(time))
30
+ throw new Error('Not a valid number');
31
+ if (time < 0)
32
+ throw new Error('Time must be positive');
33
+ }
34
+
35
+ const lib = ffi.Library(process.platform == 'win32' ? 'msvcrt.dll' : null, {
36
+ srand: ['void', ['uint']],
37
+ rand: ['int', []]
38
+ });
39
+
40
+ lib.srand(42);
41
+
42
+ let start = performance.now();
43
+ let iterations = 0;
44
+
45
+ while (performance.now() - start < time) {
46
+ for (let i = 0; i < 1000000; i++)
47
+ sum += lib.rand();
48
+
49
+ iterations += 1000000;
50
+ }
51
+
52
+ time = performance.now() - start;
53
+ console.log(JSON.stringify({ iterations: iterations, time: Math.round(time) }));
54
+ }
55
+
@@ -11,8 +11,8 @@
11
11
  // You should have received a copy of the GNU Affero General Public License
12
12
  // along with this program. If not, see https://www.gnu.org/licenses/.
13
13
 
14
- #include "../vendor/libcc/libcc.hh"
15
- #include "../vendor/raylib/src/raylib.h"
14
+ #include "src/core/libcc/libcc.hh"
15
+ #include "vendor/raylib/src/raylib.h"
16
16
 
17
17
  namespace RG {
18
18
 
File without changes
File without changes