Commit graph

115 commits

Author SHA1 Message Date
6395b63bd8
feat: implement endpoint link and exit handling 2026-04-15 13:03:55 +02:00
4baca8b192
refactor: implement transport_error 2026-04-15 13:03:55 +02:00
650beac975
refactor: remove proxy_id concept entirely
Not really needed and just adds extra fluff.
2026-04-15 13:03:55 +02:00
1b9338bdd3
refactor: trace actor instance IDs instead of pointer values 2026-04-15 13:03:55 +02:00
25143e6cb0
fix(cbor): reset json stream to dec mode in tohex
We were leaking hex mode into the stream causing the following values to
sometimes be hex.
2026-04-15 13:03:55 +02:00
69a5062c82
refactor: make instance_id a incrementing integer instead of a point value 2026-04-15 13:03:55 +02:00
3dcb9f0e2f
feat(remote): implement proxy from-substitution and outbound ID routing
Inbound wire messages are now delivered FROM the proxy representing the
remote sender, so local actors see a replyable `from`. This enables full
two-way communication across the wire:

- endpoint: deliver send_named/send via proxy (deliver_named/deliver_pid)
  instead of sending raw; from_id=0 bypasses proxy for anonymous sends

- proxy: handle deliver_named and deliver_pid to send from within actor
  scope (providing from-substitution); cache one owned pid clone per sender
  keyed by stable instance_id() to avoid use-after-free when forwarding
  reply handles to the endpoint asynchronously

- test: add remote_endpoint_id_test covering the full inbound proxy table /
  from-substitution / outbound ID table / send-by-ID round-trip

- test: extend remote_child_endpoint with echo_id actor and send_wire_by_id
  to support the new test
2026-04-15 13:03:55 +02:00
639999f37e
refactor: export trace_to_json_file in zip api 2026-04-15 13:03:55 +02:00
a51c6c51fa
feat: add instance_id actor primative 2026-04-15 13:03:55 +02:00
7432e8382a
feat(remote): implement outbound ID table for local actor identity on the wire
- Proxy passes sender's handle pointer as from_id instead of 0
- Endpoint assigns stable wire IDs to local actors on first send, keyed by handle pointer
- Reverse table (wire_id → pid) enables inbound send routing to local actors by ID
- Full bidirectional send-by-ID is now functional end-to-end
2026-04-15 13:03:55 +02:00
43406334b7
feat(remote): add inbound proxy table to endpoint
- Spawn a local Proxy actor on first message from each new remote actor ID
- Route inbound wire exit to the corresponding proxy
- Clean up proxy table entries on proxy_exit notification
- Teardown sends {"exit", "transport_closed"} to all live proxies
2026-04-15 13:03:55 +02:00
d06af8367d
feat: add unlinked-spawn to the C and Zig APIs 2026-04-15 13:03:55 +02:00
d40db53545
WIP: implement proxy 2026-04-15 13:03:55 +02:00
ae619675de
WIP: add remaining message types 2026-04-15 13:03:54 +02:00
02bda4ae61
WIP: add remote_endpoint_test 2026-04-15 13:03:54 +02:00
df8f3876a9
WIP refactor: add remote_poc_test 2026-04-15 13:03:54 +02:00
a817bc6868
fix: update subprocess to new Receiver interface 2026-04-15 13:03:54 +02:00
3a321ecfe0
fix(zig-0.16): update return trace handling to new API 2026-04-15 12:46:13 +02:00
d545b10ce8
build: update to zig-0.16.0-dev.3133+5ec8e45f3 2026-04-09 19:47:17 +02:00
e9c1758101
feat: add thespian_unexpected to C API 2026-03-04 21:42:30 +01:00
cf6685b34b
refactor: add some misuse checks to the C API 2026-03-04 20:19:59 +01:00
703e5d5be1
feat: add thespian_exit to the C API 2026-03-04 20:19:15 +01:00
5a729b6d06
feat: BREAKING force all zig actors to declare a destructor
Actors may be destroyed without ever calling their receivers. This is
regular behavior when an actor is killed by an exit message. C++ actors
cleanup automatically via their destructors. Up to now zig actor had to
enable trapping and cleanup on the exit message. This was a big foot gun
and cumbersome.

Now all zig actors are required to pass a deinit function to
thespian.receive. This simplifies clean up and prevents the foot gun
entirely.
2026-03-04 19:32:11 +01:00
224342611c
WIP: start work on a ip_tcp_client_server test in zig 2026-03-04 10:49:33 +01:00
d1cb42d53c
feat: add C & Zig bindings for socket 2026-03-04 10:49:33 +01:00
e19ff271d0
feat: add C & Zig bindings for tcp connector and acceptor 2026-03-04 10:49:33 +01:00
ed91a28f5f
feat: add C & Zig bindings for unix acceptor and connector 2026-03-04 10:49:33 +01:00
6eadc0fe29
fix: port subprocess_windows.zig to zig-0.15 2025-10-01 16:55:40 +02:00
fb9207d225
fix: subprocess drain should write buffered data too 2025-09-29 22:27:39 +02:00
ad6f40b456
fix: don't use noopFlush in subprocess writer 2025-09-29 22:04:14 +02:00
25b10b6b5b
fix: remove bogus assert 2025-09-26 14:00:23 +02:00
9361399898
fix: more zig-0.15 api fixes 2025-09-25 15:12:35 +02:00
0b72daf165
fix: port subprogess to zig-0.15 2025-09-25 15:12:01 +02:00
aa6c78f5cb
fix: more zig-0.15 API fixes 2025-09-24 22:32:43 +02:00
e9629548ee
fix: more zig-0.15 API changes 2025-08-24 16:08:32 +02:00
d9c93e9783
fix: update calling convention syntax 2025-08-22 14:31:41 +02:00
51751adce6
fix: API changes for zig-0.15.1 2025-08-22 14:12:01 +02:00
4d317d7bf0
build: update to new writer API in zig-0.15.0-dev.1034+bd97b6618 2025-07-15 17:35:19 +02:00
ccdcbbff09
fix: don't try to export posix symbols on windows 2025-07-14 18:29:08 +02:00
b3176b32e6
feat: export debugging signal handlers to zig 2025-07-03 15:58:41 +02:00
2f7228cea6
feat: add support for tty local debugger 2025-07-03 15:58:12 +02:00
829a8d33e9
feat: export additional crash handlers to zig 2025-07-01 16:58:39 +02:00
e2332a8f56
fix: don't hook SIGTRAP in crash handler 2025-07-01 16:57:42 +02:00
a7b2354ad2
fix: remove descriptor error log messages 2025-04-30 14:48:35 +02:00
733831c30e
fix: release fd from stream_descriptor to prevent double or prematurely close 2025-04-30 14:46:47 +02:00
42a98a44e7
build: migrate to separate cbor package 2025-03-26 20:38:47 +01:00
a3f0f5b089
Merge commit '9ca04ddfc7' 2025-02-11 18:35:15 +01:00
9ca04ddfc7
feat: add a minimum number of threads to spawn with env MIN_THREAD override 2025-02-11 18:34:46 +01:00
eb9b8a3dcf
fix: windows build with 0.14.0-dev.3039 2025-02-04 23:29:28 +01:00
063c441c30
fix: build with 0.14.0-dev.3039 2025-02-04 22:52:28 +01:00