atomr-accel 0.1.0__tar.gz

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 (334) hide show
  1. atomr_accel-0.1.0/PKG-INFO +140 -0
  2. atomr_accel-0.1.0/README.md +116 -0
  3. atomr_accel-0.1.0/atomr/Cargo.toml +198 -0
  4. atomr_accel-0.1.0/atomr/crates/atomr-cluster/Cargo.toml +36 -0
  5. atomr_accel-0.1.0/atomr/crates/atomr-cluster/README.md +208 -0
  6. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/cluster_daemon.rs +464 -0
  7. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/events.rs +147 -0
  8. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/gossip.rs +65 -0
  9. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/gossip_pdu.rs +150 -0
  10. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/heartbeat.rs +46 -0
  11. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/heartbeat_sender.rs +150 -0
  12. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/leader.rs +152 -0
  13. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/lib.rs +44 -0
  14. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/member.rs +33 -0
  15. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/membership.rs +175 -0
  16. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/multi_dc.rs +158 -0
  17. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/reachability.rs +78 -0
  18. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/remote_adapter.rs +192 -0
  19. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/sbr.rs +183 -0
  20. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/sbr_runtime.rs +166 -0
  21. atomr_accel-0.1.0/atomr/crates/atomr-cluster/src/vector_clock.rs +98 -0
  22. atomr_accel-0.1.0/atomr/crates/atomr-cluster/tests/cluster_multinode.rs +69 -0
  23. atomr_accel-0.1.0/atomr/crates/atomr-cluster-metrics/Cargo.toml +32 -0
  24. atomr_accel-0.1.0/atomr/crates/atomr-cluster-metrics/README.md +208 -0
  25. atomr_accel-0.1.0/atomr/crates/atomr-cluster-metrics/src/lib.rs +399 -0
  26. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/Cargo.toml +33 -0
  27. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/README.md +208 -0
  28. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/allocation.rs +164 -0
  29. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/coordinator.rs +158 -0
  30. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/ddata_coordinator.rs +173 -0
  31. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/entity_ref.rs +27 -0
  32. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/extractor.rs +8 -0
  33. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/handoff.rs +188 -0
  34. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/lib.rs +32 -0
  35. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/passivation.rs +113 -0
  36. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/persistent_coordinator.rs +265 -0
  37. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/rebalance.rs +155 -0
  38. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/remember_entities.rs +161 -0
  39. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/shard.rs +40 -0
  40. atomr_accel-0.1.0/atomr/crates/atomr-cluster-sharding/src/shard_region.rs +129 -0
  41. atomr_accel-0.1.0/atomr/crates/atomr-config/Cargo.toml +28 -0
  42. atomr_accel-0.1.0/atomr/crates/atomr-config/README.md +208 -0
  43. atomr_accel-0.1.0/atomr/crates/atomr-config/src/error.rs +25 -0
  44. atomr_accel-0.1.0/atomr/crates/atomr-config/src/hocon.rs +698 -0
  45. atomr_accel-0.1.0/atomr/crates/atomr-config/src/lib.rs +19 -0
  46. atomr_accel-0.1.0/atomr/crates/atomr-config/src/path.rs +56 -0
  47. atomr_accel-0.1.0/atomr/crates/atomr-config/src/reference.conf.toml +70 -0
  48. atomr_accel-0.1.0/atomr/crates/atomr-config/src/reference.rs +6 -0
  49. atomr_accel-0.1.0/atomr/crates/atomr-config/src/value.rs +256 -0
  50. atomr_accel-0.1.0/atomr/crates/atomr-config/tests/hocon_integration.rs +67 -0
  51. atomr_accel-0.1.0/atomr/crates/atomr-core/Cargo.toml +44 -0
  52. atomr_accel-0.1.0/atomr/crates/atomr-core/README.md +208 -0
  53. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/actor_cell.rs +227 -0
  54. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/actor_ref.rs +266 -0
  55. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/actor_system.rs +244 -0
  56. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/address.rs +86 -0
  57. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/context.rs +266 -0
  58. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/coordinated_shutdown.rs +91 -0
  59. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/deploy.rs +50 -0
  60. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/extensions.rs +66 -0
  61. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/fsm.rs +85 -0
  62. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/inbox.rs +53 -0
  63. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/mod.rs +44 -0
  64. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/observer.rs +23 -0
  65. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/path.rs +106 -0
  66. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/props.rs +121 -0
  67. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/provider.rs +32 -0
  68. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/remote.rs +60 -0
  69. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/scheduler/hashed_wheel.rs +179 -0
  70. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/scheduler/mod.rs +40 -0
  71. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/scheduler/tokio_scheduler.rs +98 -0
  72. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/sender.rs +108 -0
  73. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/stash.rs +177 -0
  74. atomr_accel-0.1.0/atomr/crates/atomr-core/src/actor/traits.rs +60 -0
  75. atomr_accel-0.1.0/atomr/crates/atomr-core/src/dispatch/dispatcher.rs +140 -0
  76. atomr_accel-0.1.0/atomr/crates/atomr-core/src/dispatch/mailbox.rs +53 -0
  77. atomr_accel-0.1.0/atomr/crates/atomr-core/src/dispatch/message_queues.rs +264 -0
  78. atomr_accel-0.1.0/atomr/crates/atomr-core/src/dispatch/mod.rs +11 -0
  79. atomr_accel-0.1.0/atomr/crates/atomr-core/src/event/dead_letters.rs +62 -0
  80. atomr_accel-0.1.0/atomr/crates/atomr-core/src/event/event_stream.rs +138 -0
  81. atomr_accel-0.1.0/atomr/crates/atomr-core/src/event/logging.rs +31 -0
  82. atomr_accel-0.1.0/atomr/crates/atomr-core/src/event/mod.rs +10 -0
  83. atomr_accel-0.1.0/atomr/crates/atomr-core/src/fsm_macro.rs +66 -0
  84. atomr_accel-0.1.0/atomr/crates/atomr-core/src/io/manager.rs +280 -0
  85. atomr_accel-0.1.0/atomr/crates/atomr-core/src/io/mod.rs +9 -0
  86. atomr_accel-0.1.0/atomr/crates/atomr-core/src/io/tcp.rs +27 -0
  87. atomr_accel-0.1.0/atomr/crates/atomr-core/src/io/udp.rs +10 -0
  88. atomr_accel-0.1.0/atomr/crates/atomr-core/src/lib.rs +57 -0
  89. atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/ask.rs +22 -0
  90. atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/backoff.rs +64 -0
  91. atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/circuit_breaker.rs +128 -0
  92. atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/mod.rs +14 -0
  93. atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/pipe_to.rs +32 -0
  94. atomr_accel-0.1.0/atomr/crates/atomr-core/src/pattern/retry.rs +157 -0
  95. atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/broadcast.rs +19 -0
  96. atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/consistent_hash.rs +44 -0
  97. atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/mod.rs +23 -0
  98. atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/random.rs +33 -0
  99. atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/round_robin.rs +24 -0
  100. atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/scatter_gather.rs +41 -0
  101. atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/smallest_mailbox.rs +47 -0
  102. atomr_accel-0.1.0/atomr/crates/atomr-core/src/routing/tail_chopping.rs +113 -0
  103. atomr_accel-0.1.0/atomr/crates/atomr-core/src/serialization/json.rs +36 -0
  104. atomr_accel-0.1.0/atomr/crates/atomr-core/src/serialization/mod.rs +32 -0
  105. atomr_accel-0.1.0/atomr/crates/atomr-core/src/serialization/registry.rs +49 -0
  106. atomr_accel-0.1.0/atomr/crates/atomr-core/src/serialization/traits.rs +23 -0
  107. atomr_accel-0.1.0/atomr/crates/atomr-core/src/supervision.rs +292 -0
  108. atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/bounded_queue.rs +73 -0
  109. atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/clock.rs +50 -0
  110. atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/mod.rs +14 -0
  111. atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/snapshot.rs +115 -0
  112. atomr_accel-0.1.0/atomr/crates/atomr-core/src/util/type_registry.rs +56 -0
  113. atomr_accel-0.1.0/atomr/crates/atomr-core/tests/actor_lifecycle.rs +98 -0
  114. atomr_accel-0.1.0/atomr/crates/atomr-core/tests/fsm_macro.rs +44 -0
  115. atomr_accel-0.1.0/atomr/crates/atomr-core/tests/sender_typed.rs +107 -0
  116. atomr_accel-0.1.0/atomr/crates/atomr-core/tests/typed_context.rs +70 -0
  117. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/Cargo.toml +29 -0
  118. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/README.md +208 -0
  119. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/counters.rs +147 -0
  120. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/durable.rs +201 -0
  121. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/flag.rs +55 -0
  122. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/lib.rs +25 -0
  123. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/maps.rs +321 -0
  124. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/register.rs +55 -0
  125. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/replicator.rs +304 -0
  126. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/replicator_actor.rs +209 -0
  127. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/sets.rs +149 -0
  128. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/src/traits.rs +65 -0
  129. atomr_accel-0.1.0/atomr/crates/atomr-distributed-data/tests/replicator_actor_multinode.rs +51 -0
  130. atomr_accel-0.1.0/atomr/crates/atomr-macros/Cargo.toml +34 -0
  131. atomr_accel-0.1.0/atomr/crates/atomr-macros/README.md +208 -0
  132. atomr_accel-0.1.0/atomr/crates/atomr-macros/src/lib.rs +240 -0
  133. atomr_accel-0.1.0/atomr/crates/atomr-macros/tests/actor_msg.rs +15 -0
  134. atomr_accel-0.1.0/atomr/crates/atomr-macros/tests/derive_actor.rs +40 -0
  135. atomr_accel-0.1.0/atomr/crates/atomr-macros/tests/derive_receive.rs +49 -0
  136. atomr_accel-0.1.0/atomr/crates/atomr-macros/tests/props_macro.rs +42 -0
  137. atomr_accel-0.1.0/atomr/crates/atomr-persistence/Cargo.toml +28 -0
  138. atomr_accel-0.1.0/atomr/crates/atomr-persistence/README.md +208 -0
  139. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/alod.rs +97 -0
  140. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/async_snapshot.rs +136 -0
  141. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/eventsourced.rs +309 -0
  142. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/journal.rs +184 -0
  143. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/lib.rs +25 -0
  144. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/persistent_actor.rs +82 -0
  145. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/persistent_fsm.rs +277 -0
  146. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/receive_persistent.rs +247 -0
  147. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/recovery.rs +29 -0
  148. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/recovery_permitter.rs +132 -0
  149. atomr_accel-0.1.0/atomr/crates/atomr-persistence/src/snapshot.rs +51 -0
  150. atomr_accel-0.1.0/atomr/crates/atomr-remote/Cargo.toml +37 -0
  151. atomr_accel-0.1.0/atomr/crates/atomr-remote/README.md +208 -0
  152. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/acked_delivery.rs +175 -0
  153. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/address_uid.rs +71 -0
  154. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/cache.rs +152 -0
  155. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/chunking.rs +255 -0
  156. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/codec.rs +91 -0
  157. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/deadline_detector.rs +60 -0
  158. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/endpoint/mod.rs +242 -0
  159. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/endpoint_manager.rs +330 -0
  160. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/envelope.rs +84 -0
  161. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/error.rs +122 -0
  162. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/failure_detector.rs +11 -0
  163. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/failure_detector_registry.rs +60 -0
  164. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/lib.rs +106 -0
  165. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/metrics.rs +81 -0
  166. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/pdu.rs +64 -0
  167. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/phi_accrual.rs +121 -0
  168. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/provider.rs +67 -0
  169. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/reader_writer.rs +193 -0
  170. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/remote_props.rs +144 -0
  171. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/remote_ref.rs +104 -0
  172. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/remote_watcher.rs +194 -0
  173. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/router.rs +117 -0
  174. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/send_queue.rs +108 -0
  175. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/serialization/bincode_codec.rs +72 -0
  176. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/serialization/json_codec.rs +13 -0
  177. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/serialization/mod.rs +174 -0
  178. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/settings.rs +200 -0
  179. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/system.rs +227 -0
  180. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/system_daemon.rs +175 -0
  181. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/tls.rs +191 -0
  182. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/akka_protocol.rs +269 -0
  183. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/failure_injector.rs +86 -0
  184. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/mod.rs +73 -0
  185. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/tcp.rs +274 -0
  186. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/test_transport.rs +123 -0
  187. atomr_accel-0.1.0/atomr/crates/atomr-remote/src/transport/throttle.rs +78 -0
  188. atomr_accel-0.1.0/atomr/crates/atomr-remote/tests/quarantine_lifecycle.rs +39 -0
  189. atomr_accel-0.1.0/atomr/crates/atomr-remote/tests/two_process.rs +193 -0
  190. atomr_accel-0.1.0/atomr/crates/atomr-streams/Cargo.toml +34 -0
  191. atomr_accel-0.1.0/atomr/crates/atomr-streams/README.md +208 -0
  192. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/bidi.rs +20 -0
  193. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/file_io.rs +121 -0
  194. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/flow.rs +119 -0
  195. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/framing.rs +153 -0
  196. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/graph.rs +30 -0
  197. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/hub.rs +202 -0
  198. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/junction.rs +105 -0
  199. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/kill_switch.rs +120 -0
  200. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/lib.rs +67 -0
  201. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/lifecycle.rs +104 -0
  202. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/materializer.rs +65 -0
  203. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/overflow.rs +163 -0
  204. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/queue.rs +60 -0
  205. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/recovery.rs +155 -0
  206. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/restart.rs +123 -0
  207. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/routing.rs +123 -0
  208. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/runnable.rs +31 -0
  209. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/sink.rs +226 -0
  210. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/source.rs +389 -0
  211. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/stream_ref.rs +158 -0
  212. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/substream.rs +134 -0
  213. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/supervision.rs +131 -0
  214. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/tcp.rs +151 -0
  215. atomr_accel-0.1.0/atomr/crates/atomr-streams/src/timed.rs +146 -0
  216. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/Cargo.toml +74 -0
  217. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/README.md +208 -0
  218. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/actor_registry.rs +171 -0
  219. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/bus.rs +116 -0
  220. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/cluster.rs +208 -0
  221. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/ddata.rs +71 -0
  222. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/dead_letters.rs +100 -0
  223. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/dto.rs +185 -0
  224. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/exporters/config.rs +98 -0
  225. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/exporters/mod.rs +26 -0
  226. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/exporters/otel.rs +315 -0
  227. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/exporters/prometheus.rs +431 -0
  228. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/lib.rs +117 -0
  229. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/persistence.rs +184 -0
  230. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/remote.rs +133 -0
  231. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/sharding.rs +94 -0
  232. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/src/streams.rs +78 -0
  233. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/actor_registry_integration.rs +51 -0
  234. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/cluster_integration.rs +47 -0
  235. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/dead_letters_integration.rs +35 -0
  236. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/exporters_integration.rs +33 -0
  237. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/persistence_integration.rs +45 -0
  238. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/remote_streams_ddata_integration.rs +63 -0
  239. atomr_accel-0.1.0/atomr/crates/atomr-telemetry/tests/sharding_integration.rs +44 -0
  240. atomr_accel-0.1.0/atomr/crates/atomr-testkit/Cargo.toml +29 -0
  241. atomr_accel-0.1.0/atomr/crates/atomr-testkit/README.md +208 -0
  242. atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/event_filter.rs +60 -0
  243. atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/lib.rs +18 -0
  244. atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/multinode.rs +180 -0
  245. atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/probe.rs +242 -0
  246. atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/test_kit.rs +41 -0
  247. atomr_accel-0.1.0/atomr/crates/atomr-testkit/src/test_scheduler.rs +221 -0
  248. atomr_accel-0.1.0/atomr-accel/Cargo.lock +2056 -0
  249. atomr_accel-0.1.0/atomr-accel/Cargo.toml +54 -0
  250. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/Cargo.toml +126 -0
  251. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/README.md +371 -0
  252. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/benches/rng_throughput.rs +90 -0
  253. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/benches/sgemm_overhead.rs +135 -0
  254. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/echo_no_gpu.rs +60 -0
  255. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/fft_1d.rs +54 -0
  256. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/jit_relu.rs +46 -0
  257. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/pipeline_no_gpu.rs +43 -0
  258. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/rng_uniform.rs +64 -0
  259. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/examples/sgemm.rs +77 -0
  260. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/completion/host_fn.rs +96 -0
  261. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/completion/mod.rs +35 -0
  262. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/completion/poll.rs +92 -0
  263. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/completion/sync.rs +40 -0
  264. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/alloc_msg.rs +56 -0
  265. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/context_actor.rs +543 -0
  266. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/device_actor.rs +746 -0
  267. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/mod.rs +14 -0
  268. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/device/state.rs +144 -0
  269. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/dispatcher.rs +137 -0
  270. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/error.rs +242 -0
  271. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/gpu_ref.rs +159 -0
  272. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/graph/mod.rs +388 -0
  273. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/host/mod.rs +17 -0
  274. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/host/pinned.rs +417 -0
  275. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/blas.rs +206 -0
  276. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/blas_lt.rs +183 -0
  277. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/collective.rs +244 -0
  278. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/cudnn_actor.rs +720 -0
  279. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/envelope.rs +201 -0
  280. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/fft.rs +439 -0
  281. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/mod.rs +76 -0
  282. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/nvrtc.rs +374 -0
  283. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/record.rs +230 -0
  284. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/rng.rs +328 -0
  285. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/solver.rs +1052 -0
  286. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/sparse.rs +703 -0
  287. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/kernel/tensor.rs +522 -0
  288. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/lib.rs +62 -0
  289. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/memory/managed.rs +388 -0
  290. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/memory/mod.rs +13 -0
  291. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/multi_device/mod.rs +11 -0
  292. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/multi_device/world_actor.rs +348 -0
  293. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/observability.rs +159 -0
  294. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/p2p/mod.rs +462 -0
  295. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/pipeline/executor.rs +206 -0
  296. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/pipeline/mod.rs +38 -0
  297. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/pipeline/sink.rs +85 -0
  298. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/pipeline/stage.rs +26 -0
  299. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/placement/mod.rs +254 -0
  300. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/placement/sharded.rs +174 -0
  301. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/prelude.rs +68 -0
  302. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/replay/mod.rs +440 -0
  303. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/stream/mod.rs +60 -0
  304. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/stream/per_actor.rs +88 -0
  305. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/stream/pool.rs +60 -0
  306. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/stream/single.rs +25 -0
  307. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/src/streams_pipeline.rs +86 -0
  308. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/contract_e2e.rs +137 -0
  309. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/end_to_end_e2e.rs +105 -0
  310. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/kernel_envelope.rs +33 -0
  311. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/pinned_memcpy_e2e.rs +115 -0
  312. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/pinned_pool_lifecycle.rs +46 -0
  313. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/replay_persistence.rs +80 -0
  314. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/rng_fill_e2e.rs +58 -0
  315. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/sgemm_e2e.rs +75 -0
  316. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/spmv_e2e.rs +164 -0
  317. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/supervisor_decider.rs +94 -0
  318. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/svd_e2e.rs +183 -0
  319. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/typed_alloc.rs +123 -0
  320. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-cuda/tests/watch_generation.rs +105 -0
  321. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/Cargo.toml +46 -0
  322. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/README.md +116 -0
  323. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/buffer.rs +72 -0
  324. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/device.rs +289 -0
  325. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/errors.rs +97 -0
  326. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/lib.rs +46 -0
  327. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/nvrtc.rs +42 -0
  328. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/rng.rs +36 -0
  329. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/runtime.rs +26 -0
  330. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/src/system.rs +98 -0
  331. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/tests/conftest.py +12 -0
  332. atomr_accel-0.1.0/atomr-accel/crates/atomr-accel-py/tests/test_smoke.py +76 -0
  333. atomr_accel-0.1.0/pyproject.toml +35 -0
  334. atomr_accel-0.1.0/python/atomr_accel/__init__.py +68 -0
