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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/Cargo.lock +924 -385
- data/README.md +67 -55
- data/crates/itsi_server/Cargo.toml +7 -4
- data/crates/itsi_server/src/ruby_types/itsi_http_request.rs +2 -2
- data/crates/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +150 -19
- data/crates/itsi_server/src/ruby_types/itsi_server.rs +1 -0
- data/crates/itsi_server/src/server/binds/listener.rs +34 -29
- data/crates/itsi_server/src/server/binds/tls/locked_dir_cache.rs +2 -2
- data/crates/itsi_server/src/server/binds/tls.rs +1 -1
- data/crates/itsi_server/src/server/middleware_stack/middleware.rs +33 -28
- data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +56 -3
- data/crates/itsi_server/src/server/middleware_stack/middlewares/csp.rs +179 -0
- data/crates/itsi_server/src/server/middleware_stack/middlewares/mod.rs +25 -2
- data/crates/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +3 -3
- data/crates/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +2 -1
- data/crates/itsi_server/src/server/middleware_stack/mod.rs +32 -34
- data/crates/itsi_server/src/server/serve_strategy/cluster_mode.rs +10 -4
- data/crates/itsi_server/src/server/serve_strategy/single_mode.rs +30 -7
- data/crates/itsi_server/src/server/thread_worker.rs +2 -2
- data/crates/itsi_server/src/services/static_file_server.rs +30 -28
- data/crates/itsi_tracing/src/lib.rs +39 -8
- data/docker/Dockerfile +12 -0
- data/docs/content/_index.md +18 -10
- data/docs/content/acknowledgements/_index.md +43 -0
- data/docs/content/configuration/_index.md +98 -0
- data/docs/content/contact/_index.md +7 -0
- data/docs/content/faqs/_index.md +27 -0
- data/docs/content/features/_index.md +285 -0
- data/docs/content/getting_started/_index.md +70 -0
- data/docs/content/getting_started/local_development.md +40 -0
- data/docs/content/getting_started/logging.md +16 -0
- data/docs/content/getting_started/running_itsi_in_production.md +24 -0
- data/docs/content/itsi-server-100.png +0 -0
- data/docs/content/itsi_scheduler/_index.md +105 -0
- data/docs/content/itsi_scheduler/itsi-scheduler-100.png +0 -0
- data/docs/content/ruby-lsp.png +0 -0
- data/docs/content/ruby.svg +948 -0
- data/docs/data/icons.yaml +949 -0
- data/docs/hugo.yaml +27 -28
- data/fairytale.txt +34 -0
- data/gems/scheduler/Cargo.lock +46 -46
- data/gems/scheduler/README.md +53 -24
- data/gems/scheduler/itsi-scheduler-100.png +0 -0
- data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
- data/gems/server/Cargo.lock +932 -382
- data/gems/server/README.md +2 -0
- data/gems/server/exe/itsi +5 -5
- data/gems/server/lib/itsi/http_request.rb +1 -0
- data/gems/server/lib/itsi/server/config/config_helpers.rb +93 -0
- data/gems/server/lib/itsi/server/config/dsl.rb +98 -37
- data/gems/server/lib/itsi/server/config/known_paths/KitchensinkDirectories.txt +2346 -0
- data/gems/server/lib/itsi/server/config/known_paths/Randomfiles.txt +24 -0
- data/gems/server/lib/itsi/server/config/known_paths/UnixDotfiles.txt +52 -0
- data/gems/server/lib/itsi/server/config/known_paths/backdoors/ASP_CommonBackdoors.txt +29 -0
- data/gems/server/lib/itsi/server/config/known_paths/backdoors/bot_control_panels.txt +1668 -0
- data/gems/server/lib/itsi/server/config/known_paths/backdoors/shells.txt +1167 -0
- data/gems/server/lib/itsi/server/config/known_paths/cgi/CGI_HTTP_POST.txt +7 -0
- data/gems/server/lib/itsi/server/config/known_paths/cgi/CGI_HTTP_POST_Windows.txt +6 -0
- data/gems/server/lib/itsi/server/config/known_paths/cgi/CGI_Microsoft.txt +79 -0
- data/gems/server/lib/itsi/server/config/known_paths/cgi/CGI_XPlatform.txt +3948 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/README.md +5 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/drupal_plugins.txt +6320 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/drupal_themes.txt +828 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/joomla_plugins.txt +224 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/joomla_themes.txt +30 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/php-nuke.txt +2142 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/wordpress.txt +1566 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/wp_common_theme_files.txt +46 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/wp_plugins.txt +13366 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/wp_plugins_full.txt +68662 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/wp_plugins_top225.txt +225 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/wp_themes.readme +12 -0
- data/gems/server/lib/itsi/server/config/known_paths/cms/wp_themes.txt +7336 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/3CharExtBrute.txt +17576 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/CommonWebExtensions.txt +80 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Backup.txt +14 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Common.txt +865 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Compressed.txt +186 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Mostcommon.txt +30 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Skipfish.txt +93 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/WordlistSkipfish.txt +1918 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/copy_of.txt +8 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-directories-lowercase.txt +56180 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-directories.txt +62290 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-extensions-lowercase.txt +2367 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-extensions.txt +2450 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-files-lowercase.txt +35323 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-files.txt +37037 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-words-lowercase.txt +107982 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-words.txt +119600 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-directories-lowercase.txt +26593 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-directories.txt +30009 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-extensions-lowercase.txt +1233 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-extensions.txt +1289 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-files-lowercase.txt +16243 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-files.txt +17128 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-words-lowercase.txt +56293 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-words.txt +63087 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-directories-lowercase.txt +17776 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-directories.txt +20122 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-extensions-lowercase.txt +914 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-extensions.txt +963 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-files-lowercase.txt +10848 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-files.txt +11424 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-words-lowercase.txt +38267 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-words.txt +43003 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/spanish.txt +445 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/test_demo.txt +36 -0
- data/gems/server/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/upload_variants.txt +44 -0
- data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/Logins.txt +71 -0
- data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/cfm.txt +294 -0
- data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/html.txt +295 -0
- data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/jsp.txt +294 -0
- data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/php.txt +294 -0
- data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/windows-asp.txt +294 -0
- data/gems/server/lib/itsi/server/config/known_paths/login-file-locations/windows-aspx.txt +294 -0
- data/gems/server/lib/itsi/server/config/known_paths/password-file-locations/Passwords.txt +47 -0
- data/gems/server/lib/itsi/server/config/known_paths/php/PHP.txt +30 -0
- data/gems/server/lib/itsi/server/config/known_paths/php/PHP_CommonBackdoors.txt +5 -0
- data/gems/server/lib/itsi/server/config/known_paths/proxy-conf.txt +31 -0
- data/gems/server/lib/itsi/server/config/known_paths/tftp.txt +79 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/ADFS.txt +86 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/AdobeXML.txt +16 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Apache.txt +101 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/ApacheTomcat.txt +47 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Apache_Axis.txt +16 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/ColdFusion.txt +111 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/FatwireCMS.txt +390 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Frontpage.txt +38 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/HP_System_Mgmt_Homepage.txt +239 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/HTTP_POST_Microsoft.txt +2 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Hyperion.txt +578 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/IIS.txt +187 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/JBoss.txt +5 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/JRun.txt +13 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/JavaServlets_Common.txt +3 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Joomla_exploitable.txt +1937 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/LotusNotes.txt +206 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Netware.txt +18 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Oracle9i.txt +60 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/OracleAppServer.txt +192 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/README.md +6 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Ruby_Rails.txt +121 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/SAP.txt +463 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Sharepoint.txt +1707 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/SiteMinder.txt +19 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/SunAppServerGlassfish.txt +51 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/SuniPlanet.txt +35 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Vignette.txt +73 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Weblogic.txt +160 -0
- data/gems/server/lib/itsi/server/config/known_paths/webservers-appservers/Websphere.txt +366 -0
- data/gems/server/lib/itsi/server/config/known_paths/wellknown-rfc5785.txt +30 -0
- data/gems/server/lib/itsi/server/config/known_paths.rb +17 -0
- data/gems/server/lib/itsi/server/config/middleware/_index.md +54 -0
- data/gems/server/lib/itsi/server/config/middleware/log_requests.md +63 -0
- data/gems/server/lib/itsi/server/config/middleware/log_requests.rb +33 -0
- data/gems/server/lib/itsi/server/config/middleware.rb +9 -0
- data/gems/server/lib/itsi/server/config/option.rb +9 -0
- data/gems/server/lib/itsi/server/config/options/_index.md +36 -0
- data/gems/server/lib/itsi/server/config/options/fiber_scheduler.md +35 -0
- data/gems/server/lib/itsi/server/config/options/fiber_scheduler.rb +18 -0
- data/gems/server/lib/itsi/server/config/options/threads.md +39 -0
- data/gems/server/lib/itsi/server/config/options/threads.rb +17 -0
- data/gems/server/lib/itsi/server/config/options/workers.md +43 -0
- data/gems/server/lib/itsi/server/config/options/workers.rb +17 -0
- data/gems/server/lib/itsi/server/config/typed_struct.rb +203 -0
- data/gems/server/lib/itsi/server/config.rb +124 -30
- data/gems/server/lib/itsi/server/signal_trap.rb +5 -1
- data/gems/server/lib/itsi/server/typed_handlers/source_parser.rb +1 -1
- data/gems/server/lib/itsi/server/version.rb +1 -1
- data/gems/server/lib/itsi/server.rb +27 -6
- data/gems/server/lib/ruby_lsp/itsi/addon.rb +64 -48
- data/gems/server/test/helpers/test_helper.rb +64 -5
- data/gems/server/test/middleware/test_log_requests.rb +17 -0
- data/gems/server/test/options/test_threads.rb +15 -0
- data/gems/server/test/options/test_workers.rb +18 -0
- data/gems/server/test/test_itsi_server.rb +81 -94
- data/itsi-scheduler-100.png +0 -0
- data/itsi-server-100.png +0 -0
- data/lib/itsi/version.rb +1 -1
- data/tasks.txt +36 -28
- metadata +147 -215
- data/crates/_index.md +0 -0
- data/crates/itsi_server/src/ruby_types/README.md +0 -21
- data/crates/itsi_server/test.md +0 -14
- data/docs/Itsi.rb +0 -17
- data/docs/content/about.md +0 -6
- data/docs/content/docs/_index.md +0 -18
- data/docs/content/docs/first-page.md +0 -9
- data/docs/content/docs/folder/_index.md +0 -10
- data/docs/content/docs/folder/leaf.md +0 -7
- data/foo/Itsi.rb +0 -122
- data/gems/_index.md +0 -18
- data/gems/scheduler/CHANGELOG.md +0 -5
- data/gems/scheduler/CODE_OF_CONDUCT.md +0 -139
- data/gems/scheduler/LICENSE.txt +0 -21
- data/gems/scheduler/_index.md +0 -7
- data/gems/server/CHANGELOG.md +0 -10
- data/gems/server/CODE_OF_CONDUCT.md +0 -139
- data/gems/server/LICENSE.txt +0 -21
- data/gems/server/_index.md +0 -6
- data/sandbox/README.md +0 -5
- data/sandbox/deploy/main.tf +0 -238
- data/sandbox/deploy/outputs.tf +0 -4
- data/sandbox/deploy/vars.tf +0 -11
- data/sandbox/falcon_benchmark/Gemfile +0 -10
- data/sandbox/falcon_benchmark/Gemfile.lock +0 -140
- data/sandbox/falcon_benchmark/config.ru +0 -54
- data/sandbox/itsi_file/Gemfile +0 -13
- data/sandbox/itsi_file/Gemfile.lock +0 -111
- data/sandbox/itsi_file/Itsi.rb +0 -473
- data/sandbox/itsi_file/call.json +0 -1
- data/sandbox/itsi_file/echo_client/Gemfile +0 -10
- data/sandbox/itsi_file/echo_client/Gemfile.lock +0 -27
- data/sandbox/itsi_file/echo_client/README.md +0 -95
- data/sandbox/itsi_file/echo_client/echo_client.rb +0 -164
- data/sandbox/itsi_file/echo_client/gen_proto.sh +0 -17
- data/sandbox/itsi_file/echo_client/lib/echo_pb.rb +0 -16
- data/sandbox/itsi_file/echo_client/lib/echo_services_pb.rb +0 -29
- data/sandbox/itsi_file/echo_client/run_client.rb +0 -64
- data/sandbox/itsi_file/echo_client/test_compressions.sh +0 -20
- data/sandbox/itsi_file/echo_service_nonitsi/Gemfile +0 -10
- data/sandbox/itsi_file/echo_service_nonitsi/Gemfile.lock +0 -79
- data/sandbox/itsi_file/echo_service_nonitsi/echo.proto +0 -26
- data/sandbox/itsi_file/echo_service_nonitsi/echo_pb.rb +0 -16
- data/sandbox/itsi_file/echo_service_nonitsi/echo_services_pb.rb +0 -29
- data/sandbox/itsi_file/echo_service_nonitsi/server.rb +0 -52
- data/sandbox/itsi_file/error.html +0 -2
- data/sandbox/itsi_file/organisations_controller.rb +0 -20
- data/sandbox/itsi_file/public/assets/image.png +0 -0
- data/sandbox/itsi_sandbox_async/Gemfile +0 -10
- data/sandbox/itsi_sandbox_async/Gemfile.lock +0 -69
- data/sandbox/itsi_sandbox_async/config.ru +0 -9
- data/sandbox/itsi_sandbox_hanami/.env +0 -2
- data/sandbox/itsi_sandbox_hanami/.gitignore +0 -6
- data/sandbox/itsi_sandbox_hanami/.rspec +0 -1
- data/sandbox/itsi_sandbox_hanami/Gemfile +0 -49
- data/sandbox/itsi_sandbox_hanami/Gemfile.lock +0 -440
- data/sandbox/itsi_sandbox_hanami/Guardfile +0 -9
- data/sandbox/itsi_sandbox_hanami/Procfile.dev +0 -2
- data/sandbox/itsi_sandbox_hanami/README.md +0 -1
- data/sandbox/itsi_sandbox_hanami/Rakefile +0 -3
- data/sandbox/itsi_sandbox_hanami/app/action.rb +0 -12
- data/sandbox/itsi_sandbox_hanami/app/actions/.keep +0 -0
- data/sandbox/itsi_sandbox_hanami/app/assets/css/app.css +0 -5
- data/sandbox/itsi_sandbox_hanami/app/assets/images/favicon.ico +0 -0
- data/sandbox/itsi_sandbox_hanami/app/assets/js/app.js +0 -1
- data/sandbox/itsi_sandbox_hanami/app/db/relation.rb +0 -10
- data/sandbox/itsi_sandbox_hanami/app/db/repo.rb +0 -10
- data/sandbox/itsi_sandbox_hanami/app/db/struct.rb +0 -10
- data/sandbox/itsi_sandbox_hanami/app/operation.rb +0 -9
- data/sandbox/itsi_sandbox_hanami/app/relations/.keep +0 -0
- data/sandbox/itsi_sandbox_hanami/app/repos/.keep +0 -0
- data/sandbox/itsi_sandbox_hanami/app/structs/.keep +0 -0
- data/sandbox/itsi_sandbox_hanami/app/templates/layouts/app.html.erb +0 -14
- data/sandbox/itsi_sandbox_hanami/app/view.rb +0 -9
- data/sandbox/itsi_sandbox_hanami/app/views/helpers.rb +0 -10
- data/sandbox/itsi_sandbox_hanami/bin/dev +0 -8
- data/sandbox/itsi_sandbox_hanami/config/app.rb +0 -8
- data/sandbox/itsi_sandbox_hanami/config/assets.js +0 -16
- data/sandbox/itsi_sandbox_hanami/config/db/migrate/.keep +0 -0
- data/sandbox/itsi_sandbox_hanami/config/db/seeds.rb +0 -15
- data/sandbox/itsi_sandbox_hanami/config/puma.rb +0 -47
- data/sandbox/itsi_sandbox_hanami/config/routes.rb +0 -7
- data/sandbox/itsi_sandbox_hanami/config/settings.rb +0 -9
- data/sandbox/itsi_sandbox_hanami/config.ru +0 -5
- data/sandbox/itsi_sandbox_hanami/db/.keep +0 -0
- data/sandbox/itsi_sandbox_hanami/lib/itsi_hanami/types.rb +0 -11
- data/sandbox/itsi_sandbox_hanami/lib/tasks/.keep +0 -0
- data/sandbox/itsi_sandbox_hanami/package-lock.json +0 -946
- data/sandbox/itsi_sandbox_hanami/package.json +0 -8
- data/sandbox/itsi_sandbox_hanami/spec/requests/root_spec.rb +0 -11
- data/sandbox/itsi_sandbox_hanami/spec/spec_helper.rb +0 -9
- data/sandbox/itsi_sandbox_hanami/spec/support/db/cleaning.rb +0 -42
- data/sandbox/itsi_sandbox_hanami/spec/support/db.rb +0 -10
- data/sandbox/itsi_sandbox_hanami/spec/support/features.rb +0 -5
- data/sandbox/itsi_sandbox_hanami/spec/support/operations.rb +0 -8
- data/sandbox/itsi_sandbox_hanami/spec/support/requests.rb +0 -13
- data/sandbox/itsi_sandbox_hanami/spec/support/rspec.rb +0 -61
- data/sandbox/itsi_sandbox_rack/Gemfile +0 -17
- data/sandbox/itsi_sandbox_rack/Gemfile.lock +0 -153
- data/sandbox/itsi_sandbox_rack/config.ru +0 -5
- data/sandbox/itsi_sandbox_rack_lint/Gemfile +0 -7
- data/sandbox/itsi_sandbox_rack_lint/Gemfile.lock +0 -27
- data/sandbox/itsi_sandbox_rack_lint/config.ru +0 -3
- data/sandbox/itsi_sandbox_rails/.dockerignore +0 -48
- data/sandbox/itsi_sandbox_rails/.gitattributes +0 -9
- data/sandbox/itsi_sandbox_rails/.github/dependabot.yml +0 -12
- data/sandbox/itsi_sandbox_rails/.github/workflows/ci.yml +0 -90
- data/sandbox/itsi_sandbox_rails/.gitignore +0 -35
- data/sandbox/itsi_sandbox_rails/.rubocop.yml +0 -8
- data/sandbox/itsi_sandbox_rails/.ruby-version +0 -1
- data/sandbox/itsi_sandbox_rails/Dockerfile +0 -69
- data/sandbox/itsi_sandbox_rails/Gemfile +0 -66
- data/sandbox/itsi_sandbox_rails/Gemfile.lock +0 -429
- data/sandbox/itsi_sandbox_rails/README.md +0 -24
- data/sandbox/itsi_sandbox_rails/Rakefile +0 -6
- data/sandbox/itsi_sandbox_rails/app/assets/config/manifest.js +0 -4
- data/sandbox/itsi_sandbox_rails/app/assets/images/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/app/assets/stylesheets/application.css +0 -15
- data/sandbox/itsi_sandbox_rails/app/channels/application_cable/channel.rb +0 -4
- data/sandbox/itsi_sandbox_rails/app/channels/application_cable/connection.rb +0 -4
- data/sandbox/itsi_sandbox_rails/app/controllers/application_controller.rb +0 -4
- data/sandbox/itsi_sandbox_rails/app/controllers/concerns/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/app/controllers/home_controller.rb +0 -66
- data/sandbox/itsi_sandbox_rails/app/controllers/live_controller.rb +0 -40
- data/sandbox/itsi_sandbox_rails/app/controllers/uploads_controller.rb +0 -29
- data/sandbox/itsi_sandbox_rails/app/helpers/application_helper.rb +0 -2
- data/sandbox/itsi_sandbox_rails/app/javascript/application.js +0 -3
- data/sandbox/itsi_sandbox_rails/app/javascript/controllers/application.js +0 -9
- data/sandbox/itsi_sandbox_rails/app/javascript/controllers/hello_controller.js +0 -7
- data/sandbox/itsi_sandbox_rails/app/javascript/controllers/index.js +0 -4
- data/sandbox/itsi_sandbox_rails/app/jobs/application_job.rb +0 -7
- data/sandbox/itsi_sandbox_rails/app/mailers/application_mailer.rb +0 -4
- data/sandbox/itsi_sandbox_rails/app/models/application_record.rb +0 -3
- data/sandbox/itsi_sandbox_rails/app/models/concerns/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/app/models/post.rb +0 -2
- data/sandbox/itsi_sandbox_rails/app/views/layouts/application.html.erb +0 -23
- data/sandbox/itsi_sandbox_rails/app/views/layouts/mailer.html.erb +0 -13
- data/sandbox/itsi_sandbox_rails/app/views/layouts/mailer.text.erb +0 -1
- data/sandbox/itsi_sandbox_rails/app/views/pwa/manifest.json.erb +0 -22
- data/sandbox/itsi_sandbox_rails/app/views/pwa/service-worker.js +0 -26
- data/sandbox/itsi_sandbox_rails/bin/brakeman +0 -7
- data/sandbox/itsi_sandbox_rails/bin/bundle +0 -109
- data/sandbox/itsi_sandbox_rails/bin/docker-entrypoint +0 -13
- data/sandbox/itsi_sandbox_rails/bin/importmap +0 -4
- data/sandbox/itsi_sandbox_rails/bin/rails +0 -4
- data/sandbox/itsi_sandbox_rails/bin/rake +0 -4
- data/sandbox/itsi_sandbox_rails/bin/rubocop +0 -8
- data/sandbox/itsi_sandbox_rails/bin/setup +0 -37
- data/sandbox/itsi_sandbox_rails/config/application.rb +0 -27
- data/sandbox/itsi_sandbox_rails/config/boot.rb +0 -4
- data/sandbox/itsi_sandbox_rails/config/cable.yml +0 -10
- data/sandbox/itsi_sandbox_rails/config/credentials.yml.enc +0 -1
- data/sandbox/itsi_sandbox_rails/config/database.yml +0 -30
- data/sandbox/itsi_sandbox_rails/config/environment.rb +0 -5
- data/sandbox/itsi_sandbox_rails/config/environments/development.rb +0 -82
- data/sandbox/itsi_sandbox_rails/config/environments/production.rb +0 -106
- data/sandbox/itsi_sandbox_rails/config/environments/test.rb +0 -67
- data/sandbox/itsi_sandbox_rails/config/importmap.rb +0 -7
- data/sandbox/itsi_sandbox_rails/config/initializers/assets.rb +0 -12
- data/sandbox/itsi_sandbox_rails/config/initializers/content_security_policy.rb +0 -25
- data/sandbox/itsi_sandbox_rails/config/initializers/filter_parameter_logging.rb +0 -8
- data/sandbox/itsi_sandbox_rails/config/initializers/inflections.rb +0 -16
- data/sandbox/itsi_sandbox_rails/config/initializers/permissions_policy.rb +0 -13
- data/sandbox/itsi_sandbox_rails/config/locales/en.yml +0 -31
- data/sandbox/itsi_sandbox_rails/config/puma.rb +0 -34
- data/sandbox/itsi_sandbox_rails/config/routes.rb +0 -23
- data/sandbox/itsi_sandbox_rails/config/storage.yml +0 -34
- data/sandbox/itsi_sandbox_rails/config.ru +0 -6
- data/sandbox/itsi_sandbox_rails/db/migrate/20250301041554_create_posts.rb +0 -10
- data/sandbox/itsi_sandbox_rails/db/schema.rb +0 -23
- data/sandbox/itsi_sandbox_rails/db/seeds.rb +0 -9
- data/sandbox/itsi_sandbox_rails/lib/assets/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/lib/tasks/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/log/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/public/404.html +0 -67
- data/sandbox/itsi_sandbox_rails/public/406-unsupported-browser.html +0 -66
- data/sandbox/itsi_sandbox_rails/public/422.html +0 -67
- data/sandbox/itsi_sandbox_rails/public/500.html +0 -66
- data/sandbox/itsi_sandbox_rails/public/icon.png +0 -0
- data/sandbox/itsi_sandbox_rails/public/icon.svg +0 -3
- data/sandbox/itsi_sandbox_rails/public/robots.txt +0 -1
- data/sandbox/itsi_sandbox_rails/storage/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/test/application_system_test_case.rb +0 -5
- data/sandbox/itsi_sandbox_rails/test/channels/application_cable/connection_test.rb +0 -13
- data/sandbox/itsi_sandbox_rails/test/controllers/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/test/fixtures/files/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/test/helpers/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/test/integration/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/test/mailers/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/test/models/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/test/system/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/test/test_helper.rb +0 -15
- data/sandbox/itsi_sandbox_rails/tmp/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/tmp/pids/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/tmp/storage/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/vendor/.keep +0 -0
- data/sandbox/itsi_sandbox_rails/vendor/javascript/.keep +0 -0
- data/sandbox/itsi_sandbox_roda/Gemfile +0 -5
- data/sandbox/itsi_sandbox_roda/Gemfile.lock +0 -37
- data/sandbox/itsi_sandbox_roda/config.ru +0 -39
- data/sandbox/itsi_sinatra/Gemfile +0 -9
- data/sandbox/itsi_sinatra/Gemfile.lock +0 -81
- data/sandbox/itsi_sinatra/app.rb +0 -8
- data/sandbox/pebble/docker-compose.yml +0 -11
- data/sandbox/static_files/.env +0 -1
- data/sandbox/static_files/404.html +0 -25
- data/sandbox/static_files/_DSC0102.NEF.jpg +0 -0
- data/sandbox/static_files/about.html +0 -68
- data/sandbox/static_files/tiny.html +0 -1
- data/sandbox/static_files/writebook.zip +0 -0
data/docs/hugo.yaml
CHANGED
@@ -1,25 +1,21 @@
|
|
1
1
|
# Hugo configuration file
|
2
|
-
title:
|
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: "../
|
10
|
-
target: "content/
|
11
|
-
includeFiles: ["
|
12
|
-
|
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:
|
36
|
-
pageRef: /
|
31
|
+
- name: Features
|
32
|
+
pageRef: /features
|
37
33
|
weight: 1
|
38
34
|
- name: About
|
39
|
-
pageRef: /
|
35
|
+
pageRef: /
|
40
36
|
weight: 2
|
41
|
-
- name:
|
42
|
-
|
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/
|
46
|
+
url: "https://github.com/wouterken/itsi"
|
54
47
|
params:
|
55
48
|
icon: github
|
56
|
-
|
57
|
-
|
58
|
-
|
49
|
+
|
50
|
+
sidebar:
|
51
|
+
- name: More
|
59
52
|
params:
|
60
|
-
|
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:
|
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.
|
data/gems/scheduler/Cargo.lock
CHANGED
@@ -57,14 +57,14 @@ dependencies = [
|
|
57
57
|
"regex",
|
58
58
|
"rustc-hash",
|
59
59
|
"shlex",
|
60
|
-
"syn 2.0.
|
60
|
+
"syn 2.0.100",
|
61
61
|
]
|
62
62
|
|
63
63
|
[[package]]
|
64
64
|
name = "bitflags"
|
65
|
-
version = "2.
|
65
|
+
version = "2.9.0"
|
66
66
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
67
|
-
checksum = "
|
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.
|
77
|
+
version = "1.2.19"
|
78
78
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
79
|
-
checksum = "
|
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.
|
118
|
+
version = "0.5.15"
|
119
119
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
120
|
-
checksum = "
|
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.
|
133
|
+
version = "0.4.0"
|
134
134
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
135
|
-
checksum = "
|
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.
|
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.
|
210
|
+
version = "1.0.15"
|
211
211
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
212
|
-
checksum = "
|
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.
|
289
|
+
version = "0.2.171"
|
290
290
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
291
|
-
checksum = "
|
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.
|
315
|
+
version = "0.4.27"
|
316
316
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
317
|
-
checksum = "
|
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.
|
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.
|
416
|
+
version = "1.21.3"
|
417
417
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
418
|
-
checksum = "
|
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.
|
473
|
+
version = "1.0.94"
|
474
474
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
475
|
-
checksum = "
|
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.
|
482
|
+
version = "1.0.40"
|
483
483
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
484
|
-
checksum = "
|
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.
|
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.
|
534
|
+
version = "0.5.11"
|
535
535
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
536
|
-
checksum = "
|
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.
|
613
|
+
version = "1.0.20"
|
614
614
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
615
|
-
checksum = "
|
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.
|
625
|
+
version = "0.3.6"
|
626
626
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
627
|
-
checksum = "
|
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.
|
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.
|
684
|
+
version = "1.15.0"
|
685
685
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
686
|
-
checksum = "
|
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.
|
701
|
+
version = "2.0.100"
|
702
702
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
703
|
-
checksum = "
|
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.
|
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.
|
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.
|
762
|
+
version = "0.3.41"
|
763
763
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
764
|
-
checksum = "
|
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.
|
777
|
+
version = "0.1.4"
|
778
778
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
779
|
-
checksum = "
|
779
|
+
checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
|
780
780
|
|
781
781
|
[[package]]
|
782
782
|
name = "time-macros"
|
783
|
-
version = "0.2.
|
783
|
+
version = "0.2.22"
|
784
784
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
785
|
-
checksum = "
|
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.
|
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.
|
879
|
+
version = "1.0.18"
|
880
880
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
881
|
-
checksum = "
|
881
|
+
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
|
882
882
|
|
883
883
|
[[package]]
|
884
884
|
name = "unicode-xid"
|
data/gems/scheduler/README.md
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
21
|
+
### Primer on Fiber Schedulers
|
15
22
|
|
16
|
-
|
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
|
-
|
19
|
-
|
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
|
-
|
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
|
-
|
35
|
+
### 1 - Install Itsi Scheduler
|
36
|
+
|
37
|
+
**Prerequisites**
|
29
38
|
|
30
|
-
|
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
|
-
|
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
|
-
|
49
|
+
```bash
|
50
|
+
gem install itsi-scheduler
|
51
|
+
```
|
37
52
|
|
38
|
-
## Contributing
|
39
53
|
|
40
|
-
|
54
|
+
### 2 - Use Itsi Scheduler
|
41
55
|
|
42
|
-
|
56
|
+
Great! You now have Itsi Scheduler installed.
|
57
|
+
Now you can run code like this:
|
43
58
|
|
44
|
-
|
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
|
-
|
74
|
+
puts results.map(&:inspect)
|
75
|
+
```
|
47
76
|
|
48
|
-
|
77
|
+
to run many blocking operations simultaneously all while occupying only a single Ruby thread!
|
Binary file
|