tigerbeetle-node 0.11.13 → 0.12.1

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 (147) hide show
  1. package/README.md +5 -10
  2. package/dist/bin/aarch64-linux-gnu/client.node +0 -0
  3. package/dist/bin/aarch64-linux-musl/client.node +0 -0
  4. package/dist/bin/aarch64-macos/client.node +0 -0
  5. package/dist/bin/x86_64-linux-gnu/client.node +0 -0
  6. package/dist/bin/x86_64-linux-musl/client.node +0 -0
  7. package/dist/bin/x86_64-macos/client.node +0 -0
  8. package/dist/index.js +33 -1
  9. package/dist/index.js.map +1 -1
  10. package/package-lock.json +66 -0
  11. package/package.json +6 -16
  12. package/src/index.ts +56 -1
  13. package/src/node.zig +9 -9
  14. package/dist/.client.node.sha256 +0 -1
  15. package/scripts/build_lib.sh +0 -61
  16. package/scripts/download_node_headers.sh +0 -32
  17. package/src/tigerbeetle/scripts/benchmark.bat +0 -55
  18. package/src/tigerbeetle/scripts/benchmark.sh +0 -66
  19. package/src/tigerbeetle/scripts/confirm_image.sh +0 -44
  20. package/src/tigerbeetle/scripts/fail_on_diff.sh +0 -9
  21. package/src/tigerbeetle/scripts/fuzz_loop.sh +0 -15
  22. package/src/tigerbeetle/scripts/fuzz_loop_hash_log.sh +0 -12
  23. package/src/tigerbeetle/scripts/fuzz_unique_errors.sh +0 -7
  24. package/src/tigerbeetle/scripts/install.bat +0 -7
  25. package/src/tigerbeetle/scripts/install.sh +0 -21
  26. package/src/tigerbeetle/scripts/install_zig.bat +0 -113
  27. package/src/tigerbeetle/scripts/install_zig.sh +0 -90
  28. package/src/tigerbeetle/scripts/lint.zig +0 -199
  29. package/src/tigerbeetle/scripts/pre-commit.sh +0 -9
  30. package/src/tigerbeetle/scripts/scripts/benchmark.bat +0 -55
  31. package/src/tigerbeetle/scripts/scripts/benchmark.sh +0 -66
  32. package/src/tigerbeetle/scripts/scripts/confirm_image.sh +0 -44
  33. package/src/tigerbeetle/scripts/scripts/fail_on_diff.sh +0 -9
  34. package/src/tigerbeetle/scripts/scripts/fuzz_loop.sh +0 -15
  35. package/src/tigerbeetle/scripts/scripts/fuzz_loop_hash_log.sh +0 -12
  36. package/src/tigerbeetle/scripts/scripts/fuzz_unique_errors.sh +0 -7
  37. package/src/tigerbeetle/scripts/scripts/install.bat +0 -7
  38. package/src/tigerbeetle/scripts/scripts/install.sh +0 -21
  39. package/src/tigerbeetle/scripts/scripts/install_zig.bat +0 -113
  40. package/src/tigerbeetle/scripts/scripts/install_zig.sh +0 -90
  41. package/src/tigerbeetle/scripts/scripts/lint.zig +0 -199
  42. package/src/tigerbeetle/scripts/scripts/pre-commit.sh +0 -9
  43. package/src/tigerbeetle/scripts/scripts/shellcheck.sh +0 -5
  44. package/src/tigerbeetle/scripts/scripts/tests_on_alpine.sh +0 -10
  45. package/src/tigerbeetle/scripts/scripts/tests_on_ubuntu.sh +0 -14
  46. package/src/tigerbeetle/scripts/scripts/upgrade_ubuntu_kernel.sh +0 -48
  47. package/src/tigerbeetle/scripts/scripts/validate_docs.sh +0 -23
  48. package/src/tigerbeetle/scripts/scripts/vr_state_enumerate +0 -46
  49. package/src/tigerbeetle/scripts/shellcheck.sh +0 -5
  50. package/src/tigerbeetle/scripts/tests_on_alpine.sh +0 -10
  51. package/src/tigerbeetle/scripts/tests_on_ubuntu.sh +0 -14
  52. package/src/tigerbeetle/scripts/upgrade_ubuntu_kernel.sh +0 -48
  53. package/src/tigerbeetle/scripts/validate_docs.sh +0 -23
  54. package/src/tigerbeetle/scripts/vr_state_enumerate +0 -46
  55. package/src/tigerbeetle/src/benchmark.zig +0 -336
  56. package/src/tigerbeetle/src/config.zig +0 -233
  57. package/src/tigerbeetle/src/constants.zig +0 -428
  58. package/src/tigerbeetle/src/ewah.zig +0 -286
  59. package/src/tigerbeetle/src/ewah_benchmark.zig +0 -120
  60. package/src/tigerbeetle/src/ewah_fuzz.zig +0 -130
  61. package/src/tigerbeetle/src/fifo.zig +0 -120
  62. package/src/tigerbeetle/src/io/benchmark.zig +0 -213
  63. package/src/tigerbeetle/src/io/darwin.zig +0 -814
  64. package/src/tigerbeetle/src/io/linux.zig +0 -1071
  65. package/src/tigerbeetle/src/io/test.zig +0 -643
  66. package/src/tigerbeetle/src/io/windows.zig +0 -1183
  67. package/src/tigerbeetle/src/io.zig +0 -34
  68. package/src/tigerbeetle/src/iops.zig +0 -107
  69. package/src/tigerbeetle/src/lsm/README.md +0 -308
  70. package/src/tigerbeetle/src/lsm/binary_search.zig +0 -341
  71. package/src/tigerbeetle/src/lsm/bloom_filter.zig +0 -125
  72. package/src/tigerbeetle/src/lsm/compaction.zig +0 -603
  73. package/src/tigerbeetle/src/lsm/composite_key.zig +0 -77
  74. package/src/tigerbeetle/src/lsm/direction.zig +0 -11
  75. package/src/tigerbeetle/src/lsm/eytzinger.zig +0 -587
  76. package/src/tigerbeetle/src/lsm/eytzinger_benchmark.zig +0 -330
  77. package/src/tigerbeetle/src/lsm/forest.zig +0 -205
  78. package/src/tigerbeetle/src/lsm/forest_fuzz.zig +0 -450
  79. package/src/tigerbeetle/src/lsm/grid.zig +0 -573
  80. package/src/tigerbeetle/src/lsm/groove.zig +0 -1036
  81. package/src/tigerbeetle/src/lsm/k_way_merge.zig +0 -474
  82. package/src/tigerbeetle/src/lsm/level_iterator.zig +0 -332
  83. package/src/tigerbeetle/src/lsm/manifest.zig +0 -617
  84. package/src/tigerbeetle/src/lsm/manifest_level.zig +0 -878
  85. package/src/tigerbeetle/src/lsm/manifest_log.zig +0 -789
  86. package/src/tigerbeetle/src/lsm/manifest_log_fuzz.zig +0 -691
  87. package/src/tigerbeetle/src/lsm/merge_iterator.zig +0 -106
  88. package/src/tigerbeetle/src/lsm/node_pool.zig +0 -235
  89. package/src/tigerbeetle/src/lsm/posted_groove.zig +0 -381
  90. package/src/tigerbeetle/src/lsm/segmented_array.zig +0 -1329
  91. package/src/tigerbeetle/src/lsm/segmented_array_benchmark.zig +0 -148
  92. package/src/tigerbeetle/src/lsm/segmented_array_fuzz.zig +0 -9
  93. package/src/tigerbeetle/src/lsm/set_associative_cache.zig +0 -850
  94. package/src/tigerbeetle/src/lsm/table.zig +0 -1009
  95. package/src/tigerbeetle/src/lsm/table_immutable.zig +0 -192
  96. package/src/tigerbeetle/src/lsm/table_iterator.zig +0 -340
  97. package/src/tigerbeetle/src/lsm/table_mutable.zig +0 -203
  98. package/src/tigerbeetle/src/lsm/test.zig +0 -439
  99. package/src/tigerbeetle/src/lsm/tree.zig +0 -1169
  100. package/src/tigerbeetle/src/lsm/tree_fuzz.zig +0 -479
  101. package/src/tigerbeetle/src/message_bus.zig +0 -1013
  102. package/src/tigerbeetle/src/message_pool.zig +0 -156
  103. package/src/tigerbeetle/src/ring_buffer.zig +0 -399
  104. package/src/tigerbeetle/src/simulator.zig +0 -580
  105. package/src/tigerbeetle/src/state_machine/auditor.zig +0 -578
  106. package/src/tigerbeetle/src/state_machine/workload.zig +0 -883
  107. package/src/tigerbeetle/src/state_machine.zig +0 -2099
  108. package/src/tigerbeetle/src/static_allocator.zig +0 -65
  109. package/src/tigerbeetle/src/stdx.zig +0 -171
  110. package/src/tigerbeetle/src/storage.zig +0 -393
  111. package/src/tigerbeetle/src/testing/cluster/message_bus.zig +0 -82
  112. package/src/tigerbeetle/src/testing/cluster/network.zig +0 -237
  113. package/src/tigerbeetle/src/testing/cluster/state_checker.zig +0 -169
  114. package/src/tigerbeetle/src/testing/cluster/storage_checker.zig +0 -202
  115. package/src/tigerbeetle/src/testing/cluster.zig +0 -444
  116. package/src/tigerbeetle/src/testing/fuzz.zig +0 -140
  117. package/src/tigerbeetle/src/testing/hash_log.zig +0 -66
  118. package/src/tigerbeetle/src/testing/id.zig +0 -99
  119. package/src/tigerbeetle/src/testing/packet_simulator.zig +0 -374
  120. package/src/tigerbeetle/src/testing/priority_queue.zig +0 -645
  121. package/src/tigerbeetle/src/testing/reply_sequence.zig +0 -139
  122. package/src/tigerbeetle/src/testing/state_machine.zig +0 -250
  123. package/src/tigerbeetle/src/testing/storage.zig +0 -757
  124. package/src/tigerbeetle/src/testing/table.zig +0 -247
  125. package/src/tigerbeetle/src/testing/time.zig +0 -84
  126. package/src/tigerbeetle/src/tigerbeetle.zig +0 -227
  127. package/src/tigerbeetle/src/time.zig +0 -112
  128. package/src/tigerbeetle/src/tracer.zig +0 -529
  129. package/src/tigerbeetle/src/unit_tests.zig +0 -40
  130. package/src/tigerbeetle/src/vopr.zig +0 -495
  131. package/src/tigerbeetle/src/vsr/README.md +0 -209
  132. package/src/tigerbeetle/src/vsr/client.zig +0 -544
  133. package/src/tigerbeetle/src/vsr/clock.zig +0 -855
  134. package/src/tigerbeetle/src/vsr/journal.zig +0 -2415
  135. package/src/tigerbeetle/src/vsr/journal_format_fuzz.zig +0 -111
  136. package/src/tigerbeetle/src/vsr/marzullo.zig +0 -309
  137. package/src/tigerbeetle/src/vsr/replica.zig +0 -6616
  138. package/src/tigerbeetle/src/vsr/replica_format.zig +0 -219
  139. package/src/tigerbeetle/src/vsr/superblock.zig +0 -1631
  140. package/src/tigerbeetle/src/vsr/superblock_client_table.zig +0 -256
  141. package/src/tigerbeetle/src/vsr/superblock_free_set.zig +0 -929
  142. package/src/tigerbeetle/src/vsr/superblock_free_set_fuzz.zig +0 -334
  143. package/src/tigerbeetle/src/vsr/superblock_fuzz.zig +0 -390
  144. package/src/tigerbeetle/src/vsr/superblock_manifest.zig +0 -615
  145. package/src/tigerbeetle/src/vsr/superblock_quorums.zig +0 -394
  146. package/src/tigerbeetle/src/vsr/superblock_quorums_fuzz.zig +0 -314
  147. package/src/tigerbeetle/src/vsr.zig +0 -1425
