itsi-scheduler 0.2.22-aarch64-linux

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 (149) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +8 -0
  3. data/Cargo.lock +997 -0
  4. data/Cargo.toml +7 -0
  5. data/Rakefile +39 -0
  6. data/ext/itsi_acme/Cargo.toml +86 -0
  7. data/ext/itsi_acme/examples/high_level.rs +63 -0
  8. data/ext/itsi_acme/examples/high_level_warp.rs +52 -0
  9. data/ext/itsi_acme/examples/low_level.rs +87 -0
  10. data/ext/itsi_acme/examples/low_level_axum.rs +66 -0
  11. data/ext/itsi_acme/src/acceptor.rs +81 -0
  12. data/ext/itsi_acme/src/acme.rs +354 -0
  13. data/ext/itsi_acme/src/axum.rs +86 -0
  14. data/ext/itsi_acme/src/cache.rs +39 -0
  15. data/ext/itsi_acme/src/caches/boxed.rs +80 -0
  16. data/ext/itsi_acme/src/caches/composite.rs +69 -0
  17. data/ext/itsi_acme/src/caches/dir.rs +106 -0
  18. data/ext/itsi_acme/src/caches/mod.rs +11 -0
  19. data/ext/itsi_acme/src/caches/no.rs +78 -0
  20. data/ext/itsi_acme/src/caches/test.rs +136 -0
  21. data/ext/itsi_acme/src/config.rs +172 -0
  22. data/ext/itsi_acme/src/https_helper.rs +69 -0
  23. data/ext/itsi_acme/src/incoming.rs +142 -0
  24. data/ext/itsi_acme/src/jose.rs +161 -0
  25. data/ext/itsi_acme/src/lib.rs +142 -0
  26. data/ext/itsi_acme/src/resolver.rs +59 -0
  27. data/ext/itsi_acme/src/state.rs +424 -0
  28. data/ext/itsi_error/Cargo.lock +368 -0
  29. data/ext/itsi_error/Cargo.toml +12 -0
  30. data/ext/itsi_error/src/lib.rs +140 -0
  31. data/ext/itsi_instrument_entry/Cargo.toml +15 -0
  32. data/ext/itsi_instrument_entry/src/lib.rs +31 -0
  33. data/ext/itsi_rb_helpers/Cargo.lock +355 -0
  34. data/ext/itsi_rb_helpers/Cargo.toml +11 -0
  35. data/ext/itsi_rb_helpers/src/heap_value.rs +139 -0
  36. data/ext/itsi_rb_helpers/src/lib.rs +232 -0
  37. data/ext/itsi_scheduler/Cargo.toml +24 -0
  38. data/ext/itsi_scheduler/extconf.rb +11 -0
  39. data/ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs +56 -0
  40. data/ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs +44 -0
  41. data/ext/itsi_scheduler/src/itsi_scheduler/timer.rs +44 -0
  42. data/ext/itsi_scheduler/src/itsi_scheduler.rs +320 -0
  43. data/ext/itsi_scheduler/src/lib.rs +39 -0
  44. data/ext/itsi_server/Cargo.lock +2956 -0
  45. data/ext/itsi_server/Cargo.toml +94 -0
  46. data/ext/itsi_server/src/default_responses/mod.rs +14 -0
  47. data/ext/itsi_server/src/env.rs +43 -0
  48. data/ext/itsi_server/src/lib.rs +154 -0
  49. data/ext/itsi_server/src/prelude.rs +2 -0
  50. data/ext/itsi_server/src/ruby_types/itsi_body_proxy/big_bytes.rs +116 -0
  51. data/ext/itsi_server/src/ruby_types/itsi_body_proxy/mod.rs +149 -0
  52. data/ext/itsi_server/src/ruby_types/itsi_grpc_call.rs +346 -0
  53. data/ext/itsi_server/src/ruby_types/itsi_grpc_response_stream/mod.rs +265 -0
  54. data/ext/itsi_server/src/ruby_types/itsi_http_request.rs +399 -0
  55. data/ext/itsi_server/src/ruby_types/itsi_http_response.rs +447 -0
  56. data/ext/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +545 -0
  57. data/ext/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +650 -0
  58. data/ext/itsi_server/src/ruby_types/itsi_server.rs +102 -0
  59. data/ext/itsi_server/src/ruby_types/mod.rs +48 -0
  60. data/ext/itsi_server/src/server/binds/bind.rs +204 -0
  61. data/ext/itsi_server/src/server/binds/bind_protocol.rs +37 -0
  62. data/ext/itsi_server/src/server/binds/listener.rs +485 -0
  63. data/ext/itsi_server/src/server/binds/mod.rs +4 -0
  64. data/ext/itsi_server/src/server/binds/tls/locked_dir_cache.rs +132 -0
  65. data/ext/itsi_server/src/server/binds/tls.rs +278 -0
  66. data/ext/itsi_server/src/server/byte_frame.rs +32 -0
  67. data/ext/itsi_server/src/server/frame_stream.rs +143 -0
  68. data/ext/itsi_server/src/server/http_message_types.rs +230 -0
  69. data/ext/itsi_server/src/server/io_stream.rs +128 -0
  70. data/ext/itsi_server/src/server/lifecycle_event.rs +12 -0
  71. data/ext/itsi_server/src/server/middleware_stack/middleware.rs +170 -0
  72. data/ext/itsi_server/src/server/middleware_stack/middlewares/allow_list.rs +63 -0
  73. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_api_key.rs +94 -0
  74. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +93 -0
  75. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +343 -0
  76. data/ext/itsi_server/src/server/middleware_stack/middlewares/cache_control.rs +151 -0
  77. data/ext/itsi_server/src/server/middleware_stack/middlewares/compression.rs +329 -0
  78. data/ext/itsi_server/src/server/middleware_stack/middlewares/cors.rs +300 -0
  79. data/ext/itsi_server/src/server/middleware_stack/middlewares/csp.rs +193 -0
  80. data/ext/itsi_server/src/server/middleware_stack/middlewares/deny_list.rs +64 -0
  81. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +188 -0
  82. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +168 -0
  83. data/ext/itsi_server/src/server/middleware_stack/middlewares/etag.rs +183 -0
  84. data/ext/itsi_server/src/server/middleware_stack/middlewares/header_interpretation.rs +82 -0
  85. data/ext/itsi_server/src/server/middleware_stack/middlewares/intrusion_protection.rs +209 -0
  86. data/ext/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +133 -0
  87. data/ext/itsi_server/src/server/middleware_stack/middlewares/max_body.rs +47 -0
  88. data/ext/itsi_server/src/server/middleware_stack/middlewares/mod.rs +122 -0
  89. data/ext/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +407 -0
  90. data/ext/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +155 -0
  91. data/ext/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +54 -0
  92. data/ext/itsi_server/src/server/middleware_stack/middlewares/request_headers.rs +54 -0
  93. data/ext/itsi_server/src/server/middleware_stack/middlewares/response_headers.rs +51 -0
  94. data/ext/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +138 -0
  95. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +269 -0
  96. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_response.rs +62 -0
  97. data/ext/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs +218 -0
  98. data/ext/itsi_server/src/server/middleware_stack/middlewares/token_source.rs +31 -0
  99. data/ext/itsi_server/src/server/middleware_stack/mod.rs +381 -0
  100. data/ext/itsi_server/src/server/mod.rs +14 -0
  101. data/ext/itsi_server/src/server/process_worker.rs +247 -0
  102. data/ext/itsi_server/src/server/redirect_type.rs +26 -0
  103. data/ext/itsi_server/src/server/request_job.rs +11 -0
  104. data/ext/itsi_server/src/server/serve_strategy/acceptor.rs +100 -0
  105. data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +411 -0
  106. data/ext/itsi_server/src/server/serve_strategy/mod.rs +31 -0
  107. data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +449 -0
  108. data/ext/itsi_server/src/server/signal.rs +129 -0
  109. data/ext/itsi_server/src/server/size_limited_incoming.rs +107 -0
  110. data/ext/itsi_server/src/server/thread_worker.rs +504 -0
  111. data/ext/itsi_server/src/services/cache_store.rs +74 -0
  112. data/ext/itsi_server/src/services/itsi_http_service.rs +270 -0
  113. data/ext/itsi_server/src/services/mime_types.rs +2896 -0
  114. data/ext/itsi_server/src/services/mod.rs +6 -0
  115. data/ext/itsi_server/src/services/password_hasher.rs +89 -0
  116. data/ext/itsi_server/src/services/rate_limiter.rs +609 -0
  117. data/ext/itsi_server/src/services/static_file_server.rs +1400 -0
  118. data/ext/itsi_tracing/Cargo.lock +274 -0
  119. data/ext/itsi_tracing/Cargo.toml +17 -0
  120. data/ext/itsi_tracing/src/lib.rs +370 -0
  121. data/itsi-scheduler-100.png +0 -0
  122. data/lib/itsi/schedule_refinement.rb +96 -0
  123. data/lib/itsi/scheduler/3.1/itsi_scheduler.so +0 -0
  124. data/lib/itsi/scheduler/3.2/itsi_scheduler.so +0 -0
  125. data/lib/itsi/scheduler/3.3/itsi_scheduler.so +0 -0
  126. data/lib/itsi/scheduler/3.4/itsi_scheduler.so +0 -0
  127. data/lib/itsi/scheduler/4.0/itsi_scheduler.so +0 -0
  128. data/lib/itsi/scheduler/native_extension.rb +34 -0
  129. data/lib/itsi/scheduler/version.rb +7 -0
  130. data/lib/itsi/scheduler.rb +153 -0
  131. data/vendor/rb-sys-build/.cargo-ok +1 -0
  132. data/vendor/rb-sys-build/.cargo_vcs_info.json +6 -0
  133. data/vendor/rb-sys-build/Cargo.lock +294 -0
  134. data/vendor/rb-sys-build/Cargo.toml +71 -0
  135. data/vendor/rb-sys-build/Cargo.toml.orig +32 -0
  136. data/vendor/rb-sys-build/LICENSE-APACHE +190 -0
  137. data/vendor/rb-sys-build/LICENSE-MIT +21 -0
  138. data/vendor/rb-sys-build/src/bindings/sanitizer.rs +185 -0
  139. data/vendor/rb-sys-build/src/bindings/stable_api.rs +247 -0
  140. data/vendor/rb-sys-build/src/bindings/wrapper.h +71 -0
  141. data/vendor/rb-sys-build/src/bindings.rs +280 -0
  142. data/vendor/rb-sys-build/src/cc.rs +421 -0
  143. data/vendor/rb-sys-build/src/lib.rs +12 -0
  144. data/vendor/rb-sys-build/src/rb_config/flags.rs +101 -0
  145. data/vendor/rb-sys-build/src/rb_config/library.rs +132 -0
  146. data/vendor/rb-sys-build/src/rb_config/search_path.rs +57 -0
  147. data/vendor/rb-sys-build/src/rb_config.rs +906 -0
  148. data/vendor/rb-sys-build/src/utils.rs +53 -0
  149. metadata +210 -0
