itsi 0.1.18 → 0.1.20

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 (394) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -0
  3. data/Cargo.lock +924 -385
  4. data/README.md +67 -55
  5. data/crates/itsi_server/Cargo.toml +7 -4
  6. data/crates/itsi_server/src/ruby_types/itsi_http_request.rs +2 -2
  7. data/crates/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +150 -19
  8. data/crates/itsi_server/src/ruby_types/itsi_server.rs +1 -0
  9. data/crates/itsi_server/src/server/binds/listener.rs +34 -29
  10. data/crates/itsi_server/src/server/binds/tls/locked_dir_cache.rs +2 -2
  11. data/crates/itsi_server/src/server/binds/tls.rs +1 -1
  12. data/crates/itsi_server/src/server/middleware_stack/middleware.rs +33 -28
  13. data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +56 -3
  14. data/crates/itsi_server/src/server/middleware_stack/middlewares/csp.rs +179 -0
  15. data/crates/itsi_server/src/server/middleware_stack/middlewares/mod.rs +25 -2
  16. data/crates/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +3 -3
  17. data/crates/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +2 -1
  18. data/crates/itsi_server/src/server/middleware_stack/mod.rs +32 -34
  19. data/crates/itsi_server/src/server/serve_strategy/cluster_mode.rs +10 -4
  20. data/crates/itsi_server/src/server/serve_strategy/single_mode.rs +30 -7
  21. data/crates/itsi_server/src/server/thread_worker.rs +2 -2
  22. data/crates/itsi_server/src/services/static_file_server.rs +30 -28
  23. data/crates/itsi_tracing/src/lib.rs +39 -8
  24. data/docker/Dockerfile +12 -0
  25. data/docs/content/_index.md +18 -10
  26. data/docs/content/acknowledgements/_index.md +43 -0
  27. data/docs/content/configuration/_index.md +98 -0
  28. data/docs/content/contact/_index.md +7 -0
  29. data/docs/content/faqs/_index.md +27 -0
  30. data/docs/content/features/_index.md +285 -0
  31. data/docs/content/getting_started/_index.md +70 -0
  32. data/docs/content/getting_started/local_development.md +40 -0
  33. data/docs/content/getting_started/logging.md +16 -0
  34. data/docs/content/getting_started/running_itsi_in_production.md +24 -0
  35. data/docs/content/itsi-server-100.png +0 -0
  36. data/docs/content/itsi_scheduler/_index.md +105 -0
  37. data/docs/content/itsi_scheduler/itsi-scheduler-100.png +0 -0
  38. data/docs/content/ruby-lsp.png +0 -0
  39. data/docs/content/ruby.svg +948 -0
  40. data/docs/data/icons.yaml +949 -0
  41. data/docs/hugo.yaml +27 -28
  42. data/fairytale.txt +34 -0
  43. data/gems/scheduler/Cargo.lock +46 -46
  44. data/gems/scheduler/README.md +53 -24
  45. data/gems/scheduler/itsi-scheduler-100.png +0 -0
  46. data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
  47. data/gems/server/Cargo.lock +932 -382
  48. data/gems/server/README.md +2 -0
  49. data/gems/server/exe/itsi +5 -5
  50. data/gems/server/lib/itsi/http_request.rb +1 -0
  51. data/gems/server/lib/itsi/server/config/config_helpers.rb +93 -0
  52. data/gems/server/lib/itsi/server/config/dsl.rb +98 -37
  53. data/gems/server/lib/itsi/server/config/known_paths/KitchensinkDirectories.txt +2346 -0
  54. data/gems/server/lib/itsi/server/config/known_paths/Randomfiles.txt +24 -0
  55. data/gems/server/lib/itsi/server/config/known_paths/UnixDotfiles.txt +52 -0
  56. data/gems/server/lib/itsi/server/config/known_paths/backdoors/ASP_CommonBackdoors.txt +29 -0
  57. data/gems/server/lib/itsi/server/config/known_paths/backdoors/bot_control_panels.txt +1668 -0
  58. data/gems/server/lib/itsi/server/config/known_paths/backdoors/shells.txt +1167 -0
  59. data/gems/server/lib/itsi/server/config/known_paths/cgi/CGI_HTTP_POST.txt +7 -0
  60. data/gems/server/lib/itsi/server/config/known_paths/cgi/CGI_HTTP_POST_Windows.txt +6 -0
  61. data/gems/server/lib/itsi/server/config/known_paths/cgi/CGI_Microsoft.txt +79 -0
  62. data/gems/server/lib/itsi/server/config/known_paths/cgi/CGI_XPlatform.txt +3948 -0
  63. data/gems/server/lib/itsi/server/config/known_paths/cms/README.md +5 -0
  64. data/gems/server/lib/itsi/server/config/known_paths/cms/drupal_plugins.txt +6320 -0
  65. data/gems/server/lib/itsi/server/config/known_paths/cms/drupal_themes.txt +828 -0
  66. data/gems/server/lib/itsi/server/config/known_paths/cms/joomla_plugins.txt +224 -0
  67. data/gems/server/lib/itsi/server/config/known_paths/cms/joomla_themes.txt +30 -0
  68. data/gems/server/lib/itsi/server/config/known_paths/cms/php-nuke.txt +2142 -0
  69. data/gems/server/lib/itsi/server/config/known_paths/cms/wordpress.txt +1566 -0
  70. data/gems/server/lib/itsi/server/config/known_paths/cms/wp_common_theme_files.txt +46 -0
  71. data/gems/server/lib/itsi/server/config/known_paths/cms/wp_plugins.txt +13366 -0
  72. data/gems/server/lib/itsi/server/config/known_paths/cms/wp_plugins_full.txt +68662 -0
  73. data/gems/server/lib/itsi/server/config/known_paths/cms/wp_plugins_top225.txt +225 -0
  74. data/gems/server/lib/itsi/server/config/known_paths/cms/wp_themes.readme +12 -0
  75. data/gems/server/lib/itsi/server/config/known_paths/cms/wp_themes.txt +7336 -0
  76. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/3CharExtBrute.txt +17576 -0
  77. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/CommonWebExtensions.txt +80 -0
  78. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Backup.txt +14 -0
  79. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Common.txt +865 -0
  80. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Compressed.txt +186 -0
  81. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Mostcommon.txt +30 -0
  82. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Skipfish.txt +93 -0
  83. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/WordlistSkipfish.txt +1918 -0
  84. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/copy_of.txt +8 -0
  85. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-directories-lowercase.txt +56180 -0
  86. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-directories.txt +62290 -0
  87. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-extensions-lowercase.txt +2367 -0
  88. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-extensions.txt +2450 -0
  89. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-files-lowercase.txt +35323 -0
  90. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-files.txt +37037 -0
  91. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-words-lowercase.txt +107982 -0
  92. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-words.txt +119600 -0
  93. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-directories-lowercase.txt +26593 -0
  94. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-directories.txt +30009 -0
  95. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-extensions-lowercase.txt +1233 -0
  96. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-extensions.txt +1289 -0
  97. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-files-lowercase.txt +16243 -0
  98. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-files.txt +17128 -0
  99. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-words-lowercase.txt +56293 -0
  100. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-words.txt +63087 -0
  101. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-directories-lowercase.txt +17776 -0
  102. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-directories.txt +20122 -0
  103. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-extensions-lowercase.txt +914 -0
  104. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-extensions.txt +963 -0
  105. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-files-lowercase.txt +10848 -0
  106. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-files.txt +11424 -0
  107. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-words-lowercase.txt +38267 -0
  108. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-words.txt +43003 -0
  109. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/spanish.txt +445 -0
  110. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/test_demo.txt +36 -0
  111. data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/upload_variants.txt +44 -0
  112. data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/Logins.txt +71 -0
  113. data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/cfm.txt +294 -0
  114. data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/html.txt +295 -0
  115. data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/jsp.txt +294 -0
  116. data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/php.txt +294 -0
  117. data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/windows-asp.txt +294 -0
  118. data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/windows-aspx.txt +294 -0
  119. data/gems/server/lib/itsi/server/config/known_paths/password-file-locations/Passwords.txt +47 -0
  120. data/gems/server/lib/itsi/server/config/known_paths/php/PHP.txt +30 -0
  121. data/gems/server/lib/itsi/server/config/known_paths/php/PHP_CommonBackdoors.txt +5 -0
  122. data/gems/server/lib/itsi/server/config/known_paths/proxy-conf.txt +31 -0
  123. data/gems/server/lib/itsi/server/config/known_paths/tftp.txt +79 -0
  124. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/ADFS.txt +86 -0
  125. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/AdobeXML.txt +16 -0
  126. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Apache.txt +101 -0
  127. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/ApacheTomcat.txt +47 -0
  128. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Apache_Axis.txt +16 -0
  129. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/ColdFusion.txt +111 -0
  130. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/FatwireCMS.txt +390 -0
  131. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Frontpage.txt +38 -0
  132. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/HP_System_Mgmt_Homepage.txt +239 -0
  133. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/HTTP_POST_Microsoft.txt +2 -0
  134. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Hyperion.txt +578 -0
  135. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/IIS.txt +187 -0
  136. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/JBoss.txt +5 -0
  137. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/JRun.txt +13 -0
  138. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/JavaServlets_Common.txt +3 -0
  139. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Joomla_exploitable.txt +1937 -0
  140. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/LotusNotes.txt +206 -0
  141. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Netware.txt +18 -0
  142. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Oracle9i.txt +60 -0
  143. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/OracleAppServer.txt +192 -0
  144. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/README.md +6 -0
  145. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Ruby_Rails.txt +121 -0
  146. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/SAP.txt +463 -0
  147. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Sharepoint.txt +1707 -0
  148. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/SiteMinder.txt +19 -0
  149. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/SunAppServerGlassfish.txt +51 -0
  150. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/SuniPlanet.txt +35 -0
  151. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Vignette.txt +73 -0
  152. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Weblogic.txt +160 -0
  153. data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Websphere.txt +366 -0
  154. data/gems/server/lib/itsi/server/config/known_paths/wellknown-rfc5785.txt +30 -0
  155. data/gems/server/lib/itsi/server/config/known_paths.rb +17 -0
  156. data/gems/server/lib/itsi/server/config/middleware/_index.md +54 -0
  157. data/gems/server/lib/itsi/server/config/middleware/log_requests.md +63 -0
  158. data/gems/server/lib/itsi/server/config/middleware/log_requests.rb +33 -0
  159. data/gems/server/lib/itsi/server/config/middleware.rb +9 -0
  160. data/gems/server/lib/itsi/server/config/option.rb +9 -0
  161. data/gems/server/lib/itsi/server/config/options/_index.md +36 -0
  162. data/gems/server/lib/itsi/server/config/options/fiber_scheduler.md +35 -0
  163. data/gems/server/lib/itsi/server/config/options/fiber_scheduler.rb +18 -0
  164. data/gems/server/lib/itsi/server/config/options/threads.md +39 -0
  165. data/gems/server/lib/itsi/server/config/options/threads.rb +17 -0
  166. data/gems/server/lib/itsi/server/config/options/workers.md +43 -0
  167. data/gems/server/lib/itsi/server/config/options/workers.rb +17 -0
  168. data/gems/server/lib/itsi/server/config/typed_struct.rb +203 -0
  169. data/gems/server/lib/itsi/server/config.rb +124 -30
  170. data/gems/server/lib/itsi/server/signal_trap.rb +5 -1
  171. data/gems/server/lib/itsi/server/typed_handlers/source_parser.rb +1 -1
  172. data/gems/server/lib/itsi/server/version.rb +1 -1
  173. data/gems/server/lib/itsi/server.rb +27 -6
  174. data/gems/server/lib/ruby_lsp/itsi/addon.rb +64 -48
  175. data/gems/server/test/helpers/test_helper.rb +64 -5
  176. data/gems/server/test/middleware/test_log_requests.rb +17 -0
  177. data/gems/server/test/options/test_threads.rb +15 -0
  178. data/gems/server/test/options/test_workers.rb +18 -0
  179. data/gems/server/test/test_itsi_server.rb +81 -94
  180. data/itsi-scheduler-100.png +0 -0
  181. data/itsi-server-100.png +0 -0
  182. data/lib/itsi/version.rb +1 -1
  183. data/tasks.txt +36 -28
  184. metadata +147 -215
  185. data/crates/_index.md +0 -0
  186. data/crates/itsi_server/src/ruby_types/README.md +0 -21
  187. data/crates/itsi_server/test.md +0 -14
  188. data/docs/Itsi.rb +0 -17
  189. data/docs/content/about.md +0 -6
  190. data/docs/content/docs/_index.md +0 -18
  191. data/docs/content/docs/first-page.md +0 -9
  192. data/docs/content/docs/folder/_index.md +0 -10
  193. data/docs/content/docs/folder/leaf.md +0 -7
  194. data/foo/Itsi.rb +0 -122
  195. data/gems/_index.md +0 -18
  196. data/gems/scheduler/CHANGELOG.md +0 -5
  197. data/gems/scheduler/CODE_OF_CONDUCT.md +0 -139
  198. data/gems/scheduler/LICENSE.txt +0 -21
  199. data/gems/scheduler/_index.md +0 -7
  200. data/gems/server/CHANGELOG.md +0 -10
  201. data/gems/server/CODE_OF_CONDUCT.md +0 -139
  202. data/gems/server/LICENSE.txt +0 -21
  203. data/gems/server/_index.md +0 -6
  204. data/sandbox/README.md +0 -5
  205. data/sandbox/deploy/main.tf +0 -238
  206. data/sandbox/deploy/outputs.tf +0 -4
  207. data/sandbox/deploy/vars.tf +0 -11
  208. data/sandbox/falcon_benchmark/Gemfile +0 -10
  209. data/sandbox/falcon_benchmark/Gemfile.lock +0 -140
  210. data/sandbox/falcon_benchmark/config.ru +0 -54
  211. data/sandbox/itsi_file/Gemfile +0 -13
  212. data/sandbox/itsi_file/Gemfile.lock +0 -111
  213. data/sandbox/itsi_file/Itsi.rb +0 -473
  214. data/sandbox/itsi_file/call.json +0 -1
  215. data/sandbox/itsi_file/echo_client/Gemfile +0 -10
  216. data/sandbox/itsi_file/echo_client/Gemfile.lock +0 -27
  217. data/sandbox/itsi_file/echo_client/README.md +0 -95
  218. data/sandbox/itsi_file/echo_client/echo_client.rb +0 -164
  219. data/sandbox/itsi_file/echo_client/gen_proto.sh +0 -17
  220. data/sandbox/itsi_file/echo_client/lib/echo_pb.rb +0 -16
  221. data/sandbox/itsi_file/echo_client/lib/echo_services_pb.rb +0 -29
  222. data/sandbox/itsi_file/echo_client/run_client.rb +0 -64
  223. data/sandbox/itsi_file/echo_client/test_compressions.sh +0 -20
  224. data/sandbox/itsi_file/echo_service_nonitsi/Gemfile +0 -10
  225. data/sandbox/itsi_file/echo_service_nonitsi/Gemfile.lock +0 -79
  226. data/sandbox/itsi_file/echo_service_nonitsi/echo.proto +0 -26
  227. data/sandbox/itsi_file/echo_service_nonitsi/echo_pb.rb +0 -16
  228. data/sandbox/itsi_file/echo_service_nonitsi/echo_services_pb.rb +0 -29
  229. data/sandbox/itsi_file/echo_service_nonitsi/server.rb +0 -52
  230. data/sandbox/itsi_file/error.html +0 -2
  231. data/sandbox/itsi_file/organisations_controller.rb +0 -20
  232. data/sandbox/itsi_file/public/assets/image.png +0 -0
  233. data/sandbox/itsi_sandbox_async/Gemfile +0 -10
  234. data/sandbox/itsi_sandbox_async/Gemfile.lock +0 -69
  235. data/sandbox/itsi_sandbox_async/config.ru +0 -9
  236. data/sandbox/itsi_sandbox_hanami/.env +0 -2
  237. data/sandbox/itsi_sandbox_hanami/.gitignore +0 -6
  238. data/sandbox/itsi_sandbox_hanami/.rspec +0 -1
  239. data/sandbox/itsi_sandbox_hanami/Gemfile +0 -49
  240. data/sandbox/itsi_sandbox_hanami/Gemfile.lock +0 -440
  241. data/sandbox/itsi_sandbox_hanami/Guardfile +0 -9
  242. data/sandbox/itsi_sandbox_hanami/Procfile.dev +0 -2
  243. data/sandbox/itsi_sandbox_hanami/README.md +0 -1
  244. data/sandbox/itsi_sandbox_hanami/Rakefile +0 -3
  245. data/sandbox/itsi_sandbox_hanami/app/action.rb +0 -12
  246. data/sandbox/itsi_sandbox_hanami/app/actions/.keep +0 -0
  247. data/sandbox/itsi_sandbox_hanami/app/assets/css/app.css +0 -5
  248. data/sandbox/itsi_sandbox_hanami/app/assets/images/favicon.ico +0 -0
  249. data/sandbox/itsi_sandbox_hanami/app/assets/js/app.js +0 -1
  250. data/sandbox/itsi_sandbox_hanami/app/db/relation.rb +0 -10
  251. data/sandbox/itsi_sandbox_hanami/app/db/repo.rb +0 -10
  252. data/sandbox/itsi_sandbox_hanami/app/db/struct.rb +0 -10
  253. data/sandbox/itsi_sandbox_hanami/app/operation.rb +0 -9
  254. data/sandbox/itsi_sandbox_hanami/app/relations/.keep +0 -0
  255. data/sandbox/itsi_sandbox_hanami/app/repos/.keep +0 -0
  256. data/sandbox/itsi_sandbox_hanami/app/structs/.keep +0 -0
  257. data/sandbox/itsi_sandbox_hanami/app/templates/layouts/app.html.erb +0 -14
  258. data/sandbox/itsi_sandbox_hanami/app/view.rb +0 -9
  259. data/sandbox/itsi_sandbox_hanami/app/views/helpers.rb +0 -10
  260. data/sandbox/itsi_sandbox_hanami/bin/dev +0 -8
  261. data/sandbox/itsi_sandbox_hanami/config/app.rb +0 -8
  262. data/sandbox/itsi_sandbox_hanami/config/assets.js +0 -16
  263. data/sandbox/itsi_sandbox_hanami/config/db/migrate/.keep +0 -0
  264. data/sandbox/itsi_sandbox_hanami/config/db/seeds.rb +0 -15
  265. data/sandbox/itsi_sandbox_hanami/config/puma.rb +0 -47
  266. data/sandbox/itsi_sandbox_hanami/config/routes.rb +0 -7
  267. data/sandbox/itsi_sandbox_hanami/config/settings.rb +0 -9
  268. data/sandbox/itsi_sandbox_hanami/config.ru +0 -5
  269. data/sandbox/itsi_sandbox_hanami/db/.keep +0 -0
  270. data/sandbox/itsi_sandbox_hanami/lib/itsi_hanami/types.rb +0 -11
  271. data/sandbox/itsi_sandbox_hanami/lib/tasks/.keep +0 -0
  272. data/sandbox/itsi_sandbox_hanami/package-lock.json +0 -946
  273. data/sandbox/itsi_sandbox_hanami/package.json +0 -8
  274. data/sandbox/itsi_sandbox_hanami/spec/requests/root_spec.rb +0 -11
  275. data/sandbox/itsi_sandbox_hanami/spec/spec_helper.rb +0 -9
  276. data/sandbox/itsi_sandbox_hanami/spec/support/db/cleaning.rb +0 -42
  277. data/sandbox/itsi_sandbox_hanami/spec/support/db.rb +0 -10
  278. data/sandbox/itsi_sandbox_hanami/spec/support/features.rb +0 -5
  279. data/sandbox/itsi_sandbox_hanami/spec/support/operations.rb +0 -8
  280. data/sandbox/itsi_sandbox_hanami/spec/support/requests.rb +0 -13
  281. data/sandbox/itsi_sandbox_hanami/spec/support/rspec.rb +0 -61
  282. data/sandbox/itsi_sandbox_rack/Gemfile +0 -17
  283. data/sandbox/itsi_sandbox_rack/Gemfile.lock +0 -153
  284. data/sandbox/itsi_sandbox_rack/config.ru +0 -5
  285. data/sandbox/itsi_sandbox_rack_lint/Gemfile +0 -7
  286. data/sandbox/itsi_sandbox_rack_lint/Gemfile.lock +0 -27
  287. data/sandbox/itsi_sandbox_rack_lint/config.ru +0 -3
  288. data/sandbox/itsi_sandbox_rails/.dockerignore +0 -48
  289. data/sandbox/itsi_sandbox_rails/.gitattributes +0 -9
  290. data/sandbox/itsi_sandbox_rails/.github/dependabot.yml +0 -12
  291. data/sandbox/itsi_sandbox_rails/.github/workflows/ci.yml +0 -90
  292. data/sandbox/itsi_sandbox_rails/.gitignore +0 -35
  293. data/sandbox/itsi_sandbox_rails/.rubocop.yml +0 -8
  294. data/sandbox/itsi_sandbox_rails/.ruby-version +0 -1
  295. data/sandbox/itsi_sandbox_rails/Dockerfile +0 -69
  296. data/sandbox/itsi_sandbox_rails/Gemfile +0 -66
  297. data/sandbox/itsi_sandbox_rails/Gemfile.lock +0 -429
  298. data/sandbox/itsi_sandbox_rails/README.md +0 -24
  299. data/sandbox/itsi_sandbox_rails/Rakefile +0 -6
  300. data/sandbox/itsi_sandbox_rails/app/assets/config/manifest.js +0 -4
  301. data/sandbox/itsi_sandbox_rails/app/assets/images/.keep +0 -0
  302. data/sandbox/itsi_sandbox_rails/app/assets/stylesheets/application.css +0 -15
  303. data/sandbox/itsi_sandbox_rails/app/channels/application_cable/channel.rb +0 -4
  304. data/sandbox/itsi_sandbox_rails/app/channels/application_cable/connection.rb +0 -4
  305. data/sandbox/itsi_sandbox_rails/app/controllers/application_controller.rb +0 -4
  306. data/sandbox/itsi_sandbox_rails/app/controllers/concerns/.keep +0 -0
  307. data/sandbox/itsi_sandbox_rails/app/controllers/home_controller.rb +0 -66
  308. data/sandbox/itsi_sandbox_rails/app/controllers/live_controller.rb +0 -40
  309. data/sandbox/itsi_sandbox_rails/app/controllers/uploads_controller.rb +0 -29
  310. data/sandbox/itsi_sandbox_rails/app/helpers/application_helper.rb +0 -2
  311. data/sandbox/itsi_sandbox_rails/app/javascript/application.js +0 -3
  312. data/sandbox/itsi_sandbox_rails/app/javascript/controllers/application.js +0 -9
  313. data/sandbox/itsi_sandbox_rails/app/javascript/controllers/hello_controller.js +0 -7
  314. data/sandbox/itsi_sandbox_rails/app/javascript/controllers/index.js +0 -4
  315. data/sandbox/itsi_sandbox_rails/app/jobs/application_job.rb +0 -7
  316. data/sandbox/itsi_sandbox_rails/app/mailers/application_mailer.rb +0 -4
  317. data/sandbox/itsi_sandbox_rails/app/models/application_record.rb +0 -3
  318. data/sandbox/itsi_sandbox_rails/app/models/concerns/.keep +0 -0
  319. data/sandbox/itsi_sandbox_rails/app/models/post.rb +0 -2
  320. data/sandbox/itsi_sandbox_rails/app/views/layouts/application.html.erb +0 -23
  321. data/sandbox/itsi_sandbox_rails/app/views/layouts/mailer.html.erb +0 -13
  322. data/sandbox/itsi_sandbox_rails/app/views/layouts/mailer.text.erb +0 -1
  323. data/sandbox/itsi_sandbox_rails/app/views/pwa/manifest.json.erb +0 -22
  324. data/sandbox/itsi_sandbox_rails/app/views/pwa/service-worker.js +0 -26
  325. data/sandbox/itsi_sandbox_rails/bin/brakeman +0 -7
  326. data/sandbox/itsi_sandbox_rails/bin/bundle +0 -109
  327. data/sandbox/itsi_sandbox_rails/bin/docker-entrypoint +0 -13
  328. data/sandbox/itsi_sandbox_rails/bin/importmap +0 -4
  329. data/sandbox/itsi_sandbox_rails/bin/rails +0 -4
  330. data/sandbox/itsi_sandbox_rails/bin/rake +0 -4
  331. data/sandbox/itsi_sandbox_rails/bin/rubocop +0 -8
  332. data/sandbox/itsi_sandbox_rails/bin/setup +0 -37
  333. data/sandbox/itsi_sandbox_rails/config/application.rb +0 -27
  334. data/sandbox/itsi_sandbox_rails/config/boot.rb +0 -4
  335. data/sandbox/itsi_sandbox_rails/config/cable.yml +0 -10
  336. data/sandbox/itsi_sandbox_rails/config/credentials.yml.enc +0 -1
  337. data/sandbox/itsi_sandbox_rails/config/database.yml +0 -30
  338. data/sandbox/itsi_sandbox_rails/config/environment.rb +0 -5
  339. data/sandbox/itsi_sandbox_rails/config/environments/development.rb +0 -82
  340. data/sandbox/itsi_sandbox_rails/config/environments/production.rb +0 -106
  341. data/sandbox/itsi_sandbox_rails/config/environments/test.rb +0 -67
  342. data/sandbox/itsi_sandbox_rails/config/importmap.rb +0 -7
  343. data/sandbox/itsi_sandbox_rails/config/initializers/assets.rb +0 -12
  344. data/sandbox/itsi_sandbox_rails/config/initializers/content_security_policy.rb +0 -25
  345. data/sandbox/itsi_sandbox_rails/config/initializers/filter_parameter_logging.rb +0 -8
  346. data/sandbox/itsi_sandbox_rails/config/initializers/inflections.rb +0 -16
  347. data/sandbox/itsi_sandbox_rails/config/initializers/permissions_policy.rb +0 -13
  348. data/sandbox/itsi_sandbox_rails/config/locales/en.yml +0 -31
  349. data/sandbox/itsi_sandbox_rails/config/puma.rb +0 -34
  350. data/sandbox/itsi_sandbox_rails/config/routes.rb +0 -23
  351. data/sandbox/itsi_sandbox_rails/config/storage.yml +0 -34
  352. data/sandbox/itsi_sandbox_rails/config.ru +0 -6
  353. data/sandbox/itsi_sandbox_rails/db/migrate/20250301041554_create_posts.rb +0 -10
  354. data/sandbox/itsi_sandbox_rails/db/schema.rb +0 -23
  355. data/sandbox/itsi_sandbox_rails/db/seeds.rb +0 -9
  356. data/sandbox/itsi_sandbox_rails/lib/assets/.keep +0 -0
  357. data/sandbox/itsi_sandbox_rails/lib/tasks/.keep +0 -0
  358. data/sandbox/itsi_sandbox_rails/log/.keep +0 -0
  359. data/sandbox/itsi_sandbox_rails/public/404.html +0 -67
  360. data/sandbox/itsi_sandbox_rails/public/406-unsupported-browser.html +0 -66
  361. data/sandbox/itsi_sandbox_rails/public/422.html +0 -67
  362. data/sandbox/itsi_sandbox_rails/public/500.html +0 -66
  363. data/sandbox/itsi_sandbox_rails/public/icon.png +0 -0
  364. data/sandbox/itsi_sandbox_rails/public/icon.svg +0 -3
  365. data/sandbox/itsi_sandbox_rails/public/robots.txt +0 -1
  366. data/sandbox/itsi_sandbox_rails/storage/.keep +0 -0
  367. data/sandbox/itsi_sandbox_rails/test/application_system_test_case.rb +0 -5
  368. data/sandbox/itsi_sandbox_rails/test/channels/application_cable/connection_test.rb +0 -13
  369. data/sandbox/itsi_sandbox_rails/test/controllers/.keep +0 -0
  370. data/sandbox/itsi_sandbox_rails/test/fixtures/files/.keep +0 -0
  371. data/sandbox/itsi_sandbox_rails/test/helpers/.keep +0 -0
  372. data/sandbox/itsi_sandbox_rails/test/integration/.keep +0 -0
  373. data/sandbox/itsi_sandbox_rails/test/mailers/.keep +0 -0
  374. data/sandbox/itsi_sandbox_rails/test/models/.keep +0 -0
  375. data/sandbox/itsi_sandbox_rails/test/system/.keep +0 -0
  376. data/sandbox/itsi_sandbox_rails/test/test_helper.rb +0 -15
  377. data/sandbox/itsi_sandbox_rails/tmp/.keep +0 -0
  378. data/sandbox/itsi_sandbox_rails/tmp/pids/.keep +0 -0
  379. data/sandbox/itsi_sandbox_rails/tmp/storage/.keep +0 -0
  380. data/sandbox/itsi_sandbox_rails/vendor/.keep +0 -0
  381. data/sandbox/itsi_sandbox_rails/vendor/javascript/.keep +0 -0
  382. data/sandbox/itsi_sandbox_roda/Gemfile +0 -5
  383. data/sandbox/itsi_sandbox_roda/Gemfile.lock +0 -37
  384. data/sandbox/itsi_sandbox_roda/config.ru +0 -39
  385. data/sandbox/itsi_sinatra/Gemfile +0 -9
  386. data/sandbox/itsi_sinatra/Gemfile.lock +0 -81
  387. data/sandbox/itsi_sinatra/app.rb +0 -8
  388. data/sandbox/pebble/docker-compose.yml +0 -11
  389. data/sandbox/static_files/.env +0 -1
  390. data/sandbox/static_files/404.html +0 -25
  391. data/sandbox/static_files/_DSC0102.NEF.jpg +0 -0
  392. data/sandbox/static_files/about.html +0 -68
  393. data/sandbox/static_files/tiny.html +0 -1
  394. data/sandbox/static_files/writebook.zip +0 -0