@@ -1,213 +0,0 @@
1
- const std = @import("std");
2
- const os = std.os;
3
- const assert = std.debug.assert;
4
- const log = std.log.scoped(.io_benchmark);
5
-
6
- const Time = @import("../time.zig").Time;
7
- const IO = @import("../io.zig").IO;
8
-
9
- // 1 MB: larger than socket buffer so forces io_pending on darwin
10
- // Configure this value to smaller amounts to test IO scheduling overhead
11
- const buffer_size = 1 * 1024 * 1024;
12
-
13
- // max time for the benchmark to run
14
- const run_duration = 1 * std.time.ns_per_s;
15
-
16
- pub fn main() !void {
17
- var gpa = std.heap.GeneralPurposeAllocator(.{}){};
18
- const allocator = gpa.allocator();
19
- defer {
20
- const leaks = gpa.deinit();
21
- assert(!leaks);
22
- }
23
-
24
- const buffer = try allocator.alloc(u8, buffer_size * 2);
25
- defer allocator.free(buffer);
26
- std.mem.set(u8, buffer, 0);
27
-
28
- var self = Context{
29
- .io = try IO.init(32, 0),
30
- .tx = .{ .buffer = buffer[0 * buffer_size ..][0..buffer_size] },
31
- .rx = .{ .buffer = buffer[1 * buffer_size ..][0..buffer_size] },
32
- };
33
- defer self.io.deinit();
34
-
35
- var timer = Time{};
36
- const started = timer.monotonic();
37
- defer {
38
- const elapsed_ns = timer.monotonic() - started;
39
- const transferred_mb = @intToFloat(f64, self.transferred) / 1024 / 1024;
40
-
41
- log.info("took {}ms @ {d:.2} MB/s\n", .{
42
- elapsed_ns / std.time.ns_per_ms,
43
- transferred_mb / (@intToFloat(f64, elapsed_ns) / std.time.ns_per_s),
44
- });
45
- }
46
-
47
- // Setup the server socket
48
- self.server.fd = try self.io.open_socket(os.AF.INET, os.SOCK.STREAM, os.IPPROTO.TCP);
49
- defer os.closeSocket(self.server.fd);
50
-
51
- const address = try std.net.Address.parseIp4("127.0.0.1", 3131);
52
- try os.setsockopt(
53
- self.server.fd,
54
- os.SOL.SOCKET,
55
- os.SO.REUSEADDR,
56
- &std.mem.toBytes(@as(c_int, 1)),
57
- );
58
- try os.bind(self.server.fd, &address.any, address.getOsSockLen());
59
- try os.listen(self.server.fd, 1);
60
-
61
- // Start accepting the client
62
- self.io.accept(
63
- *Context,
64
- &self,
65
- Context.on_accept,
66
- &self.server.completion,
67
- self.server.fd,
68
- );
69
-
70
- // Setup the client connection
71
- self.tx.socket.fd = try self.io.open_socket(os.AF.INET, os.SOCK.STREAM, os.IPPROTO.TCP);
72
- defer os.closeSocket(self.tx.socket.fd);
73
-
74
- self.io.connect(
75
- *Context,
76
- &self,
77
- Context.on_connect,
78
- &self.tx.socket.completion,
79
- self.tx.socket.fd,
80
- address,
81
- );
82
-
83
- // Run the IO loop for the duration of the benchmark
84
- log.info("running for {}", .{std.fmt.fmtDuration(run_duration)});
85
- try self.io.run_for_ns(run_duration);
86
-
87
- // Assert that everything is connected
88
- assert(self.server.fd != IO.INVALID_SOCKET);
89
- assert(self.tx.socket.fd != IO.INVALID_SOCKET);
90
- assert(self.rx.socket.fd != IO.INVALID_SOCKET);
91
-
92
- // Close the accepted client socket.
93
- // The actual client socket + server socket are closed by defer
94
- os.closeSocket(self.rx.socket.fd);
95
- }
96
-
97
- const Context = struct {
98
- io: IO,
99
- tx: Pipe,
100
- rx: Pipe,
101
- server: Socket = .{},
102
- transferred: u64 = 0,
103
-
104
- const Socket = struct {
105
- fd: os.socket_t = IO.INVALID_SOCKET,
106
- completion: IO.Completion = undefined,
107
- };
108
- const Pipe = struct {
109
- socket: Socket = .{},
110
- buffer: []u8,
111
- transferred: usize = 0,
112
- };
113
-
114
- fn on_accept(
115
- self: *Context,
116
- completion: *IO.Completion,
117
- result: IO.AcceptError!os.socket_t,
118
- ) void {
119
- assert(self.rx.socket.fd == IO.INVALID_SOCKET);
120
- assert(&self.server.completion == completion);
121
- self.rx.socket.fd = result catch |err| std.debug.panic("accept error {}", .{err});
122
-
123
- // Start reading data from the accepted client socket
124
- assert(self.rx.transferred == 0);
125
- self.do_transfer("rx", .read, 0);
126
- }
127
-
128
- fn on_connect(
129
- self: *Context,
130
- completion: *IO.Completion,
131
- result: IO.ConnectError!void,
132
- ) void {
133
- _ = result catch unreachable;
134
-
135
- assert(self.tx.socket.fd != IO.INVALID_SOCKET);
136
- assert(&self.tx.socket.completion == completion);
137
-
138
- // Start sending data to the server's accepted client
139
- assert(self.tx.transferred == 0);
140
- self.do_transfer("tx", .write, 0);
141
- }
142
-
143
- const TransferType = enum {
144
- read,
145
- write,
146
- };
147
-
148
- fn do_transfer(
149
- self: *Context,
150
- comptime pipe_name: []const u8,
151
- comptime transfer_type: TransferType,
152
- bytes: usize,
153
- ) void {
154
- // The type of IO to perform and what type of IO to perform next (after the current one completes).
155
- const transfer_info = switch (transfer_type) {
156
- .read => .{
157
- .IoError = IO.RecvError,
158
- .io_func = "recv",
159
- .next = TransferType.write,
160
- },
161
- .write => .{
162
- .IoError = IO.SendError,
163
- .io_func = "send",
164
- .next = TransferType.read,
165
- },
166
- };
167
-
168
- assert(bytes <= buffer_size);
169
- self.transferred += bytes;
170
-
171
- // Select which connection (tx or rx) depending on the type of transfer
172
- const pipe = &@field(self, pipe_name);
173
- pipe.transferred += bytes;
174
- assert(pipe.transferred <= pipe.buffer.len);
175
-
176
- // There's still more data to transfer on the connection
177
- if (pipe.transferred < pipe.buffer.len) {
178
- // Callback which calls this function again when data is transferred.
179
- // Effectively loops back above.
180
- const on_transfer = struct {
181
- fn on_transfer(
182
- _self: *Context,
183
- completion: *IO.Completion,
184
- result: transfer_info.IoError!usize,
185
- ) void {
186
- const _bytes = result catch |err| {
187
- std.debug.panic("{s} error: {}", .{ transfer_info.io_func, err });
188
- };
189
- assert(&@field(_self, pipe_name).socket.completion == completion);
190
- _self.do_transfer(pipe_name, transfer_type, _bytes);
191
- }
192
- }.on_transfer;
193
-
194
- // Perform the IO with the callback for the completion
195
- return @field(self.io, transfer_info.io_func)(
196
- *Context,
197
- self,
198
- on_transfer,
199
- &pipe.socket.completion,
200
- pipe.socket.fd,
201
- pipe.buffer[pipe.transferred..],
202
- );
203
- }
204
-
205
- // This transfer type completed transferring all the bytes.
206
- // Now, switch the transfer type (transfer_info.next).
207
- // This means if we read to the buffer, now we write it out.
208
- // Inversely, if we wrote the buffer, now we read it back.
209
- // This is basically a modified echo benchmark.
210
- pipe.transferred = 0;
211
- self.do_transfer(pipe_name, transfer_info.next, 0);
212
- }
213
- };