@@ -0,0 +1,140 @@
1
+ Metadata-Version: 2.4
2
+ Name: atomr-accel
3
+ Version: 0.1.0
4
+ Classifier: Development Status :: 4 - Beta
5
+ Classifier: License :: OSI Approved :: Apache Software License
6
+ Classifier: Programming Language :: Rust
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Programming Language :: Python :: 3 :: Only
9
+ Classifier: Topic :: Scientific/Engineering
10
+ Classifier: Topic :: Software Development :: Libraries
11
+ Requires-Dist: numpy>=1.24
12
+ Requires-Dist: pytest>=7 ; extra == 'test'
13
+ Requires-Dist: numpy>=1.24 ; extra == 'test'
14
+ Provides-Extra: test
15
+ Summary: Actor-shaped face for compute-acceleration backends (NVIDIA CUDA shipping; ROCm / Metal / oneAPI / Vulkan future), on the atomr actor runtime.
16
+ Keywords: cuda,gpu,atomr,actor,ml,accelerator
17
+ Home-Page: https://github.com/rustakka/atomr-accel
18
+ Author: atomr-accel contributors
19
+ License: Apache-2.0
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
22
+ Project-URL: Source, https://github.com/rustakka/atomr-accel
23
+
24
+ # atomr-accel (Python)
25
+
26
+ Python bindings for [atomr-accel](../..) — drive an actor-supervised
27
+ NVIDIA CUDA pipeline directly from Python without juggling streams,
28
+ contexts, or hand-rolled retry loops.
29
+
30
+ ```python
31
+ import numpy as np
32
+ import atomr_accel
33
+
34
+ with atomr_accel.System.open("my-app") as sys:
35
+ dev = sys.spawn_device(device_id=0) # real CUDA device
36
+
37
+ # Allocate two N×N f32 buffers on-device.
38
+ n = 256
39
+ a = dev.allocate_f32(n * n)
40
+ b = dev.allocate_f32(n * n)
41
+ c = dev.allocate_f32(n * n)
42
+
43
+ # Upload from numpy.
44
+ dev.copy_from_numpy(a, np.ones(n * n, dtype=np.float32))
45
+ dev.copy_from_numpy(b, np.full(n * n, 2.0, dtype=np.float32))
46
+
47
+ # Run cuBLAS SGEMM — the call blocks until the kernel finishes.
48
+ dev.sgemm(a, b, c, m=n, n=n, k=n, alpha=1.0, beta=0.0)
49
+
50
+ # Pull the result back into a fresh numpy array.
51
+ result = dev.copy_to_numpy(c)
52
+ print(result.reshape(n, n))
53
+ ```
54
+
55
+ For hosts without a GPU, pass `mock=True` to `spawn_device` and the
56
+ device replies `Unrecoverable("...mock mode")` for any kernel call —
57
+ useful for testing the surrounding plumbing in CI.
58
+
59
+ ## Install
60
+
61
+ The wheel builds with [maturin](https://www.maturin.rs/):
62
+
63
+ ```bash
64
+ # from this directory
65
+ pip install maturin pytest numpy
66
+ maturin develop --release # builds + installs into the active venv
67
+ pytest tests/ # runs the no-GPU smoke suite
68
+ ```
69
+
70
+ For a release wheel:
71
+
72
+ ```bash
73
+ maturin build --release --no-default-features --features extension-module
74
+ # wheel lands in target/wheels/
75
+ ```
76
+
77
+ The pure-Python facade (`python/atomr_accel/__init__.py`) re-exports
78
+ the native classes and exception types. Downstream libraries import
79
+ from `atomr_accel` and treat `atomr_accel._native` as private.
80
+
81
+ ## Feature flags
82
+
83
+ The Rust crate matches `atomr-accel`'s feature gating so the wheel can
84
+ be built minimal or full:
85
+
86
+ | Feature | Adds |
87
+ |-------------------|-------------------------------------------------|
88
+ | (default) | `System`, `Device`, `GpuBuffer`, exceptions |
89
+ | `curand` | `RngGenerator` |
90
+ | `nvrtc` | `NvrtcKernel` |
91
+ | `cudnn` / `cufft` / `cusolver` / `cublaslt` / `nccl` | placeholder; future Python surfaces |
92
+ | `core-libs` / `training-libs` / `full-cuda` | aggregates |
93
+
94
+ ```bash
95
+ maturin develop --features atomr-accel-py/curand,atomr-accel-py/nvrtc
96
+ ```
97
+
98
+ ## Public API
99
+
100
+ | Class / function | What it wraps |
101
+ |---------------------------------|-----------------------------------------------------|
102
+ | `atomr_accel.System.open(name)` | A `atomr_core::actor::ActorSystem` lifetime |
103
+ | `system.spawn_device(id, mock=)` | A `DeviceActor` (real or mock) |
104
+ | `device.allocate_f32(len)` | `DeviceMsg::AllocateF32` → `GpuBuffer` |
105
+ | `device.copy_from_numpy(buf, np)` | H2D `CopyFromHostF32` |
106
+ | `device.copy_to_numpy(buf)` | D2H `CopyToHostF32` → numpy `float32` array |
107
+ | `device.sgemm(a,b,c,m,n,k,...)` | cuBLAS SGEMM via `BlasActor` |
108
+ | `device.stats()` | `DeviceMsg::Stats` → `DeviceLoad` |
109
+ | `GpuBuffer.is_stale()` | Generation token check vs. `DeviceState` |
110
+ | `GpuRuntimeError` (and subclasses) | Typed `GpuError` mapping |
111
+
112
+ Every method blocks the calling thread until the underlying actor
113
+ replies (the GIL is released for the duration via `py.allow_threads`).
114
+ Async wrappers can be layered later via
115
+ `pyo3_async_runtimes::tokio::future_into_py`.
116
+
117
+ ## How it works
118
+
119
+ Three pieces:
120
+
121
+ 1. **A shared tokio runtime.** The first call to
122
+ `System.open(...)` initializes a multi-threaded scheduler; every
123
+ subsequent call reuses it. Implemented in `src/runtime.rs` via
124
+ `pyo3-async-runtimes::tokio::init`.
125
+ 2. **The `_native` extension module.** `src/lib.rs` registers
126
+ `System`, `Device`, `GpuBuffer`, exceptions, and (feature-gated)
127
+ `RngGenerator` / `NvrtcKernel`. Each Python class wraps a typed
128
+ `ActorRef<...>` from atomr-accel and converts replies via
129
+ `errors::map_gpu`.
130
+ 3. **The pure-Python facade** at `python/atomr_accel/__init__.py`. Hides
131
+ `_native`; documents the API; gives downstream libraries a stable
132
+ import path.
133
+
134
+ See [docs/python-bridge.md](../../docs/python-bridge.md) for the
135
+ full architecture write-up.
136
+
137
+ ## License
138
+
139
+ Apache-2.0.
140
+
@@ -0,0 +1,116 @@
1
+ # atomr-accel (Python)
2
+
3
+ Python bindings for [atomr-accel](../..) — drive an actor-supervised
4
+ NVIDIA CUDA pipeline directly from Python without juggling streams,
5
+ contexts, or hand-rolled retry loops.
6
+
7
+ ```python
8
+ import numpy as np
9
+ import atomr_accel
10
+
11
+ with atomr_accel.System.open("my-app") as sys:
12
+ dev = sys.spawn_device(device_id=0) # real CUDA device
13
+
14
+ # Allocate two N×N f32 buffers on-device.
15
+ n = 256
16
+ a = dev.allocate_f32(n * n)
17
+ b = dev.allocate_f32(n * n)
18
+ c = dev.allocate_f32(n * n)
19
+
20
+ # Upload from numpy.
21
+ dev.copy_from_numpy(a, np.ones(n * n, dtype=np.float32))
22
+ dev.copy_from_numpy(b, np.full(n * n, 2.0, dtype=np.float32))
23
+
24
+ # Run cuBLAS SGEMM — the call blocks until the kernel finishes.
25
+ dev.sgemm(a, b, c, m=n, n=n, k=n, alpha=1.0, beta=0.0)
26
+
27
+ # Pull the result back into a fresh numpy array.
28
+ result = dev.copy_to_numpy(c)
29
+ print(result.reshape(n, n))
30
+ ```
31
+
32
+ For hosts without a GPU, pass `mock=True` to `spawn_device` and the
33
+ device replies `Unrecoverable("...mock mode")` for any kernel call —
34
+ useful for testing the surrounding plumbing in CI.
35
+
36
+ ## Install
37
+
38
+ The wheel builds with [maturin](https://www.maturin.rs/):
39
+
40
+ ```bash
41
+ # from this directory
42
+ pip install maturin pytest numpy
43
+ maturin develop --release # builds + installs into the active venv
44
+ pytest tests/ # runs the no-GPU smoke suite
45
+ ```
46
+
47
+ For a release wheel:
48
+
49
+ ```bash
50
+ maturin build --release --no-default-features --features extension-module
51
+ # wheel lands in target/wheels/
52
+ ```
53
+
54
+ The pure-Python facade (`python/atomr_accel/__init__.py`) re-exports
55
+ the native classes and exception types. Downstream libraries import
56
+ from `atomr_accel` and treat `atomr_accel._native` as private.
57
+
58
+ ## Feature flags
59
+
60
+ The Rust crate matches `atomr-accel`'s feature gating so the wheel can
61
+ be built minimal or full:
62
+
63
+ | Feature | Adds |
64
+ |-------------------|-------------------------------------------------|
65
+ | (default) | `System`, `Device`, `GpuBuffer`, exceptions |
66
+ | `curand` | `RngGenerator` |
67
+ | `nvrtc` | `NvrtcKernel` |
68
+ | `cudnn` / `cufft` / `cusolver` / `cublaslt` / `nccl` | placeholder; future Python surfaces |
69
+ | `core-libs` / `training-libs` / `full-cuda` | aggregates |
70
+
71
+ ```bash
72
+ maturin develop --features atomr-accel-py/curand,atomr-accel-py/nvrtc
73
+ ```
74
+
75
+ ## Public API
76
+
77
+ | Class / function | What it wraps |
78
+ |---------------------------------|-----------------------------------------------------|
79
+ | `atomr_accel.System.open(name)` | A `atomr_core::actor::ActorSystem` lifetime |
80
+ | `system.spawn_device(id, mock=)` | A `DeviceActor` (real or mock) |
81
+ | `device.allocate_f32(len)` | `DeviceMsg::AllocateF32` → `GpuBuffer` |
82
+ | `device.copy_from_numpy(buf, np)` | H2D `CopyFromHostF32` |
83
+ | `device.copy_to_numpy(buf)` | D2H `CopyToHostF32` → numpy `float32` array |
84
+ | `device.sgemm(a,b,c,m,n,k,...)` | cuBLAS SGEMM via `BlasActor` |
85
+ | `device.stats()` | `DeviceMsg::Stats` → `DeviceLoad` |
86
+ | `GpuBuffer.is_stale()` | Generation token check vs. `DeviceState` |
87
+ | `GpuRuntimeError` (and subclasses) | Typed `GpuError` mapping |
88
+
89
+ Every method blocks the calling thread until the underlying actor
90
+ replies (the GIL is released for the duration via `py.allow_threads`).
91
+ Async wrappers can be layered later via
92
+ `pyo3_async_runtimes::tokio::future_into_py`.
93
+
94
+ ## How it works
95
+
96
+ Three pieces:
97
+
98
+ 1. **A shared tokio runtime.** The first call to
99
+ `System.open(...)` initializes a multi-threaded scheduler; every
100
+ subsequent call reuses it. Implemented in `src/runtime.rs` via
101
+ `pyo3-async-runtimes::tokio::init`.
102
+ 2. **The `_native` extension module.** `src/lib.rs` registers
103
+ `System`, `Device`, `GpuBuffer`, exceptions, and (feature-gated)
104
+ `RngGenerator` / `NvrtcKernel`. Each Python class wraps a typed
105
+ `ActorRef<...>` from atomr-accel and converts replies via
106
+ `errors::map_gpu`.
107
+ 3. **The pure-Python facade** at `python/atomr_accel/__init__.py`. Hides
108
+ `_native`; documents the API; gives downstream libraries a stable
109
+ import path.
110
+
111
+ See [docs/python-bridge.md](../../docs/python-bridge.md) for the
112
+ full architecture write-up.
113
+
114
+ ## License
115
+
116
+ Apache-2.0.
@@ -0,0 +1,198 @@
1
+ [workspace]
2
+ resolver = "2"
3
+ members = [
4
+ "crates/atomr",
5
+ "crates/atomr-core",
6
+ "crates/atomr-config",
7
+ "crates/atomr-macros",
8
+ "crates/atomr-testkit",
9
+ "crates/atomr-remote",
10
+ "crates/atomr-cluster",
11
+ "crates/atomr-cluster-tools",
12
+ "crates/atomr-cluster-sharding",
13
+ "crates/atomr-cluster-metrics",
14
+ "crates/atomr-distributed-data",
15
+ "crates/atomr-persistence",
16
+ "crates/atomr-persistence-query",
17
+ "crates/atomr-persistence-tck",
18
+ "crates/atomr-persistence-query-inmemory",
19
+ "crates/atomr-persistence-sql",
20
+ "crates/atomr-persistence-redis",
21
+ "crates/atomr-persistence-mongodb",
22
+ "crates/atomr-persistence-cassandra",
23
+ "crates/atomr-persistence-aws",
24
+ "crates/atomr-persistence-azure",
25
+ "crates/atomr-streams",
26
+ "crates/atomr-telemetry",
27
+ "crates/atomr-dashboard",
28
+ "crates/atomr-coordination",
29
+ "crates/atomr-discovery",
30
+ "crates/atomr-di",
31
+ "crates/atomr-hosting",
32
+ "crates/atomr-serialization-hyperion",
33
+ "xtask",
34
+ "examples/pingpong",
35
+ "examples/chat",
36
+ "examples/fault-tolerance",
37
+ "examples/event-sourced-counter",
38
+ "examples/cluster-pubsub-chat",
39
+ "examples/sharded-keyvalue",
40
+ "benches/ping_throughput",
41
+ "crates/atomr-profiler",
42
+ "crates/py-bindings/pycore",
43
+ "crates/py-bindings/pytestkit",
44
+ "crates/py-bindings/pyremote",
45
+ "crates/py-bindings/pycluster",
46
+ "crates/py-bindings/pycluster-tools",
47
+ "crates/py-bindings/pycluster-sharding",
48
+ "crates/py-bindings/pyddata",
49
+ "crates/py-bindings/pypersistence",
50
+ "crates/py-bindings/pystreams",
51
+ "crates/py-bindings/pycoordination",
52
+ "crates/py-bindings/pydiscovery",
53
+ "crates/py-bindings/pydi",
54
+ "crates/py-bindings/pyhosting",
55
+ ]
56
+ exclude = ["akka.net"]
57
+
58
+ [workspace.package]
59
+ version = "0.1.0"
60
+ edition = "2021"
61
+ rust-version = "1.78"
62
+ license = "Apache-2.0"
63
+ repository = "https://github.com/rustakka/atomr"
64
+ homepage = "https://github.com/rustakka/atomr"
65
+ authors = ["atomr contributors"]
66
+
67
+ [workspace.dependencies]
68
+ # Async / runtime
69
+ tokio = { version = "1.39", features = ["full"] }
70
+ tokio-util = { version = "0.7", features = ["codec"] }
71
+ async-trait = "0.1"
72
+ futures = "0.3"
73
+ futures-util = "0.3"
74
+ pin-project-lite = "0.2"
75
+
76
+ # Logging / tracing
77
+ tracing = "0.1"
78
+ tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
79
+
80
+ # Concurrency primitives
81
+ dashmap = "6"
82
+ parking_lot = "0.12"
83
+ crossbeam-channel = "0.5"
84
+ crossbeam-queue = "0.3"
85
+ flume = "0.11"
86
+
87
+ # Serialization
88
+ serde = { version = "1", features = ["derive"] }
89
+ serde_json = "1"
90
+ bincode = { version = "2.0.0-rc.3", features = ["serde"] }
91
+ bytes = "1"
92
+
93
+ # Protobuf (remote)
94
+ prost = "0.13"
95
+ prost-build = "0.13"
96
+
97
+ # Config
98
+ config = { version = "0.14", default-features = false, features = ["toml", "json", "yaml"] }
99
+ toml = "0.8"
100
+
101
+ # Error / utility
102
+ thiserror = "1"
103
+ anyhow = "1"
104
+ once_cell = "1"
105
+
106
+ # Testing
107
+ proptest = "1"
108
+ criterion = { version = "0.5", default-features = false, features = ["html_reports"] }
109
+
110
+ # Macros
111
+ proc-macro2 = "1"
112
+ quote = "1"
113
+ syn = { version = "2", features = ["full", "extra-traits"] }
114
+
115
+ # Python bindings
116
+ pyo3 = { version = "0.22", default-features = false }
117
+ pyo3-async-runtimes = { version = "0.22", default-features = false, features = ["tokio-runtime"] }
118
+
119
+ # UUID / time
120
+ uuid = { version = "1", features = ["v4", "serde"] }
121
+ chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] }
122
+
123
+ # Persistence drivers (used by provider crates; kept here so versions stay in sync)
124
+ sqlx = { version = "0.8", default-features = false, features = ["runtime-tokio-rustls", "macros", "any", "chrono", "uuid"] }
125
+ fred = { version = "10", default-features = false, features = ["i-std", "transactions"] }
126
+ mongodb = { version = "3" }
127
+ scylla = { version = "1" }
128
+ aws-config = { version = "1" }
129
+ aws-sdk-dynamodb = { version = "1" }
130
+ reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }
131
+ hmac = "0.12"
132
+ sha2 = "0.10"
133
+ base64 = "0.22"
134
+ url = "2"
135
+
136
+ # HTTP / web (atomr-dashboard)
137
+ axum = { version = "0.7", default-features = false, features = ["json", "ws", "http1", "tokio", "query", "matched-path"] }
138
+ tower = { version = "0.5", default-features = false, features = ["util"] }
139
+ tower-http = { version = "0.5", default-features = false, features = ["cors", "trace", "fs"] }
140
+ rust-embed = { version = "8" }
141
+ clap = { version = "4", features = ["derive"] }
142
+
143
+ # Internal
144
+ atomr = { path = "crates/atomr", version = "0.1.0" }
145
+ atomr-core = { path = "crates/atomr-core", version = "0.1.0" }
146
+ atomr-config = { path = "crates/atomr-config", version = "0.1.0" }
147
+ atomr-macros = { path = "crates/atomr-macros", version = "0.1.0" }
148
+ atomr-testkit = { path = "crates/atomr-testkit", version = "0.1.0" }
149
+ atomr-remote = { path = "crates/atomr-remote", version = "0.1.0" }
150
+ atomr-cluster = { path = "crates/atomr-cluster", version = "0.1.0" }
151
+ atomr-cluster-tools = { path = "crates/atomr-cluster-tools", version = "0.1.0" }
152
+ atomr-cluster-sharding = { path = "crates/atomr-cluster-sharding", version = "0.1.0" }
153
+ atomr-cluster-metrics = { path = "crates/atomr-cluster-metrics", version = "0.1.0" }
154
+ atomr-distributed-data = { path = "crates/atomr-distributed-data", version = "0.1.0" }
155
+ atomr-persistence = { path = "crates/atomr-persistence", version = "0.1.0" }
156
+ atomr-persistence-query = { path = "crates/atomr-persistence-query", version = "0.1.0" }
157
+ atomr-persistence-query-inmemory = { path = "crates/atomr-persistence-query-inmemory", version = "0.1.0" }
158
+ atomr-persistence-tck = { path = "crates/atomr-persistence-tck", version = "0.1.0" }
159
+ atomr-persistence-sql = { path = "crates/atomr-persistence-sql", version = "0.1.0" }
160
+ atomr-persistence-redis = { path = "crates/atomr-persistence-redis", version = "0.1.0" }
161
+ atomr-persistence-mongodb = { path = "crates/atomr-persistence-mongodb", version = "0.1.0" }
162
+ atomr-persistence-cassandra = { path = "crates/atomr-persistence-cassandra", version = "0.1.0" }
163
+ atomr-persistence-aws = { path = "crates/atomr-persistence-aws", version = "0.1.0" }
164
+ atomr-persistence-azure = { path = "crates/atomr-persistence-azure", version = "0.1.0" }
165
+ atomr-streams = { path = "crates/atomr-streams", version = "0.1.0" }
166
+ atomr-telemetry = { path = "crates/atomr-telemetry", version = "0.1.0" }
167
+ atomr-dashboard = { path = "crates/atomr-dashboard", version = "0.1.0" }
168
+ atomr-coordination = { path = "crates/atomr-coordination", version = "0.1.0" }
169
+ atomr-discovery = { path = "crates/atomr-discovery", version = "0.1.0" }
170
+ atomr-di = { path = "crates/atomr-di", version = "0.1.0" }
171
+ atomr-hosting = { path = "crates/atomr-hosting", version = "0.1.0" }
172
+
173
+ [profile.release]
174
+ opt-level = 3
175
+ lto = "thin"
176
+ codegen-units = 1
177
+
178
+ [profile.bench]
179
+ opt-level = 3
180
+ lto = "thin"
181
+
182
+ # Phase 0 lint baseline. See docs/idiomatic-rust.md (P-4).
183
+ #
184
+ # `todo`/`unimplemented` are denied workspace-wide because the audit
185
+ # found 0 sites; any regression breaks CI immediately.
186
+ #
187
+ # `unwrap_used`/`expect_used`/`panic` (and `print_stdout`/
188
+ # `print_stderr`/`dbg_macro` in library crates) are NOT promoted to
189
+ # `warn` here — the existing CI gate runs `cargo clippy ... -D
190
+ # warnings` and the audit found pre-existing sites that would break
191
+ # it. Instead, the per-crate counts are tracked by `cargo xtask
192
+ # audit` against `docs/reports/audit-2026-04.json`; CI runs
193
+ # `cargo xtask audit --check` and fails on regression. Phases that
194
+ # touch a given crate ratchet that crate's lints up to `warn`/`deny`
195
+ # once the corresponding sites are cleaned up (see Phase 13).
196
+ [workspace.lints.clippy]
197
+ todo = "deny"
198
+ unimplemented = "deny"
@@ -0,0 +1,36 @@
1
+ [package]
2
+ name = "atomr-cluster"
3
+ description = "Membership, gossip, reachability, vector clocks, and split-brain resolvers for atomr clusters."
4
+ version.workspace = true
5
+ edition.workspace = true
6
+ rust-version.workspace = true
7
+ license.workspace = true
8
+ repository.workspace = true
9
+ homepage.workspace = true
10
+ readme = "README.md"
11
+ documentation = "https://docs.rs/atomr-cluster"
12
+ keywords = ["actor", "cluster", "distributed", "gossip"]
13
+ categories = ["network-programming", "concurrency"]
14
+
15
+ [dependencies]
16
+ atomr-core = { workspace = true }
17
+ atomr-remote = { workspace = true }
18
+ atomr-config = { workspace = true }
19
+ tokio = { workspace = true }
20
+ serde = { workspace = true }
21
+ serde_json = { workspace = true }
22
+ bincode = { workspace = true }
23
+ parking_lot = { workspace = true }
24
+ thiserror = { workspace = true }
25
+ tracing = { workspace = true }
26
+ async-trait = { workspace = true }
27
+
28
+ [dev-dependencies]
29
+ atomr-testkit = { workspace = true }
30
+
31
+ [lints]
32
+ workspace = true
33
+
34
+ [package.metadata.docs.rs]
35
+ all-features = true
36
+ rustdoc-args = ["--cfg", "docsrs"]