summaryrefslogtreecommitdiff
path: root/src/allocators.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-06 18:11:36 -0300
committerGabriel Schneider <[email protected]>2026-09-07 13:59:12 -0300
commit60367d8fe23f6af98ec28e3cf6c2094dfe332df0 (patch)
tree310fc734173cf771881f4691c71909135fadde97 /src/allocators.zig
parentfa82cac885cb4738fe36d1e49b4749b5a3e31a4a (diff)
downloadpardes-60367d8fe23f6af98ec28e3cf6c2094dfe332df0.tar.gz
pardes-60367d8fe23f6af98ec28e3cf6c2094dfe332df0.zip
Refactor panes and filesystem; replace FUSE with 9P
Consolidate pane, layout, memory and host code. Serve 9P by default over Unix sockets, with runtime mounts and optional TCP/QUIC transports. Remove FUSE and obsolete proof-of-concept examples. Fix highlighting and terminal-history performance, expand differential and stress-test infrastructure, sort navigation results while preserving the next occurrence, add syntax-colored Braille minimaps, remove SPC-k, and document 9P interaction as a repository skill.
Diffstat (limited to 'src/allocators.zig')
-rw-r--r--src/allocators.zig104
1 files changed, 0 insertions, 104 deletions
diff --git a/src/allocators.zig b/src/allocators.zig
deleted file mode 100644
index 61c55f39..00000000
--- a/src/allocators.zig
+++ /dev/null
@@ -1,104 +0,0 @@
-const std = @import("std");
-const builtin = @import("builtin");
-const limits = @import("limits.zig");
-
-const Allocator = std.mem.Allocator;
-const debug_enabled = builtin.mode == .Debug;
-
-pub const Allocators = struct {
- pardes: Allocator,
- frame: Allocator,
- lsp: Allocator,
- tree_sitter: Allocator,
- image: Allocator,
- pdf: Allocator,
-};
-
-/// The static reservations, one per profile tier. See `limits.arena` for why
-/// each number is what it is, and why the board's are 4 KiB and zero.
-var pardes_fallback: std.heap.StackFallbackAllocator(limits.arena.pardes) = undefined;
-var frame_fallback: std.heap.StackFallbackAllocator(limits.arena.frame) = undefined;
-var tree_sitter_fallback: std.heap.StackFallbackAllocator(limits.arena.tree_sitter) = undefined;
-var image_fallback: std.heap.StackFallbackAllocator(limits.arena.image) = undefined;
-var pdf_fallback: std.heap.StackFallbackAllocator(limits.arena.pdf) = undefined;
-
-const Debug = std.heap.DebugAllocator(.{});
-var pardes_debug: Debug = .init;
-var frame_debug: Debug = .init;
-var lsp_debug: Debug = .init;
-var tree_sitter_debug: Debug = .init;
-var image_debug: Debug = .init;
-var pdf_debug: Debug = .init;
-
-/// Returns ordinary allocators backed by stdlib fixed-buffer fallbacks. LSP
-/// keeps the caller's allocator because its detached workers are concurrent.
-pub fn init(fallback: Allocator) Allocators {
- pardes_fallback.fallback_allocator = fallback;
- pardes_fallback.get_called = if (std.debug.runtime_safety) false else {};
- frame_fallback.fallback_allocator = fallback;
- frame_fallback.get_called = if (std.debug.runtime_safety) false else {};
- tree_sitter_fallback.fallback_allocator = fallback;
- tree_sitter_fallback.get_called = if (std.debug.runtime_safety) false else {};
- image_fallback.fallback_allocator = fallback;
- image_fallback.get_called = if (std.debug.runtime_safety) false else {};
- pdf_fallback.fallback_allocator = fallback;
- pdf_fallback.get_called = if (std.debug.runtime_safety) false else {};
-
- const raw: Allocators = .{
- .pardes = pardes_fallback.get(),
- .frame = frame_fallback.get(),
- .lsp = fallback,
- .tree_sitter = tree_sitter_fallback.get(),
- .image = image_fallback.get(),
- .pdf = pdf_fallback.get(),
- };
- if (!debug_enabled) return raw;
-
- pardes_debug = .{ .backing_allocator = raw.pardes };
- frame_debug = .{ .backing_allocator = raw.frame };
- lsp_debug = .{ .backing_allocator = raw.lsp };
- tree_sitter_debug = .{ .backing_allocator = raw.tree_sitter };
- image_debug = .{ .backing_allocator = raw.image };
- pdf_debug = .{ .backing_allocator = raw.pdf };
- return .{
- .pardes = pardes_debug.allocator(),
- .frame = frame_debug.allocator(),
- .lsp = lsp_debug.allocator(),
- .tree_sitter = tree_sitter_debug.allocator(),
- .image = image_debug.allocator(),
- .pdf = pdf_debug.allocator(),
- };
-}
-
-pub fn deinit() void {
- if (!debug_enabled) return;
- var leaked = pardes_debug.deinit() == .leak;
- leaked = (frame_debug.deinit() == .leak) or leaked;
- leaked = (lsp_debug.deinit() == .leak) or leaked;
- leaked = (tree_sitter_debug.deinit() == .leak) or leaked;
- leaked = (image_debug.deinit() == .leak) or leaked;
- leaked = (pdf_debug.deinit() == .leak) or leaked;
- if (leaked) @panic("allocator leaks detected");
-}
-
-test "fixed allocators are separate, spill, and restart" {
- var allocs = init(std.testing.allocator);
- const core = try allocs.pardes.alloc(u8, 32);
- const frame = try allocs.frame.alloc(u8, 32);
- try std.testing.expect(pardes_fallback.fixed_buffer_allocator.ownsPtr(core.ptr));
- try std.testing.expect(frame_fallback.fixed_buffer_allocator.ownsPtr(frame.ptr));
- try std.testing.expect(core.ptr != frame.ptr);
-
- const spill = try allocs.pardes.alloc(u8, limits.arena.pardes + 1);
- try std.testing.expect(!pardes_fallback.fixed_buffer_allocator.ownsPtr(spill.ptr));
- allocs.pardes.free(spill);
- allocs.frame.free(frame);
- allocs.pardes.free(core);
- deinit();
-
- allocs = init(std.testing.allocator);
- defer deinit();
- const restarted = try allocs.pardes.alloc(u8, 32);
- defer allocs.pardes.free(restarted);
- try std.testing.expect(pardes_fallback.fixed_buffer_allocator.ownsPtr(restarted.ptr));
-}