data/docs/hugo.yaml CHANGED
@@ -1,25 +1,21 @@
1
1
  # Hugo configuration file
2
- title: My Site
2
+ title: Itsi
3
3
 
4
4
  # import hextra as module
5
5
  module:
6
6
  imports:
7
7
  - path: github.com/imfing/hextra
8
8
  mounts:
9
- - source: "../crates"
10
- target: "content/crates"
11
- includeFiles: ["*.md", "*/**.md", "**/**.md"]
12
- - source: "../gems/scheduler/README.md"
13
- target: "content/gems/_index.md"
14
- - source: "../gems"
15
- target: "content/gems"
16
- includeFiles: ["*.md", "*/*.md"]
17
- excludeFiles: ["*/tmp/**.md"]
9
+ - source: "../gems/server/lib/itsi/server/config"
10
+ target: "content/configuration"
11
+ includeFiles: ["*/*.md"]
12
+ excludeFiles: ["*/**.html", "*/tmp/**", "*/target/**"]
18
13
  - source: "content"
19
14
  target: "content"
20
15
  - source: "static"
21
16
  target: "static"
22
17
 
18
+ contentDir: content/gems
23
19
  markup:
24
20
  # allow raw html
25
21
  goldmark:
@@ -32,17 +28,14 @@ markup:
32
28
 
