tigerbeetle-node 0.8.1 → 0.9.143

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 (83) hide show
  1. package/README.md +584 -184
  2. package/dist/benchmark.js +59 -51
  3. package/dist/benchmark.js.map +1 -1
  4. package/dist/bin/aarch64-linux-gnu/client.node +0 -0
  5. package/dist/bin/aarch64-linux-musl/client.node +0 -0
  6. package/dist/bin/aarch64-macos/client.node +0 -0
  7. package/dist/bin/x86_64-linux-gnu/client.node +0 -0
  8. package/dist/bin/x86_64-linux-musl/client.node +0 -0
  9. package/dist/bin/x86_64-macos/client.node +0 -0
  10. package/dist/bin/x86_64-windows/client.node +0 -0
  11. package/dist/bindings.d.ts +141 -0
  12. package/dist/bindings.js +112 -0
  13. package/dist/bindings.js.map +1 -0
  14. package/dist/index.d.ts +2 -125
  15. package/dist/index.js +51 -101
  16. package/dist/index.js.map +1 -1
  17. package/dist/test.js +69 -55
  18. package/dist/test.js.map +1 -1
  19. package/package-lock.json +26 -0
  20. package/package.json +17 -28
  21. package/src/benchmark.ts +58 -49
  22. package/src/bindings.ts +631 -0
  23. package/src/index.ts +71 -163
  24. package/src/node.zig +169 -148
  25. package/src/test.ts +71 -57
  26. package/src/translate.zig +19 -36
  27. package/.yarn/releases/yarn-berry.cjs +0 -55
  28. package/.yarnrc.yml +0 -1
  29. package/scripts/download_node_headers.sh +0 -25
  30. package/scripts/postinstall.sh +0 -6
  31. package/src/tigerbeetle/scripts/benchmark.bat +0 -46
  32. package/src/tigerbeetle/scripts/benchmark.sh +0 -55
  33. package/src/tigerbeetle/scripts/install.sh +0 -6
  34. package/src/tigerbeetle/scripts/install_zig.bat +0 -109
  35. package/src/tigerbeetle/scripts/install_zig.sh +0 -84
  36. package/src/tigerbeetle/scripts/lint.zig +0 -199
  37. package/src/tigerbeetle/scripts/upgrade_ubuntu_kernel.sh +0 -39
  38. package/src/tigerbeetle/scripts/vopr.bat +0 -48
  39. package/src/tigerbeetle/scripts/vopr.sh +0 -33
  40. package/src/tigerbeetle/scripts/vr_state_enumerate +0 -46
  41. package/src/tigerbeetle/src/benchmark.zig +0 -290
  42. package/src/tigerbeetle/src/cli.zig +0 -244
  43. package/src/tigerbeetle/src/config.zig +0 -239
  44. package/src/tigerbeetle/src/demo.zig +0 -125
  45. package/src/tigerbeetle/src/demo_01_create_accounts.zig +0 -35
  46. package/src/tigerbeetle/src/demo_02_lookup_accounts.zig +0 -7
  47. package/src/tigerbeetle/src/demo_03_create_transfers.zig +0 -24
  48. package/src/tigerbeetle/src/demo_04_create_pending_transfers.zig +0 -61
  49. package/src/tigerbeetle/src/demo_05_post_pending_transfers.zig +0 -37
  50. package/src/tigerbeetle/src/demo_06_void_pending_transfers.zig +0 -24
  51. package/src/tigerbeetle/src/demo_07_lookup_transfers.zig +0 -7
  52. package/src/tigerbeetle/src/fifo.zig +0 -104
  53. package/src/tigerbeetle/src/io/benchmark.zig +0 -213
  54. package/src/tigerbeetle/src/io/darwin.zig +0 -793
  55. package/src/tigerbeetle/src/io/linux.zig +0 -1038
  56. package/src/tigerbeetle/src/io/test.zig +0 -643
  57. package/src/tigerbeetle/src/io/windows.zig +0 -1161
  58. package/src/tigerbeetle/src/io.zig +0 -34
  59. package/src/tigerbeetle/src/main.zig +0 -144
  60. package/src/tigerbeetle/src/message_bus.zig +0 -1000
  61. package/src/tigerbeetle/src/message_pool.zig +0 -142
  62. package/src/tigerbeetle/src/ring_buffer.zig +0 -289
  63. package/src/tigerbeetle/src/simulator.zig +0 -417
  64. package/src/tigerbeetle/src/state_machine.zig +0 -2470
  65. package/src/tigerbeetle/src/storage.zig +0 -308
  66. package/src/tigerbeetle/src/test/cluster.zig +0 -351
  67. package/src/tigerbeetle/src/test/message_bus.zig +0 -93
  68. package/src/tigerbeetle/src/test/network.zig +0 -179
  69. package/src/tigerbeetle/src/test/packet_simulator.zig +0 -387
  70. package/src/tigerbeetle/src/test/state_checker.zig +0 -145
  71. package/src/tigerbeetle/src/test/state_machine.zig +0 -76
  72. package/src/tigerbeetle/src/test/storage.zig +0 -438
  73. package/src/tigerbeetle/src/test/time.zig +0 -84
  74. package/src/tigerbeetle/src/tigerbeetle.zig +0 -222
  75. package/src/tigerbeetle/src/time.zig +0 -113
  76. package/src/tigerbeetle/src/unit_tests.zig +0 -14
  77. package/src/tigerbeetle/src/vsr/client.zig +0 -505
  78. package/src/tigerbeetle/src/vsr/clock.zig +0 -812
  79. package/src/tigerbeetle/src/vsr/journal.zig +0 -2293
  80. package/src/tigerbeetle/src/vsr/marzullo.zig +0 -309
  81. package/src/tigerbeetle/src/vsr/replica.zig +0 -5015
  82. package/src/tigerbeetle/src/vsr.zig +0 -1017
  83. package/yarn.lock +0 -42
