temporalio 0.0.1 → 0.1.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 (310) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +180 -7
  3. data/bridge/Cargo.lock +208 -76
  4. data/bridge/Cargo.toml +5 -2
  5. data/bridge/sdk-core/Cargo.toml +1 -1
  6. data/bridge/sdk-core/README.md +20 -10
  7. data/bridge/sdk-core/client/Cargo.toml +1 -1
  8. data/bridge/sdk-core/client/src/lib.rs +227 -59
  9. data/bridge/sdk-core/client/src/metrics.rs +17 -8
  10. data/bridge/sdk-core/client/src/raw.rs +13 -12
  11. data/bridge/sdk-core/client/src/retry.rs +132 -43
  12. data/bridge/sdk-core/core/Cargo.toml +28 -15
  13. data/bridge/sdk-core/core/benches/workflow_replay.rs +13 -10
  14. data/bridge/sdk-core/core/src/abstractions.rs +225 -36
  15. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +217 -79
  16. data/bridge/sdk-core/core/src/core_tests/determinism.rs +165 -2
  17. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +565 -34
  18. data/bridge/sdk-core/core/src/core_tests/queries.rs +247 -90
  19. data/bridge/sdk-core/core/src/core_tests/workers.rs +3 -5
  20. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +1 -1
  21. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +430 -67
  22. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +106 -12
  23. data/bridge/sdk-core/core/src/internal_flags.rs +136 -0
  24. data/bridge/sdk-core/core/src/lib.rs +148 -34
  25. data/bridge/sdk-core/core/src/protosext/mod.rs +1 -1
  26. data/bridge/sdk-core/core/src/replay/mod.rs +185 -41
  27. data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
  28. data/bridge/sdk-core/core/src/telemetry/metrics.rs +219 -140
  29. data/bridge/sdk-core/core/src/telemetry/mod.rs +326 -315
  30. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +20 -14
  31. data/bridge/sdk-core/core/src/test_help/mod.rs +85 -21
  32. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +112 -156
  33. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +89 -0
  34. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +364 -128
  35. data/bridge/sdk-core/core/src/worker/activities.rs +263 -170
  36. data/bridge/sdk-core/core/src/worker/client/mocks.rs +23 -3
  37. data/bridge/sdk-core/core/src/worker/client.rs +48 -6
  38. data/bridge/sdk-core/core/src/worker/mod.rs +186 -75
  39. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +1 -3
  40. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +13 -24
  41. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +879 -226
  42. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +101 -48
  43. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +8 -12
  44. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +6 -9
  45. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +90 -32
  46. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +6 -9
  47. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +7 -10
  48. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +6 -9
  49. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +160 -83
  50. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +36 -54
  51. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +179 -0
  52. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +104 -157
  53. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +8 -12
  54. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +9 -13
  55. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +10 -4
  56. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +14 -11
  57. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +6 -17
  58. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +395 -299
  59. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +12 -20
  60. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +33 -18
  61. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +1032 -374
  62. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +525 -392
  63. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +40 -57
  64. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +125 -0
  65. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +3 -6
  66. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +117 -0
  67. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +24 -0
  68. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +456 -681
  69. data/bridge/sdk-core/core-api/Cargo.toml +6 -4
  70. data/bridge/sdk-core/core-api/src/errors.rs +1 -34
  71. data/bridge/sdk-core/core-api/src/lib.rs +7 -45
  72. data/bridge/sdk-core/core-api/src/telemetry.rs +141 -0
  73. data/bridge/sdk-core/core-api/src/worker.rs +27 -1
  74. data/bridge/sdk-core/etc/deps.svg +115 -140
  75. data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
  76. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +18 -15
  77. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +1 -1
  78. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +8 -3
  79. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  80. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  81. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  82. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -3
  83. data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
  84. data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
  85. data/bridge/sdk-core/protos/api_upstream/{temporal/api/enums/v1/cluster.proto → build/tools.go} +7 -18
  86. data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
  87. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +12 -9
  88. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +15 -26
  89. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +13 -2
  90. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +3 -2
  91. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +4 -9
  92. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +3 -2
  93. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +10 -8
  94. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +28 -2
  95. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +2 -2
  96. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +2 -2
  97. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +2 -2
  98. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +2 -2
  99. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +2 -2
  100. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +24 -19
  101. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +2 -2
  102. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +2 -2
  103. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +2 -2
  104. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +2 -2
  105. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +62 -26
  106. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +4 -2
  107. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +24 -61
  108. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +2 -21
  109. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +57 -0
  110. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +2 -2
  111. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +2 -2
  112. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +110 -31
  113. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +63 -0
  114. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +4 -4
  115. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +71 -6
  116. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +2 -2
  117. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +3 -2
  118. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +111 -36
  119. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +19 -5
  120. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +1 -0
  121. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +1 -0
  122. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +1 -0
  123. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +1 -0
  124. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +1 -0
  125. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +1 -0
  126. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +9 -0
  127. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +9 -1
  128. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +6 -0
  129. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +2 -2
  130. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +2 -2
  131. data/bridge/sdk-core/sdk/Cargo.toml +4 -3
  132. data/bridge/sdk-core/sdk/src/interceptors.rs +36 -3
  133. data/bridge/sdk-core/sdk/src/lib.rs +94 -25
  134. data/bridge/sdk-core/sdk/src/workflow_context.rs +13 -2
  135. data/bridge/sdk-core/sdk/src/workflow_future.rs +10 -13
  136. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +5 -2
  137. data/bridge/sdk-core/sdk-core-protos/build.rs +36 -2
  138. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +164 -104
  139. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +27 -23
  140. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +252 -74
  141. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +12 -2
  142. data/bridge/sdk-core/test-utils/Cargo.toml +4 -1
  143. data/bridge/sdk-core/test-utils/src/canned_histories.rs +106 -296
  144. data/bridge/sdk-core/test-utils/src/histfetch.rs +1 -1
  145. data/bridge/sdk-core/test-utils/src/lib.rs +161 -50
  146. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +50 -0
  147. data/bridge/sdk-core/test-utils/src/workflows.rs +29 -0
  148. data/bridge/sdk-core/tests/fuzzy_workflow.rs +130 -0
  149. data/bridge/sdk-core/tests/{load_tests.rs → heavy_tests.rs} +125 -51
  150. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +25 -3
  151. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +10 -5
  152. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +239 -0
  153. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +4 -60
  154. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +5 -128
  155. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +83 -25
  156. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +93 -69
  157. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +1 -0
  158. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +6 -13
  159. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +1 -0
  160. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +6 -2
  161. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +3 -10
  162. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +151 -116
  163. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +54 -0
  164. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +7 -28
  165. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +115 -24
  166. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +1 -0
  167. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +18 -14
  168. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +6 -20
  169. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +10 -21
  170. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +6 -4
  171. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +27 -18
  172. data/bridge/sdk-core/tests/main.rs +8 -16
  173. data/bridge/sdk-core/tests/runner.rs +75 -36
  174. data/bridge/sdk-core/tests/wf_input_replay.rs +32 -0
  175. data/bridge/src/connection.rs +117 -82
  176. data/bridge/src/lib.rs +356 -42
  177. data/bridge/src/runtime.rs +10 -3
  178. data/bridge/src/test_server.rs +153 -0
  179. data/bridge/src/worker.rs +133 -9
  180. data/lib/gen/temporal/api/batch/v1/message_pb.rb +8 -6
  181. data/lib/gen/temporal/api/command/v1/message_pb.rb +10 -16
  182. data/lib/gen/temporal/api/common/v1/message_pb.rb +5 -1
  183. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +2 -1
  184. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +3 -3
  185. data/lib/gen/temporal/api/enums/v1/common_pb.rb +2 -1
  186. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +5 -4
  187. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +9 -1
  188. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +1 -1
  189. data/lib/gen/temporal/api/enums/v1/query_pb.rb +1 -1
  190. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +1 -1
  191. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +1 -1
  192. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +1 -1
  193. data/lib/gen/temporal/api/enums/v1/update_pb.rb +7 -10
  194. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +1 -1
  195. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +1 -1
  196. data/lib/gen/temporal/api/failure/v1/message_pb.rb +1 -1
  197. data/lib/gen/temporal/api/filter/v1/message_pb.rb +1 -1
  198. data/lib/gen/temporal/api/history/v1/message_pb.rb +34 -25
  199. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +2 -1
  200. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +14 -51
  201. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +1 -1
  202. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +30 -0
  203. data/lib/gen/temporal/api/query/v1/message_pb.rb +1 -1
  204. data/lib/gen/temporal/api/replication/v1/message_pb.rb +1 -1
  205. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +22 -1
  206. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +23 -0
  207. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +2 -2
  208. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +49 -0
  209. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +21 -0
  210. data/lib/gen/temporal/api/update/v1/message_pb.rb +49 -3
  211. data/lib/gen/temporal/api/version/v1/message_pb.rb +1 -1
  212. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +2 -1
  213. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +47 -20
  214. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +1 -1
  215. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +13 -9
  216. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +10 -6
  217. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +13 -9
  218. data/lib/gen/temporal/sdk/core/common/common_pb.rb +7 -3
  219. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +9 -3
  220. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +7 -3
  221. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +28 -21
  222. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +32 -24
  223. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +12 -5
  224. data/lib/temporalio/activity/context.rb +102 -0
  225. data/lib/temporalio/activity/info.rb +67 -0
  226. data/lib/temporalio/activity.rb +85 -0
  227. data/lib/temporalio/bridge/connect_options.rb +15 -0
  228. data/lib/temporalio/bridge/error.rb +8 -0
  229. data/lib/temporalio/bridge/retry_config.rb +24 -0
  230. data/lib/temporalio/bridge/tls_options.rb +19 -0
  231. data/lib/temporalio/bridge.rb +14 -0
  232. data/lib/{temporal → temporalio}/client/implementation.rb +57 -56
  233. data/lib/{temporal → temporalio}/client/workflow_handle.rb +35 -35
  234. data/lib/{temporal → temporalio}/client.rb +19 -32
  235. data/lib/temporalio/connection/retry_config.rb +44 -0
  236. data/lib/temporalio/connection/service.rb +20 -0
  237. data/lib/temporalio/connection/test_service.rb +92 -0
  238. data/lib/temporalio/connection/tls_options.rb +51 -0
  239. data/lib/temporalio/connection/workflow_service.rb +731 -0
  240. data/lib/temporalio/connection.rb +86 -0
  241. data/lib/{temporal → temporalio}/data_converter.rb +76 -35
  242. data/lib/{temporal → temporalio}/error/failure.rb +6 -6
  243. data/lib/{temporal → temporalio}/error/workflow_failure.rb +4 -2
  244. data/lib/{temporal → temporalio}/errors.rb +19 -1
  245. data/lib/{temporal → temporalio}/failure_converter/base.rb +5 -5
  246. data/lib/{temporal → temporalio}/failure_converter/basic.rb +58 -52
  247. data/lib/temporalio/failure_converter.rb +7 -0
  248. data/lib/temporalio/interceptor/activity_inbound.rb +22 -0
  249. data/lib/temporalio/interceptor/activity_outbound.rb +24 -0
  250. data/lib/{temporal → temporalio}/interceptor/chain.rb +7 -6
  251. data/lib/{temporal → temporalio}/interceptor/client.rb +27 -2
  252. data/lib/temporalio/interceptor.rb +22 -0
  253. data/lib/{temporal → temporalio}/payload_codec/base.rb +5 -5
  254. data/lib/{temporal → temporalio}/payload_converter/base.rb +3 -3
  255. data/lib/{temporal → temporalio}/payload_converter/bytes.rb +4 -3
  256. data/lib/{temporal → temporalio}/payload_converter/composite.rb +7 -5
  257. data/lib/{temporal → temporalio}/payload_converter/encoding_base.rb +4 -4
  258. data/lib/{temporal → temporalio}/payload_converter/json.rb +4 -3
  259. data/lib/{temporal → temporalio}/payload_converter/nil.rb +4 -3
  260. data/lib/temporalio/payload_converter.rb +14 -0
  261. data/lib/{temporal → temporalio}/retry_policy.rb +17 -7
  262. data/lib/{temporal → temporalio}/retry_state.rb +1 -1
  263. data/lib/temporalio/runtime.rb +25 -0
  264. data/lib/temporalio/testing/time_skipping_handle.rb +32 -0
  265. data/lib/temporalio/testing/time_skipping_interceptor.rb +23 -0
  266. data/lib/temporalio/testing/workflow_environment.rb +112 -0
  267. data/lib/temporalio/testing.rb +175 -0
  268. data/lib/{temporal → temporalio}/timeout_type.rb +2 -2
  269. data/lib/temporalio/version.rb +3 -0
  270. data/lib/temporalio/worker/activity_runner.rb +114 -0
  271. data/lib/temporalio/worker/activity_worker.rb +164 -0
  272. data/lib/temporalio/worker/reactor.rb +46 -0
  273. data/lib/temporalio/worker/runner.rb +63 -0
  274. data/lib/temporalio/worker/sync_worker.rb +124 -0
  275. data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
  276. data/lib/temporalio/worker.rb +204 -0
  277. data/lib/temporalio/workflow/async.rb +46 -0
  278. data/lib/{temporal → temporalio}/workflow/execution_info.rb +4 -4
  279. data/lib/{temporal → temporalio}/workflow/execution_status.rb +1 -1
  280. data/lib/temporalio/workflow/future.rb +138 -0
  281. data/lib/{temporal → temporalio}/workflow/id_reuse_policy.rb +6 -6
  282. data/lib/temporalio/workflow/info.rb +76 -0
  283. data/lib/{temporal → temporalio}/workflow/query_reject_condition.rb +5 -5
  284. data/lib/temporalio.rb +12 -3
  285. data/temporalio.gemspec +11 -6
  286. metadata +137 -64
  287. data/bridge/sdk-core/Cargo.lock +0 -2606
  288. data/bridge/sdk-core/bridge-ffi/Cargo.toml +0 -24
  289. data/bridge/sdk-core/bridge-ffi/LICENSE.txt +0 -23
  290. data/bridge/sdk-core/bridge-ffi/build.rs +0 -25
  291. data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +0 -249
  292. data/bridge/sdk-core/bridge-ffi/src/lib.rs +0 -825
  293. data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +0 -211
  294. data/bridge/sdk-core/core/src/log_export.rs +0 -62
  295. data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +0 -127
  296. data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +0 -71
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +0 -83
  298. data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +0 -210
  299. data/bridge/sdk-core/sdk/src/conversions.rs +0 -8
  300. data/lib/bridge.so +0 -0
  301. data/lib/gen/temporal/api/cluster/v1/message_pb.rb +0 -67
  302. data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +0 -26
  303. data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +0 -222
  304. data/lib/temporal/bridge.rb +0 -14
  305. data/lib/temporal/connection.rb +0 -736
  306. data/lib/temporal/failure_converter.rb +0 -8
  307. data/lib/temporal/payload_converter.rb +0 -14
  308. data/lib/temporal/runtime.rb +0 -22
  309. data/lib/temporal/version.rb +0 -3
  310. data/lib/temporal.rb +0 -8