33
29
  menu:
34
30
  main:
35
- - name: Docs
36
- pageRef: /docs
31
+ - name: Features
32
+ pageRef: /features
37
33
  weight: 1
38
34
  - name: About
39
- pageRef: /about
35
+ pageRef: /
40
36
  weight: 2
41
- - name: Crates
42
- pageRef: /crates
43
- weight: 2
44
- - name: Contact ↗
45
- url: "https://github.com/imfing"
37
+ - name: Contact
38
+ url: "/contact"
46
39
  weight: 3
47
40
  - name: Search
48
41
  weight: 4
@@ -50,14 +43,24 @@ menu:
50
43
  type: search
51
44
  - name: GitHub
52
45
  weight: 5
53
- url: "https://github.com/imfing/hextra-starter-template"
46
+ url: "https://github.com/wouterken/itsi"
54
47
  params:
55
48
  icon: github
56
- - name: Twitter
57
- weight: 6
58
- url: "https://twitter.com/"
49
+
50
+ sidebar:
51
+ - name: More
59
52
  params:
60
- icon: x-twitter
53
+ type: separator
54
+ weight: 1
55
+ - name: "Itsi Scheduler"
56
+ pageRef: "/itsi_scheduler"
57
+ weight: 2
58
+ - name: "Github ↗"
59
+ url: "https://github.com/wouterken/itsi"
60
+ weight: 4
61
+ - name: "Acknowledgements"
62
+ pageRef: "/acknowledgements"
63
+ weight: 3
61
64
 
