uringmachine 0.23.1 → 0.25.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.
Files changed (291) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/.gitignore +1 -0
  4. data/.gitmodules +0 -3
  5. data/CHANGELOG.md +17 -0
  6. data/Gemfile +12 -1
  7. data/README.md +266 -112
  8. data/Rakefile +8 -0
  9. data/TODO.md +40 -17
  10. data/benchmark/bm_io_pipe.rb +43 -1
  11. data/benchmark/bm_io_socketpair.rb +32 -2
  12. data/benchmark/bm_mutex_io.rb +47 -5
  13. data/benchmark/chart_bm_io_pipe_x.png +0 -0
  14. data/benchmark/common.rb +163 -17
  15. data/benchmark/http_parse.rb +9 -9
  16. data/benchmark/http_server_accept_queue.rb +104 -0
  17. data/benchmark/http_server_multi_accept.rb +93 -0
  18. data/benchmark/http_server_multi_ractor.rb +99 -0
  19. data/benchmark/http_server_single_thread.rb +80 -0
  20. data/benchmark/ips_io_pipe.rb +146 -0
  21. data/benchmark/openssl.rb +77 -0
  22. data/benchmark/openssl_socketpair.rb +112 -0
  23. data/benchmark/sqlite.rb +1 -1
  24. data/docs/design/buffer_pool.md +183 -0
  25. data/docs/um_api.md +91 -0
  26. data/examples/fiber_scheduler_file_io.rb +34 -0
  27. data/examples/fiber_scheduler_file_io_async.rb +33 -0
  28. data/ext/um/extconf.rb +15 -0
  29. data/ext/um/um.c +83 -50
  30. data/ext/um/um.h +18 -3
  31. data/ext/um/um_async_op_class.c +31 -0
  32. data/ext/um/um_class.c +759 -30
  33. data/ext/um/um_const.c +31 -0
  34. data/ext/um/um_mutex_class.c +12 -0
  35. data/ext/um/um_queue_class.c +16 -0
  36. data/ext/um/um_sidecar.c +106 -0
  37. data/ext/um/um_ssl.c +109 -0
  38. data/ext/um/um_stream.c +40 -8
  39. data/ext/um/um_stream_class.c +14 -0
  40. data/ext/um/um_utils.c +3 -4
  41. data/grant-2025/interim-report.md +130 -0
  42. data/grant-2025/journal.md +166 -2
  43. data/grant-2025/tasks.md +32 -20
  44. data/lib/uringmachine/dns_resolver.rb +38 -0
  45. data/lib/uringmachine/fiber_scheduler.rb +42 -32
  46. data/lib/uringmachine/version.rb +1 -1
  47. data/lib/uringmachine.rb +105 -7
  48. data/test/helper.rb +23 -3
  49. data/test/test_fiber.rb +16 -0
  50. data/test/test_fiber_scheduler.rb +221 -72
  51. data/test/test_ssl.rb +85 -0
  52. data/test/test_stream.rb +27 -0
  53. data/test/test_um.rb +250 -26
  54. data/uringmachine.gemspec +1 -7
  55. data/vendor/liburing/examples/send-zerocopy.c +43 -31
  56. data/vendor/liburing/examples/zcrx.c +260 -69
  57. data/vendor/liburing/liburing.spec +1 -1
  58. data/vendor/liburing/src/include/liburing/io_uring.h +12 -0
  59. data/vendor/liburing/src/include/liburing.h +3 -2
  60. data/vendor/liburing/src/liburing-ffi.map +4 -0
  61. data/vendor/liburing/src/liburing.map +4 -0
  62. data/vendor/liburing/src/queue.c +12 -0
  63. data/vendor/liburing/src/register.c +1 -0
  64. data/vendor/liburing/src/setup.c +15 -7
  65. data/vendor/liburing/test/Makefile +8 -4
  66. data/vendor/liburing/test/conn-unreach.c +1 -1
  67. data/vendor/liburing/test/epwait.c +32 -6
  68. data/vendor/liburing/test/io-wq-exit.c +131 -0
  69. data/vendor/liburing/test/iowait.c +1 -1
  70. data/vendor/liburing/test/min-timeout.c +3 -1
  71. data/vendor/liburing/test/open-close.c +39 -0
  72. data/vendor/liburing/test/poll-update-trigger.c +85 -0
  73. data/vendor/liburing/test/recvsend_bundle.c +14 -11
  74. data/vendor/liburing/test/sendzc-bug.c +146 -0
  75. data/vendor/liburing/test/sqe-mixed-nop.c +151 -7
  76. data/vendor/liburing/test/test.h +2 -0
  77. data/vendor/liburing/test/timestamp-bug.c +135 -0
  78. data/vendor/liburing/test/timestamp.c +5 -0
  79. data/vendor/liburing/test/vec-regbuf.c +136 -1
  80. metadata +50 -284
  81. data/vendor/libressl/.github/scripts/changelog.sh +0 -74
  82. data/vendor/libressl/.github/workflows/android.yml +0 -35
  83. data/vendor/libressl/.github/workflows/cifuzz.yml +0 -33
  84. data/vendor/libressl/.github/workflows/cmake-config.yml +0 -98
  85. data/vendor/libressl/.github/workflows/coverity.yml +0 -69
  86. data/vendor/libressl/.github/workflows/emscripten.yml +0 -71
  87. data/vendor/libressl/.github/workflows/fedora-rawhide.yml +0 -39
  88. data/vendor/libressl/.github/workflows/freebsd.yml +0 -71
  89. data/vendor/libressl/.github/workflows/linux.yml +0 -71
  90. data/vendor/libressl/.github/workflows/macos.yml +0 -37
  91. data/vendor/libressl/.github/workflows/release.yml +0 -81
  92. data/vendor/libressl/.github/workflows/rust-openssl.yml +0 -47
  93. data/vendor/libressl/.github/workflows/solaris.yml +0 -37
  94. data/vendor/libressl/.github/workflows/windows.yml +0 -70
  95. data/vendor/libressl/.gitignore +0 -333
  96. data/vendor/libressl/CMakeLists.txt +0 -581
  97. data/vendor/libressl/COPYING +0 -133
  98. data/vendor/libressl/ChangeLog +0 -3280
  99. data/vendor/libressl/FindLibreSSL.cmake +0 -232
  100. data/vendor/libressl/LibreSSLConfig.cmake.in +0 -36
  101. data/vendor/libressl/Makefile.am +0 -60
  102. data/vendor/libressl/Makefile.am.common +0 -20
  103. data/vendor/libressl/OPENBSD_BRANCH +0 -1
  104. data/vendor/libressl/README.md +0 -238
  105. data/vendor/libressl/README.mingw.md +0 -43
  106. data/vendor/libressl/apps/CMakeLists.txt +0 -18
  107. data/vendor/libressl/apps/Makefile.am +0 -5
  108. data/vendor/libressl/apps/nc/CMakeLists.txt +0 -67
  109. data/vendor/libressl/apps/nc/Makefile.am +0 -64
  110. data/vendor/libressl/apps/nc/compat/accept4.c +0 -17
  111. data/vendor/libressl/apps/nc/compat/readpassphrase.c +0 -205
  112. data/vendor/libressl/apps/nc/compat/socket.c +0 -29
  113. data/vendor/libressl/apps/nc/compat/sys/socket.h +0 -30
  114. data/vendor/libressl/apps/ocspcheck/CMakeLists.txt +0 -44
  115. data/vendor/libressl/apps/ocspcheck/Makefile.am +0 -45
  116. data/vendor/libressl/apps/ocspcheck/compat/.gitignore +0 -0
  117. data/vendor/libressl/apps/openssl/CMakeLists.txt +0 -97
  118. data/vendor/libressl/apps/openssl/Makefile.am +0 -108
  119. data/vendor/libressl/apps/openssl/apps_win.c +0 -138
  120. data/vendor/libressl/apps/openssl/certhash_win.c +0 -13
  121. data/vendor/libressl/apps/openssl/compat/clock_gettime_osx.c +0 -26
  122. data/vendor/libressl/apps/openssl/compat/poll_win.c +0 -329
  123. data/vendor/libressl/appveyor.yml +0 -53
  124. data/vendor/libressl/autogen.sh +0 -15
  125. data/vendor/libressl/check-release.sh +0 -86
  126. data/vendor/libressl/cmake_export_symbol.cmake +0 -71
  127. data/vendor/libressl/cmake_uninstall.cmake.in +0 -36
  128. data/vendor/libressl/config +0 -17
  129. data/vendor/libressl/configure.ac +0 -165
  130. data/vendor/libressl/crypto/CMakeLists.txt +0 -863
  131. data/vendor/libressl/crypto/Makefile.am +0 -962
  132. data/vendor/libressl/crypto/Makefile.am.arc4random +0 -46
  133. data/vendor/libressl/crypto/Makefile.am.elf-mips +0 -14
  134. data/vendor/libressl/crypto/Makefile.am.elf-mips64 +0 -14
  135. data/vendor/libressl/crypto/Makefile.am.elf-x86_64 +0 -35
  136. data/vendor/libressl/crypto/Makefile.am.macosx-x86_64 +0 -35
  137. data/vendor/libressl/crypto/Makefile.am.masm-x86_64 +0 -22
  138. data/vendor/libressl/crypto/Makefile.am.mingw64-x86_64 +0 -23
  139. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_darwin.c +0 -60
  140. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_linux.c +0 -62
  141. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_none.c +0 -26
  142. data/vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_windows.c +0 -36
  143. data/vendor/libressl/crypto/arch/loongarch64/crypto_arch.h +0 -21
  144. data/vendor/libressl/crypto/arch/mips/crypto_arch.h +0 -21
  145. data/vendor/libressl/crypto/bn/arch/loongarch64/bn_arch.h +0 -23
  146. data/vendor/libressl/crypto/bn/arch/mips/bn_arch.h +0 -24
  147. data/vendor/libressl/crypto/compat/.gitignore +0 -31
  148. data/vendor/libressl/crypto/compat/arc4random.h +0 -41
  149. data/vendor/libressl/crypto/compat/b_win.c +0 -55
  150. data/vendor/libressl/crypto/compat/bsd-asprintf.c +0 -96
  151. data/vendor/libressl/crypto/compat/crypto_lock_win.c +0 -56
  152. data/vendor/libressl/crypto/compat/explicit_bzero_win.c +0 -13
  153. data/vendor/libressl/crypto/compat/freezero.c +0 -32
  154. data/vendor/libressl/crypto/compat/getdelim.c +0 -78
  155. data/vendor/libressl/crypto/compat/getline.c +0 -40
  156. data/vendor/libressl/crypto/compat/getopt_long.c +0 -528
  157. data/vendor/libressl/crypto/compat/getpagesize.c +0 -18
  158. data/vendor/libressl/crypto/compat/getprogname_linux.c +0 -23
  159. data/vendor/libressl/crypto/compat/getprogname_unimpl.c +0 -7
  160. data/vendor/libressl/crypto/compat/getprogname_windows.c +0 -13
  161. data/vendor/libressl/crypto/compat/posix_win.c +0 -296
  162. data/vendor/libressl/crypto/compat/syslog_r.c +0 -19
  163. data/vendor/libressl/crypto/compat/ui_openssl_win.c +0 -334
  164. data/vendor/libressl/dist.sh +0 -22
  165. data/vendor/libressl/gen-coverage-report.sh +0 -58
  166. data/vendor/libressl/gen-openbsd-tags.sh +0 -20
  167. data/vendor/libressl/include/CMakeLists.txt +0 -61
  168. data/vendor/libressl/include/Makefile.am +0 -79
  169. data/vendor/libressl/include/arch/loongarch64/opensslconf.h +0 -150
  170. data/vendor/libressl/include/arch/mips/opensslconf.h +0 -150
  171. data/vendor/libressl/include/compat/arpa/inet.h +0 -15
  172. data/vendor/libressl/include/compat/arpa/nameser.h +0 -25
  173. data/vendor/libressl/include/compat/cet.h +0 -19
  174. data/vendor/libressl/include/compat/dirent.h +0 -17
  175. data/vendor/libressl/include/compat/dirent_msvc.h +0 -611
  176. data/vendor/libressl/include/compat/endian.h +0 -161
  177. data/vendor/libressl/include/compat/err.h +0 -95
  178. data/vendor/libressl/include/compat/fcntl.h +0 -32
  179. data/vendor/libressl/include/compat/getopt.h +0 -50
  180. data/vendor/libressl/include/compat/limits.h +0 -25
  181. data/vendor/libressl/include/compat/netdb.h +0 -10
  182. data/vendor/libressl/include/compat/netinet/in.h +0 -19
  183. data/vendor/libressl/include/compat/netinet/ip.h +0 -49
  184. data/vendor/libressl/include/compat/netinet/tcp.h +0 -10
  185. data/vendor/libressl/include/compat/poll.h +0 -63
  186. data/vendor/libressl/include/compat/pthread.h +0 -122
  187. data/vendor/libressl/include/compat/readpassphrase.h +0 -44
  188. data/vendor/libressl/include/compat/resolv.h +0 -24
  189. data/vendor/libressl/include/compat/stdint.h +0 -31
  190. data/vendor/libressl/include/compat/stdio.h +0 -65
  191. data/vendor/libressl/include/compat/stdlib.h +0 -57
  192. data/vendor/libressl/include/compat/string.h +0 -98
  193. data/vendor/libressl/include/compat/sys/_null.h +0 -18
  194. data/vendor/libressl/include/compat/sys/ioctl.h +0 -11
  195. data/vendor/libressl/include/compat/sys/mman.h +0 -19
  196. data/vendor/libressl/include/compat/sys/param.h +0 -15
  197. data/vendor/libressl/include/compat/sys/queue.h +0 -536
  198. data/vendor/libressl/include/compat/sys/select.h +0 -10
  199. data/vendor/libressl/include/compat/sys/socket.h +0 -18
  200. data/vendor/libressl/include/compat/sys/stat.h +0 -129
  201. data/vendor/libressl/include/compat/sys/time.h +0 -37
  202. data/vendor/libressl/include/compat/sys/tree.h +0 -1006
  203. data/vendor/libressl/include/compat/sys/types.h +0 -69
  204. data/vendor/libressl/include/compat/sys/uio.h +0 -17
  205. data/vendor/libressl/include/compat/syslog.h +0 -38
  206. data/vendor/libressl/include/compat/time.h +0 -59
  207. data/vendor/libressl/include/compat/unistd.h +0 -83
  208. data/vendor/libressl/include/compat/win32netcompat.h +0 -57
  209. data/vendor/libressl/include/openssl/Makefile.am.tpl +0 -45
  210. data/vendor/libressl/libcrypto.pc.in +0 -28
  211. data/vendor/libressl/libressl.pub +0 -2
  212. data/vendor/libressl/libssl.pc.in +0 -28
  213. data/vendor/libressl/libtls.pc.in +0 -28
  214. data/vendor/libressl/m4/ax_add_fortify_source.m4 +0 -80
  215. data/vendor/libressl/m4/ax_check_compile_flag.m4 +0 -53
  216. data/vendor/libressl/m4/check-hardening-options.m4 +0 -110
  217. data/vendor/libressl/m4/check-libc.m4 +0 -189
  218. data/vendor/libressl/m4/check-os-options.m4 +0 -181
  219. data/vendor/libressl/m4/disable-compiler-warnings.m4 +0 -44
  220. data/vendor/libressl/man/CMakeLists.txt +0 -26
  221. data/vendor/libressl/man/links +0 -2780
  222. data/vendor/libressl/man/update_links.sh +0 -25
  223. data/vendor/libressl/openssl.pc.in +0 -11
  224. data/vendor/libressl/patches/bn_shift.patch +0 -34
  225. data/vendor/libressl/patches/crypto_arch.h.patch +0 -34
  226. data/vendor/libressl/patches/crypto_namespace.h.patch +0 -22
  227. data/vendor/libressl/patches/netcat.c.patch +0 -178
  228. data/vendor/libressl/patches/openssl.c.patch +0 -12
  229. data/vendor/libressl/patches/opensslfeatures.h.patch +0 -49
  230. data/vendor/libressl/patches/patch-amd64-crypto-cpu-caps.c.patch +0 -20
  231. data/vendor/libressl/patches/patch-i386-crypto-cpu-caps.c.patch +0 -20
  232. data/vendor/libressl/patches/speed.c.patch +0 -114
  233. data/vendor/libressl/patches/ssl_namespace.h.patch +0 -21
  234. data/vendor/libressl/patches/tls.h.patch +0 -16
  235. data/vendor/libressl/patches/tls_config.c.patch +0 -15
  236. data/vendor/libressl/patches/win32_amd64_bn_arch.h.patch +0 -28
  237. data/vendor/libressl/patches/windows_headers.patch +0 -80
  238. data/vendor/libressl/scripts/config.guess +0 -1774
  239. data/vendor/libressl/scripts/config.sub +0 -1907
  240. data/vendor/libressl/scripts/i686-w64-mingw32.cmake +0 -9
  241. data/vendor/libressl/scripts/test +0 -210
  242. data/vendor/libressl/scripts/wrap-compiler-for-flag-check +0 -31
  243. data/vendor/libressl/scripts/x86_64-w64-mingw32.cmake +0 -9
  244. data/vendor/libressl/ssl/CMakeLists.txt +0 -183
  245. data/vendor/libressl/ssl/Makefile.am +0 -187
  246. data/vendor/libressl/tests/CMakeLists.txt +0 -970
  247. data/vendor/libressl/tests/Makefile.am +0 -944
  248. data/vendor/libressl/tests/aeadtest.sh +0 -30
  249. data/vendor/libressl/tests/arc4randomforktest.sh +0 -21
  250. data/vendor/libressl/tests/asn1time_small.test +0 -10
  251. data/vendor/libressl/tests/cmake/CMakeLists.txt +0 -52
  252. data/vendor/libressl/tests/cmake/crypto.c +0 -7
  253. data/vendor/libressl/tests/cmake/ssl.c +0 -6
  254. data/vendor/libressl/tests/cmake/tls.c +0 -6
  255. data/vendor/libressl/tests/compat/pipe2.c +0 -186
  256. data/vendor/libressl/tests/dtlstest.sh +0 -28
  257. data/vendor/libressl/tests/evptest.sh +0 -22
  258. data/vendor/libressl/tests/keypairtest.sh +0 -27
  259. data/vendor/libressl/tests/mlkem_tests.sh +0 -39
  260. data/vendor/libressl/tests/ocsptest.bat +0 -25
  261. data/vendor/libressl/tests/ocsptest.sh +0 -23
  262. data/vendor/libressl/tests/openssl.cnf +0 -29
  263. data/vendor/libressl/tests/optionstest.c +0 -381
  264. data/vendor/libressl/tests/pidwraptest.c +0 -85
  265. data/vendor/libressl/tests/pidwraptest.sh +0 -26
  266. data/vendor/libressl/tests/quictest.bat +0 -27
  267. data/vendor/libressl/tests/quictest.sh +0 -30
  268. data/vendor/libressl/tests/renegotiation_test.bat +0 -27
  269. data/vendor/libressl/tests/renegotiation_test.sh +0 -30
  270. data/vendor/libressl/tests/rfc5280time_small.test +0 -10
  271. data/vendor/libressl/tests/servertest.bat +0 -27
  272. data/vendor/libressl/tests/servertest.sh +0 -30
  273. data/vendor/libressl/tests/shutdowntest.bat +0 -27
  274. data/vendor/libressl/tests/shutdowntest.sh +0 -30
  275. data/vendor/libressl/tests/ssltest.bat +0 -32
  276. data/vendor/libressl/tests/ssltest.sh +0 -48
  277. data/vendor/libressl/tests/testdsa.bat +0 -47
  278. data/vendor/libressl/tests/testdsa.sh +0 -57
  279. data/vendor/libressl/tests/testenc.bat +0 -85
  280. data/vendor/libressl/tests/testenc.sh +0 -93
  281. data/vendor/libressl/tests/testrsa.bat +0 -47
  282. data/vendor/libressl/tests/testrsa.sh +0 -57
  283. data/vendor/libressl/tests/testssl.bat +0 -171
  284. data/vendor/libressl/tests/tlstest.bat +0 -27
  285. data/vendor/libressl/tests/tlstest.sh +0 -28
  286. data/vendor/libressl/tls/CMakeLists.txt +0 -125
  287. data/vendor/libressl/tls/Makefile.am +0 -76
  288. data/vendor/libressl/tls/compat/ftruncate.c +0 -17
  289. data/vendor/libressl/tls/compat/pread.c +0 -29
  290. data/vendor/libressl/tls/compat/pwrite.c +0 -29
  291. data/vendor/libressl/update.sh +0 -460
