farce 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +91 -0
  3. data/README.md +117 -1451
  4. data/docs/compatibility.md +74 -0
  5. data/docs/concurrency.md +151 -0
  6. data/docs/data-structures.md +313 -0
  7. data/docs/installation.md +63 -0
  8. data/docs/integrations.md +124 -0
  9. data/docs/introduction.md +266 -0
  10. data/docs/modes.md +8 -5
  11. data/docs/scheduling.md +176 -0
  12. data/docs/scopes.md +3 -1
  13. data/docs/sharing.md +211 -0
  14. data/docs/shims.md +144 -0
  15. data/docs/utilities.md +93 -0
  16. data/docs/variants-and-scopes.md +92 -0
  17. data/docs/variants.md +18 -0
  18. data/lib/farce/abstract/executor.rb +130 -0
  19. data/lib/farce/abstract/flag.rb +6 -0
  20. data/lib/farce/abstract/pool.rb +334 -0
  21. data/lib/farce/abstract/scheduler.rb +539 -93
  22. data/lib/farce/backports.rb +274 -0
  23. data/lib/farce/engine/jruby/fiber_scheduler.rb +3 -0
  24. data/lib/farce/engine/jruby/scheduler_synchronization.rb +87 -0
  25. data/lib/farce/engine/jruby/signal.rb +7 -4
  26. data/lib/farce/engine/ruby/3.4/null_port.rb +21 -0
  27. data/lib/farce/engine/ruby/3.4/patch.rb +67 -0
  28. data/lib/farce/engine/ruby/3.4/port.rb +13 -12
  29. data/lib/farce/engine/ruby/3.4/ractor_methods.rb +0 -1
  30. data/lib/farce/engine/ruby/4.0/null_port.rb +36 -0
  31. data/lib/farce/engine/ruby/4.0/port.rb +1 -2
  32. data/lib/farce/engine/ruby/4.1/null_port.rb +5 -0
  33. data/lib/farce/engine/ruby.rb +7 -0
  34. data/lib/farce/engine/shared/main_scheduler.rb +2 -2
  35. data/lib/farce/engine/shared/null_port.rb +18 -0
  36. data/lib/farce/engine/shared/parallel_scheduler.rb +1 -1
  37. data/lib/farce/engine/shared/port.rb +41 -3
  38. data/lib/farce/engine/shared/proxy_owner.rb +1 -1
  39. data/lib/farce/engine/shared/queue.rb +4 -4
  40. data/lib/farce/engine/shared/ractor_methods.rb +2 -2
  41. data/lib/farce/engine/shared/ractor_selector.rb +73 -0
  42. data/lib/farce/engine/shared/unshared_atom.rb +9 -8
  43. data/lib/farce/engine/shared.rb +9 -0
  44. data/lib/farce/extension.rb +150 -0
  45. data/lib/farce/integrations/ractor_tmvar.rb +4 -1
  46. data/lib/farce/internal/fake_ractor.rb +10 -2
  47. data/lib/farce/internal/lease_initialization.rb +1 -1
  48. data/lib/farce/internal/local_executor_methods.rb +33 -0
  49. data/lib/farce/internal/local_scheduled_task.rb +27 -0
  50. data/lib/farce/internal/scheduled_task.rb +1 -1
  51. data/lib/farce/internal/scheduler_lifecycle.rb +7 -4
  52. data/lib/farce/internal/thread_pool_supervisor.rb +45 -0
  53. data/lib/farce/internal/unshared_pool_worker.rb +14 -0
  54. data/lib/farce/internal.rb +14 -0
  55. data/lib/farce/local/pool.rb +111 -0
  56. data/lib/farce/local/scheduler.rb +219 -0
  57. data/lib/farce/null_port.rb +12 -0
  58. data/lib/farce/pool.rb +2 -290
  59. data/lib/farce/proxy.rb +2 -2
  60. data/lib/farce/scheduler.rb +1 -502
  61. data/lib/farce/system.rb +10 -2
  62. data/lib/farce/task.rb +285 -0
  63. data/lib/farce/{thread_scheduler.rb → thread_executor.rb} +7 -7
  64. data/lib/farce/unshared/pool.rb +44 -0
  65. data/lib/farce/unshared/scheduler.rb +89 -0
  66. data/lib/farce/version.rb +1 -1
  67. data/lib/farce.rb +10 -18
  68. metadata +34 -2
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: farce
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
@@ -24,11 +24,22 @@ files:
24
24
  - README.md
25
25
  - SECURITY.md