@@ -0,0 +1,96 @@
1
+ module Itsi
2
+ module ScheduleRefinement
3
+ # Useful helper functions for using cooperative multi-tasking in Ruby.
4
+ # Opt-in to usage by executing `using Itsi::ScheduleRefinement` in any places
5
+ # you intend to use it.
6
+ #
7
+ # After this you can do things like the following
8
+ #
9
+ # 1. Launch batch concurrent fire-and-forget jobs.
10
+ # * 100.times.schedule_each{ sleep 0.1 }
11
+ #
12
+ # 2. Launch batch concurrent transofmrs
13
+ # See how `schedule_map` retains ordering, despite sleeping for randomized amount of time.
14
+ #
15
+ # * 100.times.schedule_map{|i| sleep Random.rand(0.0..0.05); i }
16
+ #
17
+ # 3. Manually organize fibers to run concurrently.
18
+ #
19
+ # require "net/http"
20
+ # schedule do
21
+ # req1, req2 = Queue.new, Queue.new
22
+ # schedule do
23
+ # puts "Making request 1"
24
+ # req1 << Net::HTTP.get(URI("http://httpbin.org/get"))
25
+ # puts "Finished request 1"
26
+ # end
27
+ #
28
+ # schedule do
29
+ # puts "Making request 2"
30
+ # req2 << Net::HTTP.get(URI("http://httpbin.org/get"))
31
+ # puts "Finished request 2"
32
+ # end
33
+ #
34
+ # res1, res2 = [req1, req2].map(&:pop)
35
+ # end
36
+ refine Kernel do
37
+ private def schedule(&blk) # rubocop:disable Metrics/MethodLength
38
+ return unless blk
39
+
40
+ if Fiber.scheduler.nil?
41
+ result = nil
42
+ Thread.new do
43
+ Fiber.set_scheduler Itsi::Scheduler.new
44
+ Fiber.schedule { result = blk.call }
45
+ end.join
46
+ result
47
+ else
48
+ Fiber.schedule(&blk)
49
+ end
50
+ end
51
+ end
52
+
53
+ module EnumerableExtensions
54
+ using ScheduleRefinement
55
+ def schedule_each(&block)
56
+ enum = Enumerator.new do |y|
57
+ schedule do
58
+ each { |item| schedule{ y.yield(item) } }
59
+ end
60
+ end
61
+
62
+ block_given? ? enum.each(&block) : enum.each
63
+ end
64
+
65
+ def schedule_map(&block)
66
+ return Enumerator.new do |y|
67
+ schedule do
68
+ each_with_index.each_with_object([]) do |(item, index), agg|
69
+ schedule do
70
+ agg[index] = (y << item)
71
+ end
72
+ end
73
+ end
74
+ end.map unless block_given?
75
+ schedule do
76
+ each_with_index.each_with_object([]) do |(item, index), agg|
77
+ schedule do
78
+ agg[index] = block[item]
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+
86
+ refine Enumerator do
87
+ define_method(:schedule_each, EnumerableExtensions.instance_method(:schedule_each))
88
+ define_method(:schedule_map, EnumerableExtensions.instance_method(:schedule_map))
89
+ end
90
+
91
+ refine Enumerable do
92
+ define_method(:schedule_each, EnumerableExtensions.instance_method(:schedule_each))
93
+ define_method(:schedule_map, EnumerableExtensions.instance_method(:schedule_map))
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rbconfig"
4
+
5
+ module Itsi
6
+ class Scheduler
7
+ module NativeExtension
8
+ module_function
9
+
10
+ def require!
11
+ ruby_abi = RUBY_VERSION[/\A\d+\.\d+/]
12
+
13
+ if ruby_abi && versioned_binary_present?(ruby_abi)
14
+ begin
15
+ require_relative "#{ruby_abi}/itsi_scheduler"
16
+ return
17
+ rescue LoadError
18
+ # Fall back to the source-built extension when a packaged binary
19
+ # exists but cannot be loaded on this machine.
20
+ end
21
+ end
22
+
23
+ require_relative "itsi_scheduler"
24
+ end
25
+
26
+ def versioned_binary_present?(ruby_abi)
27
+ binary_path = File.join(__dir__, ruby_abi, "itsi_scheduler.#{RbConfig::CONFIG.fetch("DLEXT")}")
28
+ File.exist?(binary_path)
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ Itsi::Scheduler::NativeExtension.require!
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Itsi
4
+ class Scheduler
5
+ VERSION = "0.2.22"
6
+ end
7
+ end
@@ -0,0 +1,153 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "scheduler/version"
4
+ require_relative "scheduler/native_extension"
5
+ require_relative "schedule_refinement"
6
+
7
+ module Itsi
8
+ class Scheduler
9
+ class Error < StandardError; end
10
+
11
+ def self.resume_token
12
+ @resume_token ||= 0
13
+ @resume_token += 1
14
+ end
15
+
16
+ def initialize
17
+ @join_waiters = {}.compare_by_identity
18
+ @token_map = {}.compare_by_identity
19
+ @resume_tokens = {}.compare_by_identity
20
+ @unblocked = [[], []]
21
+ @unblock_idx = 0
22
+ @unblocked_mux = Mutex.new
23
+ @resume_fiber = method(:resume_fiber).to_proc
24
+ @resume_fiber_with_readiness = method(:resume_fiber_with_readiness).to_proc
25
+ @resume_blocked = method(:resume_blocked).to_proc
26
+ end
27
+
28
+ def block(_, timeout, fiber = Fiber.current, token = Scheduler.resume_token)
29
+ @join_waiters[fiber] = true
30
+
31
+ start_timer(timeout, token) if timeout
32
+ @resume_tokens[token] = fiber
33
+ @token_map[fiber] = token
34
+ Fiber.yield
35
+ ensure
36
+ @resume_tokens.delete(token)
37
+ @token_map.delete(fiber)
38
+ @join_waiters.delete(fiber)
39
+ end
40
+
41
+ # Register an IO waiter.
42
+ # This will get resumed by our scheduler inside the call to
43
+ # fetch_events.
44
+ def io_wait(io, events, duration)
45
+ fiber = Fiber.current
46
+ token = Scheduler.resume_token
47
+ readiness = register_io_wait(io.fileno, events, duration, token)
48
+ readiness ||= block(nil, duration, fiber, token)
49
+ clear_timer(token)
50
+ readiness
51
+ end
52
+
53
+ def unblock(_blocker, fiber)
54
+ @unblocked_mux.synchronize do
55
+ @unblocked[@unblock_idx] << fiber
56
+ end
57
+ wake
58
+ end
59
+
60
+ def kernel_sleep(duration)
61
+ block nil, duration
62
+ end
63
+
64
+ def tick
65
+ events = fetch_due_events
66
+ timers = fetch_due_timers
67
+ unblocked = switch_unblock_batch
68
+ events&.each(&@resume_fiber_with_readiness)
69
+ unblocked.each(&@resume_blocked)
70
+ unblocked.clear
71
+ timers&.each(&@resume_fiber)
72
+ end
73
+
74
+ def resume_fiber(token)
75
+ if (fiber = @resume_tokens.delete(token))
76
+ fiber.resume
77
+ end
78
+ rescue StandardError => e
79
+ warn "Fiber #{fiber} terminated on exception: #{e.message}"
80
+ end
81
+
82
+ def resume_fiber_with_readiness((token, readiness))
83
+ if (fiber = @resume_tokens.delete(token))
84
+ fiber.resume(readiness)
85
+ end
86
+ rescue StandardError => e
87
+ warn "Fiber #{fiber} terminated on exception: #{e.message}"
88
+ end
89
+
90
+ def resume_blocked(fiber)
91
+ if (token = @token_map[fiber])
92
+ resume_fiber(token)
93
+ elsif fiber.alive?
94
+ fiber.resume
95
+ end
96
+ end
97
+
98
+ def switch_unblock_batch
99
+ @unblocked_mux.synchronize do
100
+ current = @unblocked[@unblock_idx]
101
+ @unblock_idx = (@unblock_idx + 1) % 2
102
+ current
103
+ end
104
+ end
105
+
106
+ # Yields upwards to the scheduler, with an intention to
107
+ # resume the fiber that yielded ASAP.
108
+ def yield
109
+ kernel_sleep(0) if work?
110
+ end
111
+
112
+ # Keep running until we've got no timers we're awaiting, no pending IO, no temporary yields,
113
+ # no pending unblocks.
114
+ def work?
115
+ !@unblocked[@unblock_idx].empty? || !@join_waiters.empty? || has_pending_io?
116
+ end
117
+
118
+ # Run until no more work needs doing.
119
+ def run
120
+ tick while work?
121
+ debug "Exit Scheduler"
122
+ end
123
+
124
+ # Hook invoked at the end of the thread.
125
+ # Will start our scheduler's Reactor.
126
+ def close
127
+ run
128
+ ensure
129
+ @closed ||= true
130
+ freeze
131
+ end
132
+
133
+ # Need to defer to Process::Status rather than our extension
134
+ # as we don't have a means of creating our own Process::Status.
135
+ def process_wait(pid, flags)
136
+ result = nil
137
+ thread = Thread.new do
138
+ result = Process::Status.wait(pid, flags)
139
+ end
140
+ thread.join
141
+ result
142
+ end
143
+
144
+ def closed?
145
+ @closed
146
+ end
147
+
148
+ # Spin up a new fiber and immediately resume it.
149
+ def fiber(&blk)
150
+ Fiber.new(blocking: false, &blk).tap(&:resume)
151
+ end
152
+ end
153
+ end
@@ -0,0 +1 @@
1
+ {"v":1}
@@ -0,0 +1,6 @@
1
+ {
2
+ "git": {
3
+ "sha1": "8b8369748af0e3fa80d20e11b38b423cb2009bdf"
4
+ },
5
+ "path_in_vcs": "crates/rb-sys-build"
6
+ }
@@ -0,0 +1,294 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 3
4
+
5
+ [[package]]
6
+ name = "aho-corasick"
7
+ version = "1.1.3"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
10
+ dependencies = [
11
+ "memchr",
12
+ ]
13
+
14
+ [[package]]
15
+ name = "bindgen"
16
+ version = "0.69.4"
17
+ source = "registry+https://github.com/rust-lang/crates.io-index"
18
+ checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
19
+ dependencies = [
20
+ "bitflags",
21
+ "cexpr",
22
+ "clang-sys",
23
+ "itertools",
24
+ "lazy_static",
25
+ "lazycell",
26
+ "proc-macro2",
27
+ "quote",
28
+ "regex",
29
+ "rustc-hash",
30
+ "shlex",
31
+ "syn",
32
+ ]
33
+
34
+ [[package]]
35
+ name = "bitflags"
36
+ version = "2.6.0"
37
+ source = "registry+https://github.com/rust-lang/crates.io-index"
38
+ checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
39
+
40
+ [[package]]
41
+ name = "cexpr"
42
+ version = "0.6.0"
43
+ source = "registry+https://github.com/rust-lang/crates.io-index"
44
+ checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
45
+ dependencies = [
46
+ "nom",
47
+ ]
48
+
49
+ [[package]]
50
+ name = "cfg-if"
51
+ version = "1.0.0"
52
+ source = "registry+https://github.com/rust-lang/crates.io-index"
53
+ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
54
+
55
+ [[package]]
56
+ name = "clang-sys"
57
+ version = "1.8.1"
58
+ source = "registry+https://github.com/rust-lang/crates.io-index"
59
+ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
60
+ dependencies = [
61
+ "glob",
62
+ "libc",
63
+ "libloading",
64
+ ]
65
+
66
+ [[package]]
67
+ name = "either"
68
+ version = "1.13.0"
69
+ source = "registry+https://github.com/rust-lang/crates.io-index"
70
+ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
71
+
72
+ [[package]]
73
+ name = "glob"
74
+ version = "0.3.1"
75
+ source = "registry+https://github.com/rust-lang/crates.io-index"
76
+ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
77
+
78
+ [[package]]
79
+ name = "itertools"
80
+ version = "0.12.1"
81
+ source = "registry+https://github.com/rust-lang/crates.io-index"
82
+ checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
83
+ dependencies = [
84
+ "either",
85
+ ]
86
+
87
+ [[package]]
88
+ name = "lazy_static"
89
+ version = "1.5.0"
90
+ source = "registry+https://github.com/rust-lang/crates.io-index"
91
+ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
92
+
93
+ [[package]]
94
+ name = "lazycell"
95
+ version = "1.3.0"
96
+ source = "registry+https://github.com/rust-lang/crates.io-index"
97
+ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
98
+
99
+ [[package]]
100
+ name = "libc"
101
+ version = "0.2.155"
102
+ source = "registry+https://github.com/rust-lang/crates.io-index"
103
+ checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
104
+
105
+ [[package]]
106
+ name = "libloading"
107
+ version = "0.8.5"
108
+ source = "registry+https://github.com/rust-lang/crates.io-index"
109
+ checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
110
+ dependencies = [
111
+ "cfg-if",
112
+ "windows-targets",
113
+ ]
114
+
115
+ [[package]]
116
+ name = "memchr"
117
+ version = "2.7.4"
118
+ source = "registry+https://github.com/rust-lang/crates.io-index"
119
+ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
120
+
121
+ [[package]]
122
+ name = "minimal-lexical"
123
+ version = "0.2.1"
124
+ source = "registry+https://github.com/rust-lang/crates.io-index"
125
+ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
126
+
127
+ [[package]]
128
+ name = "nom"
129
+ version = "7.1.3"
130
+ source = "registry+https://github.com/rust-lang/crates.io-index"
131
+ checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
132
+ dependencies = [
133
+ "memchr",
134
+ "minimal-lexical",
135
+ ]
136
+
137
+ [[package]]
138
+ name = "proc-macro2"
139
+ version = "1.0.103"
140
+ source = "registry+https://github.com/rust-lang/crates.io-index"
141
+ checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
142
+ dependencies = [
143
+ "unicode-ident",
144
+ ]
145
+
146
+ [[package]]
147
+ name = "quote"
148
+ version = "1.0.42"
149
+ source = "registry+https://github.com/rust-lang/crates.io-index"
150
+ checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
151
+ dependencies = [
152
+ "proc-macro2",
153
+ ]
154
+
155
+ [[package]]
156
+ name = "rb-sys-build"
157
+ version = "0.9.124"
158
+ dependencies = [
159
+ "bindgen",
160
+ "lazy_static",
161
+ "proc-macro2",
162
+ "quote",
163
+ "regex",
164
+ "shell-words",
165
+ "syn",
166
+ ]
167
+
168
+ [[package]]
169
+ name = "regex"
170
+ version = "1.12.2"
171
+ source = "registry+https://github.com/rust-lang/crates.io-index"
172
+ checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
173
+ dependencies = [
174
+ "aho-corasick",
175
+ "memchr",
176
+ "regex-automata",
177
+ "regex-syntax",
178
+ ]
179
+
180
+ [[package]]
181
+ name = "regex-automata"
182
+ version = "0.4.13"
183
+ source = "registry+https://github.com/rust-lang/crates.io-index"
184
+ checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
185
+ dependencies = [
186
+ "aho-corasick",
187
+ "memchr",
188
+ "regex-syntax",
189
+ ]
190
+
191
+ [[package]]
192
+ name = "regex-syntax"
193
+ version = "0.8.5"
194
+ source = "registry+https://github.com/rust-lang/crates.io-index"
195
+ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
196
+
197
+ [[package]]
198
+ name = "rustc-hash"
199
+ version = "1.1.0"
200
+ source = "registry+https://github.com/rust-lang/crates.io-index"
201
+ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
202
+
203
+ [[package]]
204
+ name = "shell-words"
205
+ version = "1.1.0"
206
+ source = "registry+https://github.com/rust-lang/crates.io-index"
207
+ checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
208
+
209
+ [[package]]
210
+ name = "shlex"
211
+ version = "1.3.0"
212
+ source = "registry+https://github.com/rust-lang/crates.io-index"
213
+ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
214
+
215
+ [[package]]
216
+ name = "syn"
217
+ version = "2.0.111"
218
+ source = "registry+https://github.com/rust-lang/crates.io-index"
219
+ checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
220
+ dependencies = [
221
+ "proc-macro2",
222
+ "quote",
223
+ "unicode-ident",
224
+ ]
225
+
226
+ [[package]]
227
+ name = "unicode-ident"
228
+ version = "1.0.12"
229
+ source = "registry+https://github.com/rust-lang/crates.io-index"
230
+ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
231
+
232
+ [[package]]
233
+ name = "windows-targets"
234
+ version = "0.52.6"
235
+ source = "registry+https://github.com/rust-lang/crates.io-index"
236
+ checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
237
+ dependencies = [
238
+ "windows_aarch64_gnullvm",
239
+ "windows_aarch64_msvc",
240
+ "windows_i686_gnu",
241
+ "windows_i686_gnullvm",
242
+ "windows_i686_msvc",
243
+ "windows_x86_64_gnu",
244
+ "windows_x86_64_gnullvm",
245
+ "windows_x86_64_msvc",
246
+ ]
247
+
248
+ [[package]]
249
+ name = "windows_aarch64_gnullvm"
250
+ version = "0.52.6"
251
+ source = "registry+https://github.com/rust-lang/crates.io-index"
252
+ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
253
+
254
+ [[package]]
255
+ name = "windows_aarch64_msvc"
256
+ version = "0.52.6"
257
+ source = "registry+https://github.com/rust-lang/crates.io-index"
258
+ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
259
+
260
+ [[package]]
261
+ name = "windows_i686_gnu"
262
+ version = "0.52.6"
263
+ source = "registry+https://github.com/rust-lang/crates.io-index"
264
+ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
265
+
266
+ [[package]]
267
+ name = "windows_i686_gnullvm"
268
+ version = "0.52.6"
269
+ source = "registry+https://github.com/rust-lang/crates.io-index"
270
+ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
271
+
272
+ [[package]]
273
+ name = "windows_i686_msvc"
274
+ version = "0.52.6"
275
+ source = "registry+https://github.com/rust-lang/crates.io-index"
276
+ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
277
+
278
+ [[package]]
279
+ name = "windows_x86_64_gnu"
280
+ version = "0.52.6"
281
+ source = "registry+https://github.com/rust-lang/crates.io-index"
282
+ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
283
+
284
+ [[package]]
285
+ name = "windows_x86_64_gnullvm"
286
+ version = "0.52.6"
287
+ source = "registry+https://github.com/rust-lang/crates.io-index"
288
+ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
289
+
290
+ [[package]]
291
+ name = "windows_x86_64_msvc"
292
+ version = "0.52.6"
293
+ source = "registry+https://github.com/rust-lang/crates.io-index"
294
+ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
@@ -0,0 +1,71 @@
1
+ # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
2
+ #
3
+ # When uploading crates to the registry Cargo will automatically
4
+ # "normalize" Cargo.toml files for maximal compatibility
5
+ # with all versions of Cargo and also rewrite `path` dependencies
6
+ # to registry (e.g., crates.io) dependencies.
7
+ #
8
+ # If you are reading this file be aware that the original Cargo.toml
9
+ # will likely look very different (and much more reasonable).
10
+ # See Cargo.toml.orig for the original contents.
11
+
12
+ [package]
13
+ edition = "2018"
14
+ rust-version = "1.71"
15
+ name = "rb-sys-build"
16
+ version = "0.9.124"
17
+ build = false
18
+ autolib = false
19
+ autobins = false
20
+ autoexamples = false
21
+ autotests = false
22
+ autobenches = false
23
+ description = "Build system for rb-sys"
24
+ homepage = "https://github.com/oxidize-rb/rb-sys"
25
+ readme = false
26
+ license = "MIT OR Apache-2.0"
27
+ repository = "https://github.com/oxidize-rb/rb-sys"
28
+
29
+ [features]
30
+ bindgen-deprecated-types = []
31
+ bindgen-enable-function-attribute-detection = []
32
+ bindgen-impl-debug = []
33
+ bindgen-layout-tests = []
34
+ bindgen-rbimpls = []
35
+ bindgen-return-const-encoding-pointers = []
36
+ bindgen-sizet-is-usize = []
37
+ default = []
38
+
39
+ [lib]
40
+ name = "rb_sys_build"
41
+ path = "src/lib.rs"
42
+ doctest = false
43
+ bench = false
44
+
45
+ [dependencies.bindgen]
46
+ version = "0.72"
47
+ features = ["runtime"]
48
+ default-features = false
49
+
50
+ [dependencies.lazy_static]
51
+ version = "1.4.0"
52
+
53
+ [dependencies.proc-macro2]
54
+ version = "1.0"
55
+
56
+ [dependencies.quote]
57
+ version = "1.0"
58
+
59
+ [dependencies.regex]
60
+ version = "1"
61
+
62
+ [dependencies.shell-words]
63
+ version = "1.1"
64
+
65
+ [dependencies.syn]
66
+ version = "2.0"
67
+ features = [
68
+ "parsing",
69
+ "full",
70
+ "extra-traits",
71
+ ]