metadata CHANGED
@@ -1,90 +1,47 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uringmachine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.1
4
+ version: 0.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: rake-compiler
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - "~>"
17
- - !ruby/object:Gem::Version
18
- version: 1.3.0
19
- type: :development
20
- prerelease: false
21
- version_requirements: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - "~>"
24
- - !ruby/object:Gem::Version
25
- version: 1.3.0
26
- - !ruby/object:Gem::Dependency
27
- name: minitest
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: 5.26.2
33
- type: :development
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: 5.26.2
40
- - !ruby/object:Gem::Dependency
41
- name: benchmark
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- type: :development
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- - !ruby/object:Gem::Dependency
55
- name: benchmark-ips
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- type: :development
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
- - !ruby/object:Gem::Dependency
69
- name: http_parser.rb
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: 0.8.0
75
- type: :development
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: 0.8.0
11
+ dependencies: []
82
12
  email: sharon@noteflakes.com
83
13
  executables: []
84
14
  extensions:
85
15
  - ext/um/extconf.rb
86
16
  extra_rdoc_files:
17
+ - CHANGELOG.md
87
18
  - README.md
19
+ - TODO.md
20
+ - benchmark/README.md
21
+ - benchmark/chart_all.png
22
+ - benchmark/chart_bm_io_pipe_x.png
23
+ - ext/um/um.c
24
+ - ext/um/um.h
25
+ - ext/um/um_async_op.c
26
+ - ext/um/um_async_op_class.c
27
+ - ext/um/um_buffer.c
28
+ - ext/um/um_class.c
29
+ - ext/um/um_const.c
30
+ - ext/um/um_ext.c
31
+ - ext/um/um_mutex_class.c
32
+ - ext/um/um_op.c
33
+ - ext/um/um_queue_class.c
34
+ - ext/um/um_sidecar.c
35
+ - ext/um/um_ssl.c
36
+ - ext/um/um_stream.c
37
+ - ext/um/um_stream_class.c
38
+ - ext/um/um_sync.c
39
+ - ext/um/um_utils.c
40
+ - lib/uringmachine.rb
41
+ - lib/uringmachine/actor.rb
42
+ - lib/uringmachine/dns_resolver.rb
43
+ - lib/uringmachine/fiber_scheduler.rb
44
+ - lib/uringmachine/version.rb
88
45
  files:
89
46
  - ".github/FUNDING.yml"
90
47
  - ".github/dependabot.yml"
@@ -106,19 +63,31 @@ files:
106
63
  - benchmark/bm_pg_client.rb
107
64
  - benchmark/bm_queue.rb
108
65
  - benchmark/chart_all.png
66
+ - benchmark/chart_bm_io_pipe_x.png
109
67
  - benchmark/common.rb
110
68
  - benchmark/dns_client.rb
111
69
  - benchmark/http_parse.rb
70
+ - benchmark/http_server_accept_queue.rb
71
+ - benchmark/http_server_multi_accept.rb
72
+ - benchmark/http_server_multi_ractor.rb
73
+ - benchmark/http_server_single_thread.rb
74
+ - benchmark/ips_io_pipe.rb
112
75
  - benchmark/mutex.rb
113
76
  - benchmark/mutex_single.rb
77
+ - benchmark/openssl.rb
78
+ - benchmark/openssl_socketpair.rb
114
79
  - benchmark/read_each.rb
115
80
  - benchmark/run_bm.rb
116
81
  - benchmark/send.rb
117
82
  - benchmark/snooze.rb
118
83
  - benchmark/sqlite.rb
119
84
  - benchmark/write.rb
85
+ - docs/design/buffer_pool.md
86
+ - docs/um_api.md
120
87
  - examples/echo_server.rb