data/bridge/Cargo.lock CHANGED
@@ -22,11 +22,11 @@ dependencies = [
22
22
 
23
23
  [[package]]
24
24
  name = "ahash"
25
- version = "0.7.6"
25
+ version = "0.8.3"
26
26
  source = "registry+https://github.com/rust-lang/crates.io-index"
27
- checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
27
+ checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
28
28
  dependencies = [
29
- "getrandom",
29
+ "cfg-if",
30
30
  "once_cell",
31
31
  "version_check",
32
32
  ]
@@ -52,17 +52,6 @@ version = "1.5.1"
52
52
  source = "registry+https://github.com/rust-lang/crates.io-index"
53
53
  checksum = "983cd8b9d4b02a6dc6ffa557262eb5858a27a0038ffffe21a0f133eaa819a164"
54
54
 
55
- [[package]]
56
- name = "async-channel"
57
- version = "1.7.1"
58
- source = "registry+https://github.com/rust-lang/crates.io-index"
59
- checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28"
60
- dependencies = [
61
- "concurrent-queue",
62
- "event-listener",
63
- "futures-core",
64
- ]
65
-
66
55
  [[package]]
67
56
  name = "async-stream"
68
57
  version = "0.3.3"
@@ -163,6 +152,12 @@ version = "0.13.1"
163
152
  source = "registry+https://github.com/rust-lang/crates.io-index"
164
153
  checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
165
154
 
155
+ [[package]]
156
+ name = "base64"
157
+ version = "0.21.0"
158
+ source = "registry+https://github.com/rust-lang/crates.io-index"
159
+ checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
160
+
166
161
  [[package]]
167
162
  name = "base64ct"
168
163
  version = "1.5.3"
@@ -186,9 +181,11 @@ dependencies = [
186
181
 
187
182
  [[package]]
188
183
  name = "bridge"
189
- version = "0.0.1"
184
+ version = "0.1.0"
190
185
  dependencies = [
186
+ "anyhow",
191
187
  "lazy_static",
188
+ "parking_lot",
192
189
  "prost",
193
190
  "rutie",
194
191
  "temporal-client",
@@ -197,6 +194,7 @@ dependencies = [
197
194
  "temporal-sdk-core-protos",
198
195
  "thiserror",
199
196
  "tokio",
197
+ "tokio-util",
200
198
  "tonic",
201
199
  "url",
202
200
  ]
@@ -221,9 +219,9 @@ checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
221
219
 
222
220
  [[package]]
223
221
  name = "bzip2"
224
- version = "0.4.3"
222
+ version = "0.4.4"
225
223
  source = "registry+https://github.com/rust-lang/crates.io-index"
226
- checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0"
224
+ checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
227
225
  dependencies = [
228
226
  "bzip2-sys",
229
227
  "libc",
@@ -240,12 +238,6 @@ dependencies = [
240
238
  "pkg-config",
241
239
  ]
242
240
 
243
- [[package]]
244
- name = "cache-padded"
245
- version = "1.2.0"
246
- source = "registry+https://github.com/rust-lang/crates.io-index"
247
- checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
248
-
249
241
  [[package]]
250
242
  name = "cc"
251
243
  version = "1.0.76"
@@ -262,21 +254,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
262
254
  checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
263
255
 
264
256
  [[package]]
265
- name = "cipher"
266
- version = "0.3.0"
257
+ name = "chrono"
258
+ version = "0.4.23"
267
259
  source = "registry+https://github.com/rust-lang/crates.io-index"
268
- checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
260
+ checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f"
269
261
  dependencies = [
270
- "generic-array",
262
+ "num-integer",
263
+ "num-traits",
264
+ "serde",
271
265
  ]
272
266
 
273
267
  [[package]]
274
- name = "concurrent-queue"
275
- version = "1.2.4"
268
+ name = "cipher"
269
+ version = "0.3.0"
276
270
  source = "registry+https://github.com/rust-lang/crates.io-index"
277
- checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c"
271
+ checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
278
272
  dependencies = [
279
- "cache-padded",
273
+ "generic-array",
280
274
  ]
281
275
 
282
276
  [[package]]
@@ -369,7 +363,7 @@ dependencies = [
369
363
  "autocfg",
370
364
  "cfg-if",
371
365
  "crossbeam-utils",
372
- "memoffset",
366
+ "memoffset 0.6.5",
373
367
  "scopeguard",
374
368
  ]
375
369
 
@@ -402,6 +396,16 @@ dependencies = [
402
396
  "typenum",
403
397
  ]
404
398
 
399
+ [[package]]
400
+ name = "ctor"
401
+ version = "0.1.26"
402
+ source = "registry+https://github.com/rust-lang/crates.io-index"
403
+ checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
404
+ dependencies = [
405
+ "quote",
406
+ "syn",
407
+ ]
408
+
405
409
  [[package]]
406
410
  name = "darling"
407
411
  version = "0.14.2"
@@ -444,7 +448,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
444
448
  checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc"
445
449
  dependencies = [
446
450
  "cfg-if",
447
- "hashbrown",
451
+ "hashbrown 0.12.3",
448
452
  "lock_api",
449
453
  "once_cell",
450
454
  "parking_lot_core",
@@ -452,18 +456,18 @@ dependencies = [
452
456
 
453
457
  [[package]]
454
458
  name = "derive_builder"
455
- version = "0.11.2"
459
+ version = "0.12.0"
456
460
  source = "registry+https://github.com/rust-lang/crates.io-index"
457
- checksum = "d07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3"
461
+ checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8"
458
462
  dependencies = [
459
463
  "derive_builder_macro",
460
464
  ]
461
465
 
462
466
  [[package]]
463
467
  name = "derive_builder_core"
464
- version = "0.11.2"
468
+ version = "0.12.0"
465
469
  source = "registry+https://github.com/rust-lang/crates.io-index"
466
- checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4"
470
+ checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f"
467
471
  dependencies = [
468
472
  "darling",
469
473
  "proc-macro2",
@@ -473,9 +477,9 @@ dependencies = [
473
477
 
474
478
  [[package]]
475
479
  name = "derive_builder_macro"
476
- version = "0.11.2"
480
+ version = "0.12.0"
477
481
  source = "registry+https://github.com/rust-lang/crates.io-index"
478
- checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68"
482
+ checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e"
479
483
  dependencies = [
480
484
  "derive_builder_core",
481
485
  "syn",
@@ -545,10 +549,13 @@ dependencies = [
545
549
  ]
546
550
 
547
551
  [[package]]
548
- name = "event-listener"
549
- version = "2.5.3"
552
+ name = "erased-serde"
553
+ version = "0.3.24"
550
554
  source = "registry+https://github.com/rust-lang/crates.io-index"
551
- checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
555
+ checksum = "e4ca605381c017ec7a5fef5e548f1cfaa419ed0f6df6367339300db74c92aa7d"
556
+ dependencies = [
557
+ "serde",
558
+ ]
552
559
 
553
560
  [[package]]
554
561
  name = "fastrand"
@@ -744,6 +751,17 @@ dependencies = [
744
751
  "wasi 0.11.0+wasi-snapshot-preview1",
745
752
  ]
746
753
 
754
+ [[package]]
755
+ name = "ghost"
756
+ version = "0.1.7"
757
+ source = "registry+https://github.com/rust-lang/crates.io-index"
758
+ checksum = "41973d4c45f7a35af8753ba3457cc99d406d863941fd7f52663cff54a5ab99b3"
759
+ dependencies = [
760
+ "proc-macro2",
761
+ "quote",
762
+ "syn",
763
+ ]
764
+
747
765
  [[package]]
748
766
  name = "governor"
749
767
  version = "0.5.0"
@@ -786,6 +804,12 @@ name = "hashbrown"
786
804
  version = "0.12.3"
787
805
  source = "registry+https://github.com/rust-lang/crates.io-index"
788
806
  checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
807
+
808
+ [[package]]
809
+ name = "hashbrown"
810
+ version = "0.13.2"
811
+ source = "registry+https://github.com/rust-lang/crates.io-index"
812
+ checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
789
813
  dependencies = [
790
814
  "ahash",
791
815
  ]
@@ -926,7 +950,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
926
950
  checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
927
951
  dependencies = [
928
952
  "autocfg",
929
- "hashbrown",
953
+ "hashbrown 0.12.3",
930
954
  ]
931
955
 
932
956
  [[package]]
@@ -938,6 +962,16 @@ dependencies = [
938
962
  "cfg-if",
939
963
  ]
940
964
 
965
+ [[package]]
966
+ name = "inventory"
967
+ version = "0.3.3"
968
+ source = "registry+https://github.com/rust-lang/crates.io-index"
969
+ checksum = "16fe3b35d64bd1f72917f06425e7573a2f63f74f42c8f56e53ea6826dde3a2b5"
970
+ dependencies = [
971
+ "ctor",
972
+ "ghost",
973
+ ]
974
+
941
975
  [[package]]
942
976
  name = "ipnet"
943
977
  version = "2.5.1"
@@ -1010,11 +1044,11 @@ dependencies = [
1010
1044
 
1011
1045
  [[package]]
1012
1046
  name = "lru"
1013
- version = "0.8.1"
1047
+ version = "0.9.0"
1014
1048
  source = "registry+https://github.com/rust-lang/crates.io-index"
1015
- checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909"
1049
+ checksum = "71e7d46de488603ffdd5f30afbc64fbba2378214a2c3a2fb83abf3d33126df17"
1016
1050
  dependencies = [
1017
- "hashbrown",
1051
+ "hashbrown 0.13.2",
1018
1052
  ]
1019
1053
 
1020
1054
  [[package]]
@@ -1056,6 +1090,15 @@ dependencies = [
1056
1090
  "autocfg",
1057
1091
  ]
1058
1092
 
1093
+ [[package]]
1094
+ name = "memoffset"
1095
+ version = "0.7.1"
1096
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1097
+ checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
1098
+ dependencies = [
1099
+ "autocfg",
1100
+ ]
1101
+
1059
1102
  [[package]]
1060
1103
  name = "mime"
1061
1104
  version = "0.3.16"
@@ -1118,16 +1161,16 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
1118
1161
 
1119
1162
  [[package]]
1120
1163
  name = "nix"
1121
- version = "0.25.0"
1164
+ version = "0.26.1"
1122
1165
  source = "registry+https://github.com/rust-lang/crates.io-index"
1123
- checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb"
1166
+ checksum = "46a58d1d356c6597d08cde02c2f09d785b09e28711837b1ed667dc652c08a694"
1124
1167
  dependencies = [
1125
- "autocfg",
1126
1168
  "bitflags",
1127
1169
  "cfg-if",
1128
1170
  "libc",
1129
- "memoffset",
1171
+ "memoffset 0.7.1",
1130
1172
  "pin-utils",
1173
+ "static_assertions",
1131
1174
  ]
1132
1175
 
1133
1176
  [[package]]
@@ -1158,6 +1201,16 @@ dependencies = [
1158
1201
  "winapi",
1159
1202
  ]
1160
1203
 
1204
+ [[package]]
1205
+ name = "num-integer"
1206
+ version = "0.1.45"
1207
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1208
+ checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
1209
+ dependencies = [
1210
+ "autocfg",
1211
+ "num-traits",
1212
+ ]
1213
+
1161
1214
  [[package]]
1162
1215
  name = "num-traits"
1163
1216
  version = "0.2.15"
@@ -1464,9 +1517,9 @@ dependencies = [
1464
1517
 
1465
1518
  [[package]]
1466
1519
  name = "prost"
1467
- version = "0.11.2"
1520
+ version = "0.11.6"
1468
1521
  source = "registry+https://github.com/rust-lang/crates.io-index"
1469
- checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a"
1522
+ checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698"
1470
1523
  dependencies = [
1471
1524
  "bytes",
1472
1525
  "prost-derive",
@@ -1474,9 +1527,9 @@ dependencies = [
1474
1527
 
1475
1528
  [[package]]
1476
1529
  name = "prost-build"
1477
- version = "0.11.2"
1530
+ version = "0.11.6"
1478
1531
  source = "registry+https://github.com/rust-lang/crates.io-index"
1479
- checksum = "1d8b442418ea0822409d9e7d047cbf1e7e9e1760b172bf9982cf29d517c93511"
1532
+ checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e"
1480
1533
  dependencies = [
1481
1534
  "bytes",
1482
1535
  "heck",
@@ -1496,9 +1549,9 @@ dependencies = [
1496
1549
 
1497
1550
  [[package]]
1498
1551
  name = "prost-derive"
1499
- version = "0.11.2"
1552
+ version = "0.11.6"
1500
1553
  source = "registry+https://github.com/rust-lang/crates.io-index"
1501
- checksum = "164ae68b6587001ca506d3bf7f1000bfa248d0e1217b618108fba4ec1d0cc306"
1554
+ checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d"
1502
1555
  dependencies = [
1503
1556
  "anyhow",
1504
1557
  "itertools",
@@ -1509,14 +1562,60 @@ dependencies = [
1509
1562
 
1510
1563
  [[package]]
1511
1564
  name = "prost-types"
1512
- version = "0.11.2"
1565
+ version = "0.11.6"
1513
1566
  source = "registry+https://github.com/rust-lang/crates.io-index"
1514
- checksum = "747761bc3dc48f9a34553bf65605cf6cb6288ba219f3450b4275dbd81539551a"
1567
+ checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788"
1515
1568
  dependencies = [
1516
1569
  "bytes",
1517
1570
  "prost",
1518
1571
  ]
1519
1572
 
1573
+ [[package]]
1574
+ name = "prost-wkt"
1575
+ version = "0.4.0"
1576
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1577
+ checksum = "81d27933a63f4fa7586c2eac76179e7a9b782a7165aa309028adbec626a33100"
1578
+ dependencies = [
1579
+ "chrono",
1580
+ "inventory",
1581
+ "prost",
1582
+ "serde",
1583
+ "serde_derive",
1584
+ "serde_json",
1585
+ "typetag",
1586
+ ]
1587
+
1588
+ [[package]]
1589
+ name = "prost-wkt-build"
1590
+ version = "0.4.0"
1591
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1592
+ checksum = "edf268948bef41c2f9bb879e8868c155412d28d6ba4295c5b8d6d6639e47f9cf"
1593
+ dependencies = [
1594
+ "heck",
1595
+ "prost",
1596
+ "prost-build",
1597
+ "prost-types",
1598
+ "quote",
1599
+ ]
1600
+
1601
+ [[package]]
1602
+ name = "prost-wkt-types"
1603
+ version = "0.4.0"
1604
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1605
+ checksum = "4e240034fe46986ab9f84d669ed9bd46ad0c6adb8777ef28f5c44b94b43a3743"
1606
+ dependencies = [
1607
+ "chrono",
1608
+ "prost",
1609
+ "prost-build",
1610
+ "prost-types",
1611
+ "prost-wkt",
1612
+ "prost-wkt-build",
1613
+ "regex",
1614
+ "serde",
1615
+ "serde_derive",
1616
+ "serde_json",
1617
+ ]
1618
+
1520
1619
  [[package]]
1521
1620
  name = "protobuf"
1522
1621
  version = "2.28.0"
@@ -1637,7 +1736,7 @@ version = "0.11.12"
1637
1736
  source = "registry+https://github.com/rust-lang/crates.io-index"
1638
1737
  checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc"
1639
1738
  dependencies = [
1640
- "base64",
1739
+ "base64 0.13.1",
1641
1740
  "bytes",
1642
1741
  "encoding_rs",
1643
1742
  "futures-core",
@@ -1688,11 +1787,11 @@ dependencies = [
1688
1787
 
1689
1788
  [[package]]
1690
1789
  name = "ringbuf"
1691
- version = "0.2.8"
1790
+ version = "0.3.1"
1692
1791
  source = "registry+https://github.com/rust-lang/crates.io-index"
1693
- checksum = "f65af18d50f789e74aaf23bbb3f65dcd22a3cb6e029b5bced149f6bd57c5c2a2"
1792
+ checksum = "89e68dd9c1d8f7bb0c664e1556b1521809bc6fa62d92bb3b813adf8611caa0eb"
1694
1793
  dependencies = [
1695
- "cache-padded",
1794
+ "crossbeam-utils",
1696
1795
  ]
1697
1796
 
1698
1797
  [[package]]
@@ -1757,7 +1856,7 @@ version = "1.0.1"
1757
1856
  source = "registry+https://github.com/rust-lang/crates.io-index"
1758
1857
  checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55"
1759
1858
  dependencies = [
1760
- "base64",
1859
+ "base64 0.13.1",
1761
1860
  ]
1762
1861
 
1763
1862
  [[package]]
@@ -1960,6 +2059,12 @@ version = "0.5.2"
1960
2059
  source = "registry+https://github.com/rust-lang/crates.io-index"
1961
2060
  checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
1962
2061
 
2062
+ [[package]]
2063
+ name = "static_assertions"
2064
+ version = "1.1.0"
2065
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2066
+ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
2067
+
1963
2068
  [[package]]
1964
2069
  name = "strsim"
1965
2070
  version = "0.10.0"
@@ -2046,9 +2151,8 @@ version = "0.1.0"
2046
2151
  dependencies = [
2047
2152
  "anyhow",
2048
2153
  "arc-swap",
2049
- "async-channel",
2050
2154
  "async-trait",
2051
- "base64",
2155
+ "base64 0.21.0",
2052
2156
  "crossbeam",
2053
2157
  "dashmap",
2054
2158
  "derive_builder",
@@ -2062,7 +2166,6 @@ dependencies = [
2062
2166
  "hyper",
2063
2167
  "itertools",
2064
2168
  "lazy_static",
2065
- "log",
2066
2169
  "lru",
2067
2170
  "mockall",
2068
2171
  "nix",
@@ -2071,9 +2174,10 @@ dependencies = [
2071
2174
  "opentelemetry-otlp",
2072
2175
  "opentelemetry-prometheus",
2073
2176
  "parking_lot",
2177
+ "pin-project",
2074
2178
  "prometheus",
2075
2179
  "prost",
2076
- "prost-types",
2180
+ "prost-wkt-types",
2077
2181
  "rand",
2078
2182
  "reqwest",
2079
2183
  "ringbuf",
@@ -2105,16 +2209,18 @@ dependencies = [
2105
2209
  name = "temporal-sdk-core-api"
2106
2210
  version = "0.1.0"
2107
2211
  dependencies = [
2108
- "anyhow",
2109
2212
  "async-trait",
2110
2213
  "derive_builder",
2111
- "log",
2112
- "opentelemetry",
2113
2214
  "prost-types",
2215
+ "serde",
2216
+ "serde_json",
2114
2217
  "temporal-client",
2115
2218
  "temporal-sdk-core-protos",
2116
2219
  "thiserror",
2220
+ "tokio",
2117
2221
  "tonic",
2222
+ "tracing-core",
2223
+ "url",
2118
2224
  ]
2119
2225
 
2120
2226
  [[package]]
@@ -2122,10 +2228,12 @@ name = "temporal-sdk-core-protos"
2122
2228
  version = "0.1.0"
2123
2229
  dependencies = [
2124
2230
  "anyhow",
2125
- "base64",
2231
+ "base64 0.21.0",
2126
2232
  "derive_more",
2127
2233
  "prost",
2128
- "prost-types",
2234
+ "prost-wkt",
2235
+ "prost-wkt-build",
2236
+ "prost-wkt-types",
2129
2237
  "rand",
2130
2238
  "serde",
2131
2239
  "serde_json",
@@ -2214,9 +2322,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
2214
2322
 
2215
2323
  [[package]]
2216
2324
  name = "tokio"
2217
- version = "1.21.2"
2325
+ version = "1.25.0"
2218
2326
  source = "registry+https://github.com/rust-lang/crates.io-index"
2219
- checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099"
2327
+ checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af"
2220
2328
  dependencies = [
2221
2329
  "autocfg",
2222
2330
  "bytes",
@@ -2229,7 +2337,7 @@ dependencies = [
2229
2337
  "signal-hook-registry",
2230
2338
  "socket2",
2231
2339
  "tokio-macros",
2232
- "winapi",
2340
+ "windows-sys 0.42.0",
2233
2341
  ]
2234
2342
 
2235
2343
  [[package]]
@@ -2298,7 +2406,7 @@ dependencies = [
2298
2406
  "async-stream",
2299
2407
  "async-trait",
2300
2408
  "axum",
2301
- "base64",
2409
+ "base64 0.13.1",
2302
2410
  "bytes",
2303
2411
  "futures-core",
2304
2412
  "futures-util",
@@ -2488,6 +2596,30 @@ version = "1.15.0"
2488
2596
  source = "registry+https://github.com/rust-lang/crates.io-index"
2489
2597
  checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
2490
2598
 
2599
+ [[package]]
2600
+ name = "typetag"
2601
+ version = "0.2.5"
2602
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2603
+ checksum = "8eecd98403ae5ea2813689125cf5b3f99c40b8abed46c0a8945c81eadb673b31"
2604
+ dependencies = [
2605
+ "erased-serde",
2606
+ "inventory",
2607
+ "once_cell",
2608
+ "serde",
2609
+ "typetag-impl",
2610
+ ]
2611
+
2612
+ [[package]]
2613
+ name = "typetag-impl"
2614
+ version = "0.2.5"
2615
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2616
+ checksum = "8f9568611f0de5e83e0993b85c54679cd0afd659adcfcb0233f16280b980492e"
2617
+ dependencies = [
2618
+ "proc-macro2",
2619
+ "quote",
2620
+ "syn",
2621
+ ]
2622
+
2491
2623
  [[package]]
2492
2624
  name = "unicode-bidi"
2493
2625
  version = "0.3.8"
data/bridge/Cargo.toml CHANGED
@@ -1,12 +1,14 @@
1
1
  [package]
2
2
  name = "bridge"
3
- version = "0.0.1"
3
+ version = "0.1.0"
4
4
  authors = ["Anthony D <anthony@temporal.io>"]
5
5
  edition = "2021"
6
6
  repository = "https://github.com/temporalio/sdk-ruby"
7
7
 
8
8
  [dependencies]
9
+ anyhow = "1.0"
9
10
  lazy_static = "1.4.0"
11
+ parking_lot = { version = "0.12", features = ["send_guard"] }
10
12
  prost = "0.11"
11
13
  rutie = { version = "0.8.4", features = ["no-link"] }
12
14
  temporal-client = { version = "0.1.0", path = "./sdk-core/client" }
@@ -14,7 +16,8 @@ temporal-sdk-core = { version = "0.1.0", path = "./sdk-core/core" }
14
16
  temporal-sdk-core-api = { version = "0.1.0", path = "./sdk-core/core-api" }
15
17
  temporal-sdk-core-protos = { version = "0.1.0", path = "./sdk-core/sdk-core-protos" }
16
18
  thiserror = "1.0.31"
17
- tokio = "1.15"
19
+ tokio = "1.23"
20
+ tokio-util = "0.7.4"
18
21
  tonic = "0.8"
19
22
  url = "2.2"
20
23
 
@@ -1,2 +1,2 @@
1
1
  [workspace]
2
- members = ["bridge-ffi", "core", "client", "core-api", "fsm", "test-utils", "sdk-core-protos", "sdk"]
2
+ members = ["core", "client", "core-api", "fsm", "test-utils", "sdk-core-protos", "sdk"]
@@ -1,23 +1,29 @@
1
1
  [![Build status](https://badge.buildkite.com/c23f47f4a827f04daece909963bd3a248496f0cdbabfbecee4.svg?branch=master)](https://buildkite.com/temporal/core-sdk?branch=master)
2
2
 
3
- Core SDK that can be used as a base for all other Temporal SDKs.
3
+ Core SDK that can be used as a base for other Temporal SDKs. It is currently used as the base of:
4
4
 
5
- # Getting started
5
+ - [TypeScript SDK](https://github.com/temporalio/sdk-typescript/)
6
+ - [Python SDK](https://github.com/temporalio/sdk-python/)
7
+ - [.NET SDK](https://github.com/temporalio/sdk-dotnet/)
8
+ - [Ruby SDK](https://github.com/temporalio/sdk-ruby/)
6
9
 
7
- See the [Architecture](ARCHITECTURE.md) doc for some high-level information.
10
+ For the reasoning behind the Core SDK, see:
8
11
 
9
- ## Dependencies
10
- * Protobuf compiler
12
+ - [Why Rust powers Temporal’s new Core SDK](https://temporal.io/blog/why-rust-powers-core-sdk).
13
+
14
+ See the [Architecture](ARCHITECTURE.md) doc for some high-level information about how Core works
15
+ and how language layers interact with it.
11
16
 
12
17
  # Development
13
18
 
19
+ You will need the `protoc` protobuf compiler installed to build Core.
20
+
14
21
  This repo is composed of multiple crates:
15
22
  * temporal-sdk-core-protos `./sdk-core-protos` - Holds the generated proto code and extensions
16
23
  * temporal-client `./client` - Defines client(s) for interacting with the Temporal gRPC service
17
24
  * temporal-sdk-core-api `./core-api` - Defines the API surface exposed by Core
18
25
  * temporal-sdk-core `./core` - The Core implementation
19
26
  * temporal-sdk `./sdk` - A (currently prototype) Rust SDK built on top of Core. Used for testing.
20
- * temporal-sdk-core-bridge-ffi `./bridge-ffi` - C API wrapper for Core
21
27
  * rustfsm `./fsm` - Implements a procedural macro used by core for defining state machines
22
28
  (contains subcrates). It is temporal agnostic.
23
29
 
@@ -25,7 +31,6 @@ Visualized (dev dependencies are in blue):
25
31
 
26
32
  ![Crate dependency graph](./etc/deps.svg)
27
33
 
28
-
29
34
  All the following commands are enforced for each pull request:
30
35
 
31
36
  ## Building and testing
@@ -52,9 +57,7 @@ it for a test, insert the below snippet at the start of the test. By default, tr
52
57
  to stdout in a (reasonably) pretty manner.
53
58
 
54
59
  ```rust
55
- crate::telemetry::telemetry_init(Default::default());
56
- let s = info_span!("Test start");
57
- let _enter = s.enter();
60
+ crate::telemetry::test_telem_console();
58
61
  ```
59
62
 
60
63
  The passed in options to initialization can be customized to export to an OTel collector, etc.
@@ -105,3 +108,10 @@ Any error which is returned from a public interface should be well-typed, and we
105
108
  Errors returned from things only used in testing are free to use
106
109
  [anyhow](https://github.com/dtolnay/anyhow) for less verbosity.
107
110
 
111
+
112
+ # The Rust "SDK"
113
+ This repo contains a *prototype* Rust sdk in the `sdk/` directory. This SDK should be considered
114
+ pre-alpha in terms of its API surface. Since it's still using Core underneath, it is generally
115
+ functional. We do not currently have any firm plans to productionize this SDK. If you want to write
116
+ workflows and activities in Rust, feel free to use it - but be aware that the API may change at any
117
+ time without warning and we do not provide any support guarantees.