26
26
  - docs/benchmarks.md
27
+ - docs/compatibility.md
28
+ - docs/concurrency.md
29
+ - docs/data-structures.md
27
30
  - docs/gems/dry-types.md
28
31
  - docs/gems/msgpack.md
29
32
  - docs/gems/ractor-shim.md
33
+ - docs/installation.md
34
+ - docs/integrations.md
35
+ - docs/introduction.md
30
36
  - docs/modes.md
37
+ - docs/scheduling.md
31
38
  - docs/scopes.md
39
+ - docs/sharing.md
40
+ - docs/shims.md
41
+ - docs/utilities.md
42
+ - docs/variants-and-scopes.md
32
43
  - docs/variants.md
33
44
  - ext/ext_helper.rb
34
45
  - ext/farce/README.md
@@ -85,6 +96,7 @@ files:
85
96
  - lib/farce/abstract/counter.rb
86
97
  - lib/farce/abstract/duplicable_map.rb
87
98
  - lib/farce/abstract/exchanger.rb
99
+ - lib/farce/abstract/executor.rb
88
100
  - lib/farce/abstract/flag.rb
89
101
  - lib/farce/abstract/lazy.rb
90
102
  - lib/farce/abstract/lease.rb
@@ -94,6 +106,7 @@ files:
94
106
  - lib/farce/abstract/lru_map.rb
95
107
  - lib/farce/abstract/map.rb
96
108
  - lib/farce/abstract/molecule.rb
109
+ - lib/farce/abstract/pool.rb
97
110
  - lib/farce/abstract/port.rb
98
111
  - lib/farce/abstract/priority_queue.rb
99
112
  - lib/farce/abstract/queue.rb
@@ -110,6 +123,7 @@ files:
110
123
  - lib/farce/abstract/weak_set.rb
111
124
  - lib/farce/abstract/weak_value_map.rb
112
125
  - lib/farce/atom.rb
126
+ - lib/farce/backports.rb
113
127
  - lib/farce/class_mirror.rb
114
128
  - lib/farce/clock.rb
115
129
  - lib/farce/config.rb
@@ -122,6 +136,7 @@ files:
122
136
  - lib/farce/engine/jruby/lease_waiting.rb
123
137
  - lib/farce/engine/jruby/map.rb
124
138
  - lib/farce/engine/jruby/mutable_numeric_copy.rb
139
+ - lib/farce/engine/jruby/scheduler_synchronization.rb
125
140
  - lib/farce/engine/jruby/signal.rb
126
141
  - lib/farce/engine/jvm.rb
127
142
  - lib/farce/engine/jvm/concurrent_weak_registry.rb
@@ -134,14 +149,18 @@ files:
134
149
  - lib/farce/engine/jvm/types.rb
135
150
  - lib/farce/engine/ruby.rb
136
151
  - lib/farce/engine/ruby/3.4/fiber_scheduler.rb
152
+ - lib/farce/engine/ruby/3.4/null_port.rb
153
+ - lib/farce/engine/ruby/3.4/patch.rb
137
154
  - lib/farce/engine/ruby/3.4/port.rb
138
155
  - lib/farce/engine/ruby/3.4/ractor_methods.rb
139
156
  - lib/farce/engine/ruby/3.4/ractor_selector.rb
140
157
  - lib/farce/engine/ruby/3.4/vault.rb
158
+ - lib/farce/engine/ruby/4.0/null_port.rb
141
159
  - lib/farce/engine/ruby/4.0/port.rb
142
160
  - lib/farce/engine/ruby/4.0/ractor_methods.rb
143
161
  - lib/farce/engine/ruby/4.0/ractor_selector.rb
144
162
  - lib/farce/engine/ruby/4.0/vault.rb
163
+ - lib/farce/engine/ruby/4.1/null_port.rb
145
164
  - lib/farce/engine/ruby/4.1/port.rb
146
165
  - lib/farce/engine/ruby/4.1/ractor_methods.rb
147
166
  - lib/farce/engine/ruby/4.1/ractor_selector.rb
@@ -170,12 +189,14 @@ files:
170
189
  - lib/farce/engine/shared/lease_pool.rb
171
190
  - lib/farce/engine/shared/main_scheduler.rb
172
191
  - lib/farce/engine/shared/map_key_coordination.rb
192
+ - lib/farce/engine/shared/null_port.rb
173
193
  - lib/farce/engine/shared/parallel_scheduler.rb
174
194
  - lib/farce/engine/shared/port.rb
175
195
  - lib/farce/engine/shared/portable_bounded_map.rb