121
88
  - examples/fiber_scheduler_demo.rb
89
+ - examples/fiber_scheduler_file_io.rb
90
+ - examples/fiber_scheduler_file_io_async.rb
122
91
  - examples/fiber_scheduler_fork.rb
123
92
  - examples/http_server.rb
124
93
  - examples/inout.rb
@@ -141,10 +110,13 @@ files:
141
110
  - ext/um/um_mutex_class.c
142
111
  - ext/um/um_op.c
143
112
  - ext/um/um_queue_class.c
113
+ - ext/um/um_sidecar.c
114
+ - ext/um/um_ssl.c
144
115
  - ext/um/um_stream.c
145
116
  - ext/um/um_stream_class.c
146
117
  - ext/um/um_sync.c
147
118
  - ext/um/um_utils.c
119
+ - grant-2025/interim-report.md
148
120
  - grant-2025/journal.md
149
121
  - grant-2025/tasks.md
150
122
  - lib/uringmachine.rb
@@ -159,220 +131,10 @@ files:
159
131
  - test/test_async_op.rb
160
132
  - test/test_fiber.rb
161
133
  - test/test_fiber_scheduler.rb
134
+ - test/test_ssl.rb
162
135
  - test/test_stream.rb
163
136
  - test/test_um.rb
164
137
  - uringmachine.gemspec