@@ -1,34 +0,0 @@
1
- const std = @import("std");
2
- const builtin = @import("builtin");
3
- const assert = std.debug.assert;
4
- const os = std.os;
5
-
6
- const FIFO = @import("fifo.zig").FIFO;
7
- const IO_Linux = @import("io/linux.zig").IO;
8
- const IO_Darwin = @import("io/darwin.zig").IO;
9
- const IO_Windows = @import("io/windows.zig").IO;
10
-
11
- pub const IO = switch (builtin.target.os.tag) {
12
- .linux => IO_Linux,
13
- .windows => IO_Windows,
14
- .macos, .tvos, .watchos, .ios => IO_Darwin,
15
- else => @compileError("IO is not supported for platform"),
16
- };
17
-
18
- pub fn buffer_limit(buffer_len: usize) usize {
19
- // Linux limits how much may be written in a `pwrite()/pread()` call, which is `0x7ffff000` on
20
- // both 64-bit and 32-bit systems, due to using a signed C int as the return value, as well as
21
- // stuffing the errno codes into the last `4096` values.
22
- // Darwin limits writes to `0x7fffffff` bytes, more than that returns `EINVAL`.
23
- // The corresponding POSIX limit is `std.math.maxInt(isize)`.
24
- const limit = switch (builtin.target.os.tag) {
25
- .linux => 0x7ffff000,
26
- .macos, .ios, .watchos, .tvos => std.math.maxInt(i32),
27
- else => std.math.maxInt(isize),
28
- };
29
- return std.math.min(limit, buffer_len);
30
- }
31
-
32
- test "I/O" {
33
- _ = @import("io/test.zig");
34
- }
@@ -1,144 +0,0 @@
1
- const std = @import("std");
2
- const assert = std.debug.assert;
3
- const fmt = std.fmt;
4
- const mem = std.mem;
5
- const os = std.os;
6
- const log = std.log;
7
-
8
- const config = @import("config.zig");
9
- pub const log_level: std.log.Level = @intToEnum(std.log.Level, config.log_level);
10
-
11
- const cli = @import("cli.zig");
12
-
13
- const IO = @import("io.zig").IO;
14
- const Time = @import("time.zig").Time;
15
- const Storage = @import("storage.zig").Storage;
16
- const MessageBus = @import("message_bus.zig").MessageBusReplica;
17
- const StateMachine = @import("state_machine.zig").StateMachine;
18
-
19
- const vsr = @import("vsr.zig");
20
- const Replica = vsr.Replica(StateMachine, MessageBus, Storage, Time);
21
-
22
- pub fn main() !void {
23
- var io = try IO.init(128, 0);
24
- defer io.deinit();
25
-
26
- var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
27
- defer arena.deinit();
28
-
29
- const allocator = arena.allocator();
30
-
31
- switch (try cli.parse_args(allocator)) {
32
- .init => |args| try init(&io, args.cluster, args.replica, args.dir_fd),
33
- .start => |args| try start(
34
- &io,
35
- allocator,
36
- args.cluster,
37
- args.replica,
38
- args.addresses,
39
- args.dir_fd,
40
- ),
41
- }
42
- }
43
-
44
- // Pad the cluster id number and the replica index with 0s
45
- const filename_fmt = "cluster_{d:0>10}_replica_{d:0>3}.tigerbeetle";
46
- const filename_len = fmt.count(filename_fmt, .{ 0, 0 });
47
-
48
- /// Create a .tigerbeetle data file for the given args and exit
49
- fn init(io: *IO, cluster: u32, replica: u8, dir_fd: os.fd_t) !void {
50
- // Add 1 for the terminating null byte
51
- var buffer: [filename_len + 1]u8 = undefined;
52
- const filename = fmt.bufPrintZ(&buffer, filename_fmt, .{ cluster, replica }) catch unreachable;
53
- assert(filename.len == filename_len);
54
-
55
- // TODO Expose data file size on the CLI.
56
- const fd = try io.open_file(
57
- dir_fd,
58
- filename,
59
- config.journal_size_max,
60
- true,
61
- );
62
- std.os.close(fd);
63
-
64
- const file = try (std.fs.Dir{ .fd = dir_fd }).openFile(filename, .{ .write = true });
65
- defer file.close();
66
-
67
- {
68
- const write_size_max = 4 * 1024 * 1024;
69
- var write: [write_size_max]u8 = undefined;
70
- var offset: u64 = 0;
71
- while (true) {
72
- const write_size = vsr.format_journal(cluster, offset, &write);
73
- if (write_size == 0) break;
74
- try file.writeAll(write[0..write_size]);
75
- offset += write_size;
76
- }
77
- }
78
-
79
- log.info("initialized data file", .{});
80
- }
81
-
82
- /// Run as a replica server defined by the given args
83
- fn start(
84
- io: *IO,
85
- allocator: mem.Allocator,
86
- cluster: u32,
87
- replica_index: u8,
88
- addresses: []std.net.Address,
89
- dir_fd: os.fd_t,
90
- ) !void {
91
- // Add 1 for the terminating null byte
92
- var buffer: [filename_len + 1]u8 = undefined;
93
- const filename = fmt.bufPrintZ(&buffer, filename_fmt, .{ cluster, replica_index }) catch {
94
- unreachable;
95
- };
96
- assert(filename.len == filename_len);
97
-
98
- // TODO Expose data file size on the CLI.
99
- const storage_fd = try io.open_file(
100
- dir_fd,
101
- filename,
102
- config.journal_size_max, // TODO Double-check that we have space for redundant headers.
103
- false,
104
- );
105
-
106
- var state_machine = try StateMachine.init(
107
- allocator,
108
- config.accounts_max,
109
- config.transfers_max,
110
- config.transfers_pending_max,
111
- );
112
- var storage = try Storage.init(config.journal_size_max, storage_fd, io);
113
- var message_bus = try MessageBus.init(
114
- allocator,
115
- cluster,
116
- addresses,
117
- replica_index,
118
- io,
119
- );
120
- var time: Time = .{};
121
- var replica = try Replica.init(
122
- allocator,
123
- cluster,
124
- @intCast(u8, addresses.len),
125
- replica_index,
126
- &time,
127
- &storage,
128
- &message_bus,
129
- &state_machine,
130
- );
131
- message_bus.set_on_message(*Replica, &replica, Replica.on_message);
132
-
133
- log.info("cluster={x} replica={}: listening on {}", .{
134
- cluster,
135
- replica_index,
136
- addresses[replica_index],
137
- });
138
-
139
- while (true) {
140
- replica.tick();
141
- message_bus.tick();
142
- try io.run_for_ns(config.tick_ms * std.time.ns_per_ms);
143
- }
144
- }