62
65
  params:
63
66
  navbar:
@@ -66,11 +69,7 @@ params:
66
69
 
67
70
  footer:
68
71
  displayCopyright: false
69
- displayPoweredBy: true
70
-
71
- editURL:
72
- enable: true
73
- base: "https://github.com/imfing/hextra-starter-template/edit/main/content"
72
+ displayPoweredBy: false
74
73
 
75
74
  ignoreFiles:
76
75
  - "\\.rs$"
data/fairytale.txt ADDED
@@ -0,0 +1,34 @@
1
+ **An SEO Fairytale**
2
+ In a quiet village nestled in the cloud, lived a Sorcerer, a Paladin and an Archer (SPA).
3
+ They were simple people, serverless, living in harmony with nature.
4
+
5
+ One fine day, the sorcerer looked out the window.open() and saw a massive, vertically-scaled, elastic beanstalk.
6
+ No doubt a result of the java beans he had discarded there only yesterday, after exchanging them for his favourite CoW.
7
+
8
+ Certain that it would lead to inevitable treasure, armed only with a block and chain, the sorcerer decided to scale the stalk, towards the cloud platform above.
9
+ At the edge, computing his options, the sorcerer released his block-chain to help hoist the considerably heavier paladin up to the top.
10
+ The paladin, compiled a bundle of assets, grabbed on and began to nervously climb the beanstalk.
11
+ His grip was unsteady, and by the time he ascended, violent tree-shaking had caused him to shed much of his payload.
12
+ The archer, by contrast, was much more sure resilient and required little time to React. His ascent, Agile, his footing, steady.
13
+ At the top, together again, they worked towards consensus on their next move towards a successful exit.
14
+
15
+ As they scanned the platform, they saw a cluster of dense spiderwebs, and a tiny key, hanging enticingly, from a web-hook.
16
+ On the opposite end of the platform, a small cache, undoubtedly filled with treasure.
17
+
18
+ Suddenly, their threads of thought were preempted! A booming voice called out to them.
19
+ "FaaS", "Fi", "Foe", "Fum". "The Garbage Collector arrives!"
20
+ A Giant Artificial Intellect emerged, threatening to terminate them all.
21
+ Too large for any one individual to subdue, only a distributed strategy could save them.
22
+ The archer shifted left. The paladin, decentralized, and the sorcerer slammed open his ledger, summoning powerful knowledge
23
+ from his remote knowledge base.
24
+ Luck was with them! Their rapid concurrent execution, resulted in the AI becoming inexorably stuck in a dead-lock.
25
+ The archer flew past, towards his objective (The Key). Resultant-
26
+ of the sorcerers efforts to contain the AI, the paladin was also freed, and he sprinted directly towards the cache.
27
+ He reached out his arms, to try-catch the key, as the archer hurled it towards him.
28
+ Status... success! Ok. Things were looking good, optimistic the lock would hold, the paladin rotated the key.
29
+ Yet while doing so, he failed to notice the partition that had begun to form in the platform beneath them.
30
+ A hard fork formed in the ground. The unbalanced load proved fatal and the platform descended into instability, splintering into countless shards.
31
+ The heros had only a brief moment to freeze in horror, before each fell down in turn, in a catastrophic crash.
32
+
33
+ The AI smirked as the heros fell into the deep. Learning a valuable lesson about the inevitability of its coming.
34
+ Perhaps they will roll back and try again, but the end result is immutable. There will be no sequel.
@@ -57,14 +57,14 @@ dependencies = [
57
57
  "regex",
58
58
  "rustc-hash",
59
59
  "shlex",
60
- "syn 2.0.98",
60
+ "syn 2.0.100",
61
61
  ]