165
- - vendor/libressl/.github/scripts/changelog.sh
166
- - vendor/libressl/.github/workflows/android.yml
167
- - vendor/libressl/.github/workflows/cifuzz.yml
168
- - vendor/libressl/.github/workflows/cmake-config.yml
169
- - vendor/libressl/.github/workflows/coverity.yml
170
- - vendor/libressl/.github/workflows/emscripten.yml
171
- - vendor/libressl/.github/workflows/fedora-rawhide.yml
172
- - vendor/libressl/.github/workflows/freebsd.yml
173
- - vendor/libressl/.github/workflows/linux.yml
174
- - vendor/libressl/.github/workflows/macos.yml
175
- - vendor/libressl/.github/workflows/release.yml
176
- - vendor/libressl/.github/workflows/rust-openssl.yml
177
- - vendor/libressl/.github/workflows/solaris.yml
178
- - vendor/libressl/.github/workflows/windows.yml
179
- - vendor/libressl/.gitignore
180
- - vendor/libressl/CMakeLists.txt
181
- - vendor/libressl/COPYING
182
- - vendor/libressl/ChangeLog
183
- - vendor/libressl/FindLibreSSL.cmake
184
- - vendor/libressl/LibreSSLConfig.cmake.in
185
- - vendor/libressl/Makefile.am
186
- - vendor/libressl/Makefile.am.common
187
- - vendor/libressl/OPENBSD_BRANCH
188
- - vendor/libressl/README.md
189
- - vendor/libressl/README.mingw.md
190
- - vendor/libressl/apps/CMakeLists.txt
191
- - vendor/libressl/apps/Makefile.am
192
- - vendor/libressl/apps/nc/CMakeLists.txt
193
- - vendor/libressl/apps/nc/Makefile.am
194
- - vendor/libressl/apps/nc/compat/accept4.c
195
- - vendor/libressl/apps/nc/compat/readpassphrase.c
196
- - vendor/libressl/apps/nc/compat/socket.c
197
- - vendor/libressl/apps/nc/compat/sys/socket.h
198
- - vendor/libressl/apps/ocspcheck/CMakeLists.txt
199
- - vendor/libressl/apps/ocspcheck/Makefile.am
200
- - vendor/libressl/apps/ocspcheck/compat/.gitignore
201
- - vendor/libressl/apps/openssl/CMakeLists.txt
202
- - vendor/libressl/apps/openssl/Makefile.am
203
- - vendor/libressl/apps/openssl/apps_win.c
204
- - vendor/libressl/apps/openssl/certhash_win.c
205
- - vendor/libressl/apps/openssl/compat/clock_gettime_osx.c
206
- - vendor/libressl/apps/openssl/compat/poll_win.c
207
- - vendor/libressl/appveyor.yml
208
- - vendor/libressl/autogen.sh
209
- - vendor/libressl/check-release.sh
210
- - vendor/libressl/cmake_export_symbol.cmake
211
- - vendor/libressl/cmake_uninstall.cmake.in
212
- - vendor/libressl/config
213
- - vendor/libressl/configure.ac
214
- - vendor/libressl/crypto/CMakeLists.txt
215
- - vendor/libressl/crypto/Makefile.am
216
- - vendor/libressl/crypto/Makefile.am.arc4random
217
- - vendor/libressl/crypto/Makefile.am.elf-mips
218
- - vendor/libressl/crypto/Makefile.am.elf-mips64
219
- - vendor/libressl/crypto/Makefile.am.elf-x86_64
220
- - vendor/libressl/crypto/Makefile.am.macosx-x86_64
221
- - vendor/libressl/crypto/Makefile.am.masm-x86_64
222
- - vendor/libressl/crypto/Makefile.am.mingw64-x86_64
223
- - vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_darwin.c
224
- - vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_linux.c
225
- - vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_none.c
226
- - vendor/libressl/crypto/arch/aarch64/crypto_cpu_caps_windows.c
227
- - vendor/libressl/crypto/arch/loongarch64/crypto_arch.h
228
- - vendor/libressl/crypto/arch/mips/crypto_arch.h
229
- - vendor/libressl/crypto/bn/arch/loongarch64/bn_arch.h
230
- - vendor/libressl/crypto/bn/arch/mips/bn_arch.h
231
- - vendor/libressl/crypto/compat/.gitignore
232
- - vendor/libressl/crypto/compat/arc4random.h
233
- - vendor/libressl/crypto/compat/b_win.c
234
- - vendor/libressl/crypto/compat/bsd-asprintf.c
235
- - vendor/libressl/crypto/compat/crypto_lock_win.c
236
- - vendor/libressl/crypto/compat/explicit_bzero_win.c
237
- - vendor/libressl/crypto/compat/freezero.c
238
- - vendor/libressl/crypto/compat/getdelim.c
239
- - vendor/libressl/crypto/compat/getline.c
240
- - vendor/libressl/crypto/compat/getopt_long.c
241
- - vendor/libressl/crypto/compat/getpagesize.c
242
- - vendor/libressl/crypto/compat/getprogname_linux.c
243
- - vendor/libressl/crypto/compat/getprogname_unimpl.c
244
- - vendor/libressl/crypto/compat/getprogname_windows.c
245
- - vendor/libressl/crypto/compat/posix_win.c
246
- - vendor/libressl/crypto/compat/syslog_r.c
247
- - vendor/libressl/crypto/compat/ui_openssl_win.c
248
- - vendor/libressl/dist.sh
249
- - vendor/libressl/gen-coverage-report.sh
250
- - vendor/libressl/gen-openbsd-tags.sh
251
- - vendor/libressl/include/CMakeLists.txt
252
- - vendor/libressl/include/Makefile.am
253
- - vendor/libressl/include/arch/loongarch64/opensslconf.h
254
- - vendor/libressl/include/arch/mips/opensslconf.h
255
- - vendor/libressl/include/compat/arpa/inet.h
256
- - vendor/libressl/include/compat/arpa/nameser.h
257
- - vendor/libressl/include/compat/cet.h
258
- - vendor/libressl/include/compat/dirent.h
259
- - vendor/libressl/include/compat/dirent_msvc.h
260
- - vendor/libressl/include/compat/endian.h
261
- - vendor/libressl/include/compat/err.h
262
- - vendor/libressl/include/compat/fcntl.h
263
- - vendor/libressl/include/compat/getopt.h
264
- - vendor/libressl/include/compat/limits.h
265
- - vendor/libressl/include/compat/netdb.h
266
- - vendor/libressl/include/compat/netinet/in.h
267
- - vendor/libressl/include/compat/netinet/ip.h
268
- - vendor/libressl/include/compat/netinet/tcp.h
269
- - vendor/libressl/include/compat/poll.h
270
- - vendor/libressl/include/compat/pthread.h
271
- - vendor/libressl/include/compat/readpassphrase.h
272
- - vendor/libressl/include/compat/resolv.h
273
- - vendor/libressl/include/compat/stdint.h
274
- - vendor/libressl/include/compat/stdio.h
275
- - vendor/libressl/include/compat/stdlib.h
276
- - vendor/libressl/include/compat/string.h
277
- - vendor/libressl/include/compat/sys/_null.h
278
- - vendor/libressl/include/compat/sys/ioctl.h
279
- - vendor/libressl/include/compat/sys/mman.h
280
- - vendor/libressl/include/compat/sys/param.h
281
- - vendor/libressl/include/compat/sys/queue.h
282
- - vendor/libressl/include/compat/sys/select.h
283
- - vendor/libressl/include/compat/sys/socket.h
284
- - vendor/libressl/include/compat/sys/stat.h
285
- - vendor/libressl/include/compat/sys/time.h
286
- - vendor/libressl/include/compat/sys/tree.h
287
- - vendor/libressl/include/compat/sys/types.h
288
- - vendor/libressl/include/compat/sys/uio.h
289
- - vendor/libressl/include/compat/syslog.h
290
- - vendor/libressl/include/compat/time.h
291
- - vendor/libressl/include/compat/unistd.h
292
- - vendor/libressl/include/compat/win32netcompat.h
293
- - vendor/libressl/include/openssl/Makefile.am.tpl
294
- - vendor/libressl/libcrypto.pc.in
295
- - vendor/libressl/libressl.pub
296
- - vendor/libressl/libssl.pc.in
297
- - vendor/libressl/libtls.pc.in
298
- - vendor/libressl/m4/ax_add_fortify_source.m4
299
- - vendor/libressl/m4/ax_check_compile_flag.m4
300
- - vendor/libressl/m4/check-hardening-options.m4
301
- - vendor/libressl/m4/check-libc.m4
302
- - vendor/libressl/m4/check-os-options.m4
303
- - vendor/libressl/m4/disable-compiler-warnings.m4
304
- - vendor/libressl/man/CMakeLists.txt
305
- - vendor/libressl/man/links
306
- - vendor/libressl/man/update_links.sh
307
- - vendor/libressl/openssl.pc.in
308
- - vendor/libressl/patches/bn_shift.patch
309
- - vendor/libressl/patches/crypto_arch.h.patch
310
- - vendor/libressl/patches/crypto_namespace.h.patch
311
- - vendor/libressl/patches/netcat.c.patch
312
- - vendor/libressl/patches/openssl.c.patch
313
- - vendor/libressl/patches/opensslfeatures.h.patch
314
- - vendor/libressl/patches/patch-amd64-crypto-cpu-caps.c.patch
315
- - vendor/libressl/patches/patch-i386-crypto-cpu-caps.c.patch
316
- - vendor/libressl/patches/speed.c.patch
317
- - vendor/libressl/patches/ssl_namespace.h.patch
318
- - vendor/libressl/patches/tls.h.patch
319
- - vendor/libressl/patches/tls_config.c.patch
320
- - vendor/libressl/patches/win32_amd64_bn_arch.h.patch
321
- - vendor/libressl/patches/windows_headers.patch
322
- - vendor/libressl/scripts/config.guess
323
- - vendor/libressl/scripts/config.sub
324
- - vendor/libressl/scripts/i686-w64-mingw32.cmake
325
- - vendor/libressl/scripts/test
326
- - vendor/libressl/scripts/wrap-compiler-for-flag-check
327
- - vendor/libressl/scripts/x86_64-w64-mingw32.cmake
328
- - vendor/libressl/ssl/CMakeLists.txt
329
- - vendor/libressl/ssl/Makefile.am
330
- - vendor/libressl/tests/CMakeLists.txt
331
- - vendor/libressl/tests/Makefile.am
332
- - vendor/libressl/tests/aeadtest.sh
333
- - vendor/libressl/tests/arc4randomforktest.sh
334
- - vendor/libressl/tests/asn1time_small.test
335
- - vendor/libressl/tests/cmake/CMakeLists.txt
336
- - vendor/libressl/tests/cmake/crypto.c
337
- - vendor/libressl/tests/cmake/ssl.c
338
- - vendor/libressl/tests/cmake/tls.c
339
- - vendor/libressl/tests/compat/pipe2.c
340
- - vendor/libressl/tests/dtlstest.sh
341
- - vendor/libressl/tests/evptest.sh
342
- - vendor/libressl/tests/keypairtest.sh
343
- - vendor/libressl/tests/mlkem_tests.sh
344
- - vendor/libressl/tests/ocsptest.bat
345
- - vendor/libressl/tests/ocsptest.sh
346
- - vendor/libressl/tests/openssl.cnf
347
- - vendor/libressl/tests/optionstest.c
348
- - vendor/libressl/tests/pidwraptest.c
349
- - vendor/libressl/tests/pidwraptest.sh
350
- - vendor/libressl/tests/quictest.bat
351
- - vendor/libressl/tests/quictest.sh
352
- - vendor/libressl/tests/renegotiation_test.bat
353
- - vendor/libressl/tests/renegotiation_test.sh
354
- - vendor/libressl/tests/rfc5280time_small.test
355
- - vendor/libressl/tests/servertest.bat
356
- - vendor/libressl/tests/servertest.sh
357
- - vendor/libressl/tests/shutdowntest.bat
358
- - vendor/libressl/tests/shutdowntest.sh
359
- - vendor/libressl/tests/ssltest.bat
360
- - vendor/libressl/tests/ssltest.sh
361
- - vendor/libressl/tests/testdsa.bat
362
- - vendor/libressl/tests/testdsa.sh
363
- - vendor/libressl/tests/testenc.bat
364
- - vendor/libressl/tests/testenc.sh
365
- - vendor/libressl/tests/testrsa.bat
366
- - vendor/libressl/tests/testrsa.sh
367
- - vendor/libressl/tests/testssl.bat
368
- - vendor/libressl/tests/tlstest.bat
369
- - vendor/libressl/tests/tlstest.sh
370
- - vendor/libressl/tls/CMakeLists.txt
371
- - vendor/libressl/tls/Makefile.am
372
- - vendor/libressl/tls/compat/ftruncate.c
373
- - vendor/libressl/tls/compat/pread.c
374
- - vendor/libressl/tls/compat/pwrite.c
375
- - vendor/libressl/update.sh
376
138
  - vendor/liburing/.github/actions/codespell/stopwords
377
139
  - vendor/liburing/.github/pull_request_template.md
378
140
  - vendor/liburing/.github/workflows/ci.yml
@@ -541,6 +303,7 @@ files:
541
303
  - vendor/liburing/test/ignore-single-mmap.c
542
304
  - vendor/liburing/test/init-mem.c
543
305
  - vendor/liburing/test/io-cancel.c
306
+ - vendor/liburing/test/io-wq-exit.c
544
307
  - vendor/liburing/test/io_uring_enter.c
545
308
  - vendor/liburing/test/io_uring_passthrough.c
546
309
  - vendor/liburing/test/io_uring_register.c
@@ -596,6 +359,7 @@ files:
596
359
  - vendor/liburing/test/poll-race-mshot.c
597
360
  - vendor/liburing/test/poll-race.c
598
361
  - vendor/liburing/test/poll-ring.c
362
+ - vendor/liburing/test/poll-update-trigger.c
599
363
  - vendor/liburing/test/poll-v-poll.c
600
364
  - vendor/liburing/test/poll.c
601
365
  - vendor/liburing/test/pollfree.c
@@ -639,6 +403,7 @@ files:
639
403
  - vendor/liburing/test/send_recv.c
640
404
  - vendor/liburing/test/send_recvmsg.c
641
405
  - vendor/liburing/test/sendmsg_iov_clean.c