176
196
  - lib/farce/engine/shared/proxy_owner.rb
177
197
  - lib/farce/engine/shared/queue.rb
178
198
  - lib/farce/engine/shared/ractor_methods.rb
199
+ - lib/farce/engine/shared/ractor_selector.rb
179
200
  - lib/farce/engine/shared/rebindable.rb
180
201
  - lib/farce/engine/shared/strict_atom.rb
181
202
  - lib/farce/engine/shared/strict_map.rb
@@ -214,6 +235,7 @@ files:
214
235
  - lib/farce/envelope.rb
215
236
  - lib/farce/error.rb
216
237
  - lib/farce/exchanger.rb
238
+ - lib/farce/extension.rb
217
239
  - lib/farce/flag.rb
218
240
  - lib/farce/integrations.rb
219
241
  - lib/farce/integrations/active_support.rb
@@ -262,6 +284,8 @@ files:
262
284
  - lib/farce/internal/lease_pool_state.rb
263
285
  - lib/farce/internal/lease_state.rb
264
286
  - lib/farce/internal/lease_waiting.rb
287
+ - lib/farce/internal/local_executor_methods.rb
288
+ - lib/farce/internal/local_scheduled_task.rb
265
289
  - lib/farce/internal/managed_queue.rb
266
290
  - lib/farce/internal/map_value_modes.rb
267
291
  - lib/farce/internal/marshal_support.rb
@@ -287,12 +311,14 @@ files:
287
311
  - lib/farce/internal/strict_lease_map.rb
288
312
  - lib/farce/internal/strict_lease_pool.rb
289
313
  - lib/farce/internal/thread_pool.rb
314
+ - lib/farce/internal/thread_pool_supervisor.rb
290
315
  - lib/farce/internal/transaction_conflict.rb
291
316
  - lib/farce/internal/transaction_freeze_guard.rb
292
317
  - lib/farce/internal/transaction_map_snapshot.rb
293
318
  - lib/farce/internal/undefined.rb
294
319
  - lib/farce/internal/unshared_lease.rb
295
320
  - lib/farce/internal/unshared_lease_pool.rb
321
+ - lib/farce/internal/unshared_pool_worker.rb
296
322
  - lib/farce/internal/unshared_queue_waiting.rb
297
323
  - lib/farce/internal/value_serialization.rb
298
324
  - lib/farce/internal/weak_map_value_modes.rb
@@ -316,8 +342,10 @@ files:
316
342
  - lib/farce/local/lru_map.rb
317
343
  - lib/farce/local/map.rb
318
344
  - lib/farce/local/molecule.rb
345
+ - lib/farce/local/pool.rb
319
346
  - lib/farce/local/priority_queue.rb
320
347
  - lib/farce/local/queue.rb
348
+ - lib/farce/local/scheduler.rb
321
349
  - lib/farce/local/scoped.rb
322
350
  - lib/farce/local/set.rb
323
351
  - lib/farce/local/sorted_set.rb
@@ -336,6 +364,7 @@ files:
336
364
  - lib/farce/mode_manager/smart_rule.rb
337
365
  - lib/farce/molecule.rb
338
366
  - lib/farce/mutable.rb
367
+ - lib/farce/null_port.rb
339
368
  - lib/farce/pool.rb
340
369
  - lib/farce/port.rb
341
370
  - lib/farce/priority_queue.rb
@@ -382,7 +411,8 @@ files:
382
411
  - lib/farce/strict/weak_set.rb
383
412
  - lib/farce/strict/weak_value_map.rb
384
413
  - lib/farce/system.rb
385
- - lib/farce/thread_scheduler.rb
414
+ - lib/farce/task.rb
415
+ - lib/farce/thread_executor.rb
386
416
  - lib/farce/timer_queue.rb
387
417
  - lib/farce/transaction.rb
388
418
  - lib/farce/transaction/atom.rb
@@ -415,8 +445,10 @@ files:
415
445
  - lib/farce/unshared/lru_map.rb
416
446
  - lib/farce/unshared/map.rb
417
447
  - lib/farce/unshared/molecule.rb
448
+ - lib/farce/unshared/pool.rb
418
449
  - lib/farce/unshared/priority_queue.rb
419
450
  - lib/farce/unshared/queue.rb
451
+ - lib/farce/unshared/scheduler.rb
420
452
  - lib/farce/unshared/set.rb
421
453
  - lib/farce/unshared/sorted_set.rb
422
454
  - lib/farce/unshared/timer_queue.rb