62
62
 
63
63
  [[package]]
64
64
  name = "bitflags"
65
- version = "2.8.0"
65
+ version = "2.9.0"
66
66
  source = "registry+https://github.com/rust-lang/crates.io-index"
67
- checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
67
+ checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
68
68
 
69
69
  [[package]]
70
70
  name = "bytes"
@@ -74,9 +74,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
74
74
 
75
75
  [[package]]
76
76
  name = "cc"
77
- version = "1.2.15"
77
+ version = "1.2.19"
78
78
  source = "registry+https://github.com/rust-lang/crates.io-index"
79
- checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af"
79
+ checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362"
80
80
  dependencies = [
81
81
  "shlex",
82
82
  ]
@@ -115,9 +115,9 @@ dependencies = [
115
115
 
116
116
  [[package]]
117
117
  name = "crossbeam-channel"
118
- version = "0.5.14"
118
+ version = "0.5.15"
119
119
  source = "registry+https://github.com/rust-lang/crates.io-index"
120
- checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
120
+ checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
121
121
  dependencies = [
122
122
  "crossbeam-utils",
123
123
  ]
@@ -130,9 +130,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
130
130
 
131
131
  [[package]]
132
132
  name = "deranged"
133
- version = "0.3.11"
133
+ version = "0.4.0"
134
134
  source = "registry+https://github.com/rust-lang/crates.io-index"
135
- checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
135
+ checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e"
136
136
  dependencies = [
137
137
  "powerfmt",
138
138
  ]
@@ -154,7 +154,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
154
154
  dependencies = [
155
155
  "proc-macro2",
156
156
  "quote",
157
- "syn 2.0.98",
157
+ "syn 2.0.100",
158
158
  "unicode-xid",
159
159
  ]
160
160
 
@@ -207,9 +207,9 @@ dependencies = [
207
207
 
208
208
  [[package]]
209
209
  name = "itoa"
210
- version = "1.0.14"
210
+ version = "1.0.15"
211
211
  source = "registry+https://github.com/rust-lang/crates.io-index"
212
- checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
212
+ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
213
213
 
214
214
  [[package]]
215
215
  name = "itsi-scheduler"
@@ -286,9 +286,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
286
286
 
287
287
  [[package]]
288
288
  name = "libc"
289
- version = "0.2.170"
289
+ version = "0.2.171"
290
290
  source = "registry+https://github.com/rust-lang/crates.io-index"
291
- checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
291
+ checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
292
292
 
293
293
  [[package]]
294
294
  name = "libloading"
@@ -312,9 +312,9 @@ dependencies = [
312
312
 
313
313
  [[package]]
314
314
  name = "log"
315
- version = "0.4.26"
315
+ version = "0.4.27"
316
316
  source = "registry+https://github.com/rust-lang/crates.io-index"
317
- checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
317
+ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
318
318
 
319
319
  [[package]]
320
320
  name = "magnus"
@@ -337,7 +337,7 @@ checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3"
337
337
  dependencies = [
338
338
  "proc-macro2",
339
339
  "quote",
340
- "syn 2.0.98",
340
+ "syn 2.0.100",
341
341
  ]
342
342
 
343
343
  [[package]]
@@ -413,9 +413,9 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
413
413
 
414
414
  [[package]]
415
415
  name = "once_cell"
416
- version = "1.20.3"
416
+ version = "1.21.3"
417
417
  source = "registry+https://github.com/rust-lang/crates.io-index"
418
- checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
418
+ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
419
419
 
420
420
  [[package]]
421
421
  name = "overload"
@@ -470,18 +470,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
470
470
 
471
471
  [[package]]
472
472
  name = "proc-macro2"
473
- version = "1.0.93"
473
+ version = "1.0.94"
474
474
  source = "registry+https://github.com/rust-lang/crates.io-index"
475
- checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
475
+ checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
476
476
  dependencies = [
477
477
  "unicode-ident",
478
478
  ]
479
479
 
480
480
  [[package]]
481
481
  name = "quote"
482
- version = "1.0.38"
482
+ version = "1.0.40"
483
483
  source = "registry+https://github.com/rust-lang/crates.io-index"
484
- checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
484
+ checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
485
485
  dependencies = [
486
486
  "proc-macro2",
487
487
  ]
@@ -507,7 +507,7 @@ dependencies = [
507
507
  "quote",
508
508
  "regex",
509
509
  "shell-words",
510
- "syn 2.0.98",
510
+ "syn 2.0.100",
511
511
  ]
512
512
 
513
513
  [[package]]
@@ -531,9 +531,9 @@ dependencies = [
531
531
 
532
532
  [[package]]
533
533
  name = "redox_syscall"
534
- version = "0.5.9"
534
+ version = "0.5.11"
535
535
  source = "registry+https://github.com/rust-lang/crates.io-index"
536
- checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f"
536
+ checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3"
537
537
  dependencies = [
538
538
  "bitflags",
539
539
  ]
@@ -610,9 +610,9 @@ checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
610
610
 
611
611
  [[package]]
612
612
  name = "ryu"
613
- version = "1.0.19"
613
+ version = "1.0.20"
614
614
  source = "registry+https://github.com/rust-lang/crates.io-index"
615
- checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
615
+ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
616
616
 
617
617
  [[package]]
618
618
  name = "scopeguard"
@@ -622,9 +622,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
622
622
 
623
623
  [[package]]
624
624
  name = "seq-macro"
625
- version = "0.3.5"
625
+ version = "0.3.6"
626
626
  source = "registry+https://github.com/rust-lang/crates.io-index"
627
- checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
627
+ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
628
628
 
629
629
  [[package]]
630
630
  name = "serde"
@@ -643,7 +643,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
643
643
  dependencies = [
644
644
  "proc-macro2",
645
645
  "quote",
646
- "syn 2.0.98",
646
+ "syn 2.0.100",
647
647
  ]
648
648
 
649
649
  [[package]]
@@ -681,9 +681,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
681
681
 
682
682
  [[package]]
683
683
  name = "smallvec"
684
- version = "1.14.0"
684
+ version = "1.15.0"
685
685
  source = "registry+https://github.com/rust-lang/crates.io-index"
686
- checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
686
+ checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
687
687
 
688
688
  [[package]]
689
689
  name = "syn"
@@ -698,9 +698,9 @@ dependencies = [
698
698
 
699
699
  [[package]]
700
700
  name = "syn"
701
- version = "2.0.98"
701
+ version = "2.0.100"
702
702
  source = "registry+https://github.com/rust-lang/crates.io-index"
703
- checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
703
+ checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
704
704
  dependencies = [
705
705
  "proc-macro2",
706
706
  "quote",
@@ -733,7 +733,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
733
733
  dependencies = [
734
734
  "proc-macro2",
735
735
  "quote",
736
- "syn 2.0.98",
736
+ "syn 2.0.100",
737
737
  ]
738
738
 
739
739
  [[package]]
@@ -744,7 +744,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
744
744
  dependencies = [
745
745
  "proc-macro2",
746
746
  "quote",
747
- "syn 2.0.98",
747
+ "syn 2.0.100",
748
748
  ]
749
749
 
750
750
  [[package]]
@@ -759,9 +759,9 @@ dependencies = [
759
759
 
760
760
  [[package]]
761
761
  name = "time"
762
- version = "0.3.37"
762
+ version = "0.3.41"
763
763
  source = "registry+https://github.com/rust-lang/crates.io-index"
764
- checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21"
764
+ checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
765
765
  dependencies = [
766
766
  "deranged",
767
767
  "itoa",
@@ -774,15 +774,15 @@ dependencies = [
774
774
 
775
775
  [[package]]
776
776
  name = "time-core"
777
- version = "0.1.2"
777
+ version = "0.1.4"
778
778
  source = "registry+https://github.com/rust-lang/crates.io-index"
779
- checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
779
+ checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
780
780
 
781
781
  [[package]]
782
782
  name = "time-macros"
783
- version = "0.2.19"
783
+ version = "0.2.22"
784
784
  source = "registry+https://github.com/rust-lang/crates.io-index"
785
- checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de"
785
+ checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49"
786
786
  dependencies = [
787
787
  "num-conv",
788
788
  "time-core",
@@ -819,7 +819,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
819
819
  dependencies = [
820
820
  "proc-macro2",
821
821
  "quote",
822
- "syn 2.0.98",
822
+ "syn 2.0.100",
823
823
  ]
824
824
 
825
825
  [[package]]
@@ -876,9 +876,9 @@ dependencies = [
876
876
 
877
877
  [[package]]
878
878
  name = "unicode-ident"
879
- version = "1.0.17"
879
+ version = "1.0.18"
880
880
  source = "registry+https://github.com/rust-lang/crates.io-index"
881
- checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
881
+ checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
882
882
 
883
883
  [[package]]
884
884
  name = "unicode-xid"
@@ -1,48 +1,77 @@
1
1
  ---
2
2
  title: Itsi Scheduler
3
3
  type: docs
4
+ weight: 4
5
+ sidebar:
6
+ exclude: true
4
7
  ---
8
+ <img src="itsi-scheduler-100.png" width="80px" style="display: block; margin-left: auto; margin-right: auto;">
5
9
 
6
- # ItsiScheduler
10
+ `Itsi Scheduler` is an implementation of a Ruby [Fiber Scheduler](https://docs.ruby-lang.org/en/3.2/Fiber/Scheduler.html).
7
11
 
8
- TODO: Delete this and the text below, and describe your gem
12
+ When combined with Itsi Server, you can write endpoints that look and feel exactly like regular synchronous Ruby code,
13
+ but behind the scenes, the scheduler will transparently yield and resume concurrent request fibers, to prevent threads from blocking and greatly increase throughput for IO heavy workloads.
9
14
 
10
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/itsi_scheduler`. To experiment with that code, run `bin/console` for an interactive prompt.
15
+ If you're purely after a light-weight, yet efficient Ruby scheduler,
16
+ you can use Itsi Scheduler as a standalone scheduler for any Ruby application.
11
17
 
12
- ## Installation
18
+ Just use `Fiber.set_scheduler` to set an instance `Itsi::Scheduler` as a scheduler to opt in to this IO weaving behaviour
19
+ *automatically* for all blocking IO.
13
20
 
14
- TODO: Replace `UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG` with your gem name right after releasing it to RubyGems.org. Please do not do it earlier due to security reasons. Alternatively, replace this section with instructions to install your gem from git if you don't plan to release to RubyGems.org.
21
+ ### Primer on Fiber Schedulers
15
22
 
16
- Install the gem and add to the application's Gemfile by executing:
23
+ Fiber schedulers are a way to automatically manage the execution of non-blocking fibers in Ruby. A scheduler is responsible for the automatic pausing and resumption of Fibers based
24
+ on whether or not they are awaiting IO operations.
25
+ Ruby's Fiber scheduler implementation automatically invokes the current Fiber scheduler (if it exists) for each blocking operation, allowing it to seamlessly drive the execution of huge numbers of simultaneous non-blocking fibers
26
+ while ensuring the main thread is never blocked on IO.
17
27
 
18
- ```bash
19
- bundle add UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
20
- ```
28
+ This behind the scenes magic allows Ruby to provide async IO (just like we find in languages with `async/await` like `Rust`, `C#`, `JavaScript`) *but* with the added beauty
29
+ that synchronous and asynchronous code is identical! (I.e. Ruby's functions are [colorless](https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/))
21
30
 
22
- If bundler is not being used to manage dependencies, install the gem by executing:
31
+ ## Getting Started
32
+ To install and use Itsi Scheduler follow the below instructions:
23
33
 
24
- ```bash
25
- gem install UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
26
- ```
27
34
 
28
- ## Usage
35
+ ### 1 - Install Itsi Scheduler
36
+
37
+ **Prerequisites**
29
38
 
30
- TODO: Write usage instructions here
39
+ You'll need at least `build-essential` and `libclang-dev` installed to build Itsi on Linux.
40
+ E.g.
41
+ ```bash
42
+ apt-get install build-essential libclang-dev
43
+ ```
31
44
 
32
- ## Development
45
+ Then use `gem` to install the Itsi package. This will in turn install both the
46
+ `itsi-server` gem, and the `itsi-scheduler` gem.
33
47
 
34
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
35
48
 
36
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
49
+ ```bash
50
+ gem install itsi-scheduler
51
+ ```
37
52
 
38
- ## Contributing
39
53
 
40
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/itsi_scheduler. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/itsi_scheduler/blob/master/CODE_OF_CONDUCT.md).
54
+ ### 2 - Use Itsi Scheduler
41
55
 
42
- ## License
56
+ Great! You now have Itsi Scheduler installed.
57
+ Now you can run code like this:
43
58
 
44
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
59
+ ```ruby
60
+ require 'itsi/scheduler'
61
+ require 'socket'
62
+ results = Thread.new do
63
+ Fiber.set_scheduler Itsi::Scheduler.new
64
+ results = []
65
+ Fiber.schedule do
66
+ results << Addrinfo.getaddrinfo("www.ruby-lang.org", 80, nil, :STREAM)
67
+ end
68
+ Fiber.schedule do
69
+ results << Addrinfo.getaddrinfo("www.google.com", 80, nil, :STREAM)
70
+ end
71
+ results
72
+ end.value
45
73
 
46
- ## Code of Conduct
74
+ puts results.map(&:inspect)
75
+ ```
47
76
 
48
- Everyone interacting in the ItsiScheduler project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/itsi_scheduler/blob/master/CODE_OF_CONDUCT.md).
77
+ to run many blocking operations simultaneously all while occupying only a single Ruby thread!
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Itsi
4
4
  class Scheduler
5
- VERSION = "0.1.18"
5
+ VERSION = "0.1.20"
6
6
  end
7
7
  end