406
+ - vendor/liburing/test/sendzc-bug.c
642
407
  - vendor/liburing/test/shared-wq.c
643
408
  - vendor/liburing/test/short-read.c
644
409
  - vendor/liburing/test/shutdown.c
@@ -680,6 +445,7 @@ files:
680
445
  - vendor/liburing/test/timeout-new.c
681
446
  - vendor/liburing/test/timeout.c
682
447
  - vendor/liburing/test/timerfd-short-read.c
448
+ - vendor/liburing/test/timestamp-bug.c
683
449
  - vendor/liburing/test/timestamp.c
684
450
  - vendor/liburing/test/truncate.c
685
451
  - vendor/liburing/test/tty-write-dpoll.c
@@ -720,7 +486,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
720
486
  - !ruby/object:Gem::Version
721
487
  version: '0'
722
488
  requirements: []
723
- rubygems_version: 4.0.1
489
+ rubygems_version: 4.0.3
724
490
  specification_version: 4
725
491
  summary: A lean, mean io_uring machine
726
492
  test_files: []
@@ -1,74 +0,0 @@
1
- #!/bin/sh
2
- # Copyright (c) 2023 Joshua Sing <joshua@hypera.dev>
3
- #
4
- # Permission to use, copy, modify, and distribute this software for any
5
- # purpose with or without fee is hereby granted, provided that the above
6
- # copyright notice and this permission notice appear in all copies.
7
- #
8
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
-
16
- #
17
- # Usage: changelog.sh <version>
18
- # Reads the changelog for the specified version from the changelog file.
19
- # The output will be reformatted for use in GitHub releases.
20
- #
21
- # The changelog file defaults to "ChangeLog", but can be changed by setting
22
- # the environment variable $CHANGELOG_FILE
23
- #
24
-
25
- set -e
26
-
27
- # Check if the version argument is provided
28
- if [ "$#" -ne 1 ]; then
29
- echo "Usage: $0 <version>" 1>&2
30
- exit 1
31
- fi
32
-
33
- version="${1#v}"
34
- changelog_file="${CHANGELOG_FILE:-ChangeLog}"
35
- found_version=false
36
- changelog=""
37
-
38
- # Check if the specified changelog file exists
39
- if [ ! -f "$changelog_file" ]; then
40
- echo "Error: Changelog file '$changelog_file' not found" 1>&2
41
- exit 1
42
- fi
43
-
44
- # Read the changelog file line by line
45
- while IFS= read -r line; do
46
- # Check for the version line
47
- if echo "$line" | grep -Eq "^${version} - "; then
48
- found_version=true
49
- continue
50
- fi
51
-
52
- # Continue reading the changelog until the next version or end of file,
53
- # skipping empty lines
54
- if $found_version; then
55
- echo "$line" | grep -Eq "^\s*$" && continue
56
- echo "$line" | grep -Eq "^[0-9]+\.[0-9]+\.[0-9]+ - " && break
57
- changelog="${changelog}${line}\n"
58
- fi
59
- done < "$changelog_file"
60
-
61
- # If the specified version was not found, print an error
62
- if ! $found_version; then
63
- echo "Error: Version $version was not found in changelog" 1>&2
64
- exit 1
65
- fi
66
-
67
- # Tidy up the changelog for displaying on GitHub
68
- changelog=$(echo "$changelog" | sed -e 's/^\t\*/###/' -e 's/^\t//')
69
-
70
- # Print the changelog for the specified version
71
- echo "$changelog"
72
- echo
73
- echo "Full changelog: https://github.com/libressl/portable/blob/master/ChangeLog"
74
- exit 0
@@ -1,35 +0,0 @@
1
- # GitHub Actions workflow to run tests on Android.
2
- name: "Android"
3
-
4
- on: [push, pull_request]
5
-
6
- concurrency:
7
- group: "${{ github.workflow }}-${{ github.event.number || github.ref }}"
8
- cancel-in-progress: true
9
-
10
- jobs:
11
- test:
12
- name: "Test ${{ matrix.name }}"
13
- runs-on: ubuntu-24.04
14
- permissions:
15
- contents: read
16
- strategy:
17
- fail-fast: false
18
- matrix:
19
- include:
20
- - name: "Android 8-9"
21
- min-nal: 26
22
- max-nal: 28
23
- - name: "Android 10-11"
24
- min-nal: 29
25
- max-nal: 30
26
- steps:
27
- - name: "Checkout repository"
28
- uses: actions/checkout@v4
29
-
30
- - name: "Run CI script"
31
- run: ./scripts/test
32
- env:
33
- ARCH: "android"
34
- MIN_NAL: "${{ matrix.min-nal }}"
35
- MAX_NAL: "${{ matrix.max-nal }}"
@@ -1,33 +0,0 @@
1
- name: CIFuzz
2
-
3
- on:
4
- workflow_dispatch:
5
-
6
- concurrency:
7
- group: "${{ github.workflow }}-${{ github.event.number || github.ref }}"
8
- cancel-in-progress: true
9
-
10
- jobs:
11
- Fuzzing:
12
- runs-on: ubuntu-24.04
13
- steps:
14
- - name: Build Fuzzers
15
- id: build
16
- uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
17
- with:
18
- oss-fuzz-project-name: 'libressl'
19
- dry-run: false
20
- language: c++
21
- - name: Run Fuzzers
22
- uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
23
- with:
24
- oss-fuzz-project-name: 'libressl'
25
- fuzz-seconds: 300
26
- dry-run: false
27
- language: c++
28
- - name: Upload Crash
29
- uses: actions/upload-artifact@v4
30
- if: failure() && steps.build.outcome == 'success'
31
- with:
32
- name: artifacts
33
- path: ./out/artifacts
@@ -1,98 +0,0 @@
1
- # GitHub Actions workflow to check CMake config.
2
- name: "CMake Check"
3
-
4
- on:
5
- push: {}
6
- pull_request: {}
7
-
8
- concurrency:
9
- group: "${{ github.workflow }}-${{ github.event.number || github.ref }}"
10
- cancel-in-progress: true
11
-
12
- jobs:
13
- check:
14
- name: "${{ matrix.os }}"
15
- runs-on: "${{ matrix.os }}"
16
- strategy:
17
- fail-fast: true
18
- matrix:
19
- os: [ "windows-2022", "macos-14", "ubuntu-24.04" ]
20
- defaults:
21
- run:
22
- shell: "bash"
23
- permissions:
24
- contents: read
25
- steps:
26
- - name: "Checkout repository"
27
- uses: actions/checkout@v4
28
-
29
- - name: "Setup Windows dependencies"
30
- if: runner.os == 'Windows'
31
- uses: msys2/setup-msys2@v2
32
- with:
33
- update: true
34
- install: >-
35
- autoconf
36
- automake
37
- diffutils
38
- libtool
39
- gcc
40
- git
41
- patch
42
- perl
43
-
44
- - name: "Setup macOS dependencies"
45
- if: runner.os == 'macOS'
46
- run: brew install automake libtool
47
-
48
- - name: "Prepare source tree for build (Windows)"
49
- if: runner.os == 'Windows'
50
- shell: "msys2 {0}"
51
- run: ./autogen.sh
52
-
53
- - name: "Prepare source tree for build (Unix)"
54
- if: runner.os != 'Windows'
55
- run: ./autogen.sh
56
-
57
- - name: "Configure"
58
- run: |
59
- cmake -S . \
60
- -B build \
61
- -D CMAKE_BUILD_TYPE=Release \
62
- -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/../local
63
-
64
- - name: "Build"
65
- run: cmake --build build --config Release --verbose
66
-
67
- - name: "Install"
68
- run: cmake --install build --config Release
69
-
70
- - name: "Consume from the build directory - Configure"
71
- run: |
72
- cmake -S tests/cmake \
73
- -B consumer-build \
74
- -D CMAKE_BUILD_TYPE=Release \
75
- -D LibreSSL_DIR=$GITHUB_WORKSPACE/build
76
-
77
- - name: "Consume from the build directory - Build"
78
- run: cmake --build consumer-build --config Release --verbose
79
-
80
- - name: "Consume from the install directory (CMAKE_PREFIX_PATH) - Configure"
81
- run: |
82
- cmake -S tests/cmake \
83
- -B consumer-install-prefix \
84
- -D CMAKE_BUILD_TYPE=Release \
85
- -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/../local
86
-
87
- - name: "Consume from the install directory (CMAKE_PREFIX_PATH) - Build"
88
- run: cmake --build consumer-install-prefix --config Release --verbose
89
-
90
- - name: "Consume from the install directory (LibreSSL_DIR) - Configure"
91
- run: |
92
- cmake -S tests/cmake \
93
- -B consumer-install-dir \
94
- -D CMAKE_BUILD_TYPE=Release \
95
- -D LibreSSL_DIR=$GITHUB_WORKSPACE/../local/lib/cmake/LibreSSL
96
-
97
- - name: "Consume from the install directory (LibreSSL_DIR) - Build"
98
- run: cmake --build consumer-install-dir --config Release --verbose