b6762ccb7c
Cleaner SIGINT handling
...
Use a Mutex to wait for the signal handler to fire instead of checking
an atomic boolean over and over again.
2026-01-06 23:03:21 -05:00
3b490fc3c8
Cleanup Server.zig
2026-01-06 22:27:13 -05:00
4896928352
Major restructuring
...
This makes things much easier to use as a library
2026-01-06 21:59:41 -05:00
cc03631838
Better cancelation handling
...
Based on this conversation with Andrew
https://ziggit.dev/t/am-i-canceling-my-std-io-group-incorrectly/13836
2026-01-06 21:21:14 -05:00
b87412ee66
Restructuring
...
Add a bunch of tests for the client
2026-01-06 20:43:49 -05:00
025a5344c8
Return error.Canceled from concurrent group task
2026-01-06 17:14:18 -05:00
c676a8218e
Support queue groups
2026-01-06 14:06:22 -05:00
81a93654a1
Don't reuse address
...
This was a temporary workaround for when I was not cleanly exiting.
Now that I am, this is not necessary.
2026-01-06 10:20:04 -05:00
6e9f6998bd
Use client allocator to own incoming messages to a client
2026-01-06 10:04:10 -05:00
318d467f5c
Optimize PUB and HPUB parsing
...
This will try to take better advantage of the buffered reading.
Instead of pushing one byte at a time to the array list for each
section, find the end index for each section, then alloc the arraylist
and copy the data into it all at once.
2026-01-05 20:13:24 -05:00
3342aa22ab
Update tests to work again
2026-01-05 18:26:43 -05:00
1d2af4a69a
Simplified queue access
...
Also correctly move resetting the task to the end instead of defer.
We don't want to reset the task in the case of an error, so shouldn't
use defer.
2026-01-05 13:56:40 -05:00
80d14f7303
Display help when there is no subcommand
2026-01-05 13:47:27 -05:00
e50d53ee7e
Add Payload type
...
stores short message buffers in a colocated array, overflowing to an
allocated slice when needed.
2026-01-05 10:34:31 -05:00
ca43a12b9b
Using separate queue for high throughput messages
2026-01-04 23:36:44 -05:00
69528a1b72
Probe for optimal network buffer size.
...
We want to match the underlying system socket buffer.
Filling this buffer minimizes the number of syscalls we do.
Larger would be a waste.
Also changed parser to use enums that more closely match the NATS
message types.
2026-01-04 20:57:31 -05:00
e81bcda920
holy moly goes way fast!!!
...
like 150 mbps now
2026-01-03 06:08:40 +00:00
fbc137e2b3
Kill dead code and use higher buffer
2026-01-03 06:02:47 +00:00
dcd09e2f10
cleanup imports
2026-01-03 05:54:14 +00:00
bd9829f684
Organize things
...
Making it easier to use the server as a library
2026-01-03 05:33:56 +00:00
a4ec798521
Fix parse errors, ownership errors.
2026-01-03 03:17:13 +00:00
9e32d014c2
Restructuring parser
...
Adding tests fore everything
2026-01-03 02:34:04 +00:00
f99b44fdb2
Fix double free
...
was freeing the wrong element before.
2026-01-03 02:33:12 +00:00
5a7d3caf9c
Subject validation
2026-01-02 23:57:40 +00:00
a21dbfe3bb
Remove unnecessary explicit enum
...
This can be computed (as it is now)
2026-01-02 23:31:16 +00:00
0f851a140d
Fix possible race condition
...
since the queue was being set in an async task and we were then calling send asserting that the queue was set, we could have triggered a panic.
didn't run into it but seemed likely to cause issues in the future.
also compute the buffer size for operators at comptime.
2026-01-02 23:13:54 +00:00
67908cf198
Move handshake from client to server
2026-01-02 22:37:54 +00:00
29e5b92ee0
Only check for ctrl+c every 10 ms
2026-01-02 20:50:57 +00:00
90b5b1548f
Add branch hints for high performance messaging.
2026-01-02 20:35:58 +00:00
9e9f7e8e50
Fix connect parsing
2026-01-02 20:28:26 +00:00
5f24108014
Don't assume capacity
2026-01-02 19:53:53 +00:00
6374952941
remove debug log
2026-01-02 19:34:59 +00:00
c38d13e911
Rework pub and hpub parse
...
support hpub in general, and properly support reply subjects
2026-01-02 19:16:07 +00:00
cd5281030e
2026-01-02 18:10:25 +00:00
2be370e379
Support subject patterns
...
clean up some tests
2026-01-02 15:29:58 +00:00
539255adb1
broke 100 mbps!!
...
coder@08714a4174bb:~$ nats bench sub foo -s localhost:4223
14:33:02 Starting Core NATS subscriber benchmark [clients=1, msg-size=128 B, msgs=100,000, multi-subject=false, subject=foo]
14:33:02 [1] Starting Core NATS subscriber, expecting 100,000 messages
Finished 0s [===============================================================================================================================] 100%
NATS Core NATS subscriber stats: 934,205 msgs/sec ~ 114 MiB/sec ~ 1.07us
2026-01-02 14:34:32 +00:00
faa552969d
Nicer logging
2026-01-02 14:31:34 +00:00
810e5f8211
Much better cleanup, still fast B)
2026-01-02 14:11:23 +00:00
aca265f095
Cleanup on error
2026-01-02 13:58:23 +00:00
4bf064056c
reorganize but crashing
...
not sure why, seems like i'm using the right allocators everywhere?
need to take another pass at this later.
2026-01-02 04:01:03 +00:00
a71f08e1f6
formatting
2026-01-02 02:18:37 +00:00
9ee8317cb0
Remove dead comments
2026-01-01 22:14:36 +00:00
5a395bdadf
Use group to make it easier to clean up client tasks on exit
2026-01-01 22:14:36 +00:00
a3e026ebf1
Cleanup for deinitializing
2026-01-01 22:14:36 +00:00
fc68749669
gracefully exit
...
simplify code
clean up dead code
2026-01-01 20:26:41 +00:00
987dc492a6
97 mbps !!! super fast
...
dosen't flush every message, pulls batches from the queue to send, and flushes at the end of each batch.
batches are a min of 1 message, but may be more.
2026-01-01 19:16:58 +00:00
86558986ef
Slower, but probably more correct
2026-01-01 18:50:52 +00:00
ca95c9a06c
Lock subs when reading it
...
should probably make a copy instead of doing io in the mutex
2026-01-01 18:50:03 +00:00
ec1912ba7e
Use a small stack buffer for client io
2026-01-01 16:55:04 +00:00
7baa2ed2ec
Use master yazap
...
Works against the latest master branch for zig again :)
2026-01-01 16:29:29 +00:00