Zsort - #169
Zsort#169
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (4)
📝 WalkthroughWalkthroughThe pull request adds a Zig import-sorting CLI, integrates it with build and lint steps, normalizes imports across ChangesImport tooling and declaration analysis
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
Comment |
There was a problem hiding this comment.
Actionable comments posted: 15
🧹 Nitpick comments (5)
package.json (1)
12-12: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winRun
fix-importsbeforezig fmt src.The chain runs
zig fmt srcfirst andzig build fix-importsthird.zsortassembles the import block from trimmed lines joined with newlines and does not invoke the formatter on its output. Any formatting difference it introduces therefore survives to the end of thelintrun, and a laterzig fmt --checkin CI fails.Move
zig build fix-importsbeforezig fmt srcso the formatter normalizes the rewritten import block.♻️ Proposed reordering
- "lint": "zig fmt src && zlint --deny-warnings && zig build fix-imports && zig build lint && zig build check --summary all" + "lint": "zig build fix-imports && zig fmt src && zlint --deny-warnings && zig build lint && zig build check --summary all"🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@package.json` at line 12, Reorder the lint command so “zig build fix-imports” runs before “zig fmt src”; keep the remaining checks in their existing order.build.zig (1)
53-60: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win
tools/zsort.zigis not covered by the formatter, the linter, or thecheckstep.Three gaps follow from the new file location:
package.jsonrunszig fmt srcandzlint --deny-warnings, both scoped tosrc.tools/zsort.zigis not formatted or linted.zsort_exeis not added to thecheckstep at line 109, sozig build checkdoes not compile it. A compile error in the tool surfaces only when a developer runscheck-importsorfix-imports.- The tool disables a lint rule at line 1 with
// zlint-disable no-print, which implies linting was intended for it.Add
check_step.dependOn(&zsort_exe.step);and extend thezig fmtargument list to includetools.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@build.zig` around lines 53 - 60, Update the build and formatting configuration for tools/zsort.zig: add zsort_exe as a dependency of check_step so zig build check compiles it, and extend the package.json zig fmt arguments from src to also include tools. Leave the existing zlint configuration unchanged.src/wire/encode.zig (1)
4-6: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueOptional: import
../presence/manager.zigonce.Lines 4 and 5 call
@import("../presence/manager.zig")twice to extract two symbols. Zig caches module imports, so there is no compilation cost. The repetition of the path string is the only concern: a future move ofmanager.zigrequires two edits.Note that the sort order of these two lines depends on the declaration length tie-break in
Import.lessThan, because both lines share the same path. That coupling disappears if a single module alias is used.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/wire/encode.zig` around lines 4 - 6, Update the imports in encode.zig to import presence/manager.zig once under a module alias, then reference UserEntry and PresenceManager through that alias; leave the PresenceRecord import unchanged and preserve the existing declaration ordering.tools/zsort.zig (2)
1-3: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd unit tests for
zsortbefore it rewrites source files.
tools/zsort.zigperforms byte-level source rewriting across the wholesrctree infixmode. No test file accompanies it. The parsing helpers are pure functions over a[]const u8and are straightforward to test directly:classify,extractPath,isTopLevelImportLine,findImportBlockEnd,findCImportEnd,hasBannedPatterns, andbuildSortedImportText.Cover at minimum: an alias declaration with a trailing
;, a comment between two import groups, a@cImportblock, a brace inside a string literal before the imports, and idempotency, meaning thatfixapplied twice produces the same bytes.Do you want me to generate a
tools/zsort_test.zigwith these cases, and thebuild.zigwiring to run it?As per coding guidelines: "After core Zig logic changes, run
zig build test; for module-specific changes, run the corresponding filtered unit test."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tools/zsort.zig` around lines 1 - 3, Add unit coverage for the pure parsing and rewriting helpers in zsort.zig: classify, extractPath, isTopLevelImportLine, findImportBlockEnd, findCImportEnd, hasBannedPatterns, and buildSortedImportText. Include cases for a semicolon-terminated alias, comments separating import groups, a `@cImport` block, braces inside string literals before imports, and applying fix twice producing identical bytes; wire tools/zsort_test.zig into build.zig and verify with the relevant filtered test plus zig build test.Source: Coding guidelines
25-36: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueConsider deriving the vendor module list from a single source.
classifyhardcodessqlite,msgpack, andhttpx.build.zigdeclares the same three module names. If a maintainer adds a dependency inbuild.zig,zsortclassifies it asCLASS_LOCALand moves it into the wrong group without any warning. Move the list to a top-levelconst vendor_modules = [_][]const u8{...}with a comment that points tobuild.zig, so the coupling is explicit.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tools/zsort.zig` around lines 25 - 36, Update classify to use a top-level vendor_modules array containing sqlite, msgpack, and httpx instead of hardcoding the names in the condition. Add a comment on vendor_modules pointing maintainers to build.zig as the corresponding dependency declaration source, and preserve the existing CLASS_VENDOR and CLASS_LOCAL classification behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/unused_pub_detector.js`:
- Around line 200-229: Update the reference-checking logic around selfText,
hasWordOutsideLines, and the cross-file hasWord calls to use comment- and
string-stripped text for every file, not raw f.text. Precompute
nostrings(nocomment(...)) once per file in a cache before processing
declarations, then reuse the cached text for both self-file and cross-file
checks while preserving the existing line-exclusion behavior.
- Around line 11-19: Update the file collection in the walk function to store
each Zig file’s absolute filesystem path alongside its canonical path, then
update import resolution near path.resolve to use that absolute path rather than
f.path. Preserve canonical paths for reporting and map lookups, ensuring the
script works when invoked outside the repository root.
- Line 95: Update the nostrings function to remove Zig single-quoted character
literals in addition to double-quoted strings, preserving both literal contents
as empty quotes before the brace-counting logic consumes the result.
In `@src/threading/worker_pool_test.zig`:
- Around line 3-4: Rename the local const bindings managedThread to
managed_thread and workerPool to worker_pool to comply with snake_case naming
for functions and variables. Then update all references to these bindings
throughout the file at the specified locations (lines 9, 14, 43, 51, and 60) to
use the new snake_case names instead.
In `@tools/zsort.zig`:
- Around line 329-330: Change the cleanup registration for imports_buf in the
surrounding function to use defer rather than errdefer, ensuring its allocation
is released on both success and error paths after the bytes are copied into buf.
Keep the existing deinit(allocator) cleanup pattern used by the other lists.
- Around line 386-401: Flush the buffered writer before returning from showDiff
so check-mode diff output is emitted; update tools/zsort.zig lines 386-401
accordingly. Also flush stdout_w2 immediately after its summary print and before
std.process.exit(1) at tools/zsort.zig lines 558-562, since exit bypasses
deferred cleanup.
- Around line 174-181: Replace the per-call braceDepth prefix scan with a single
forward parser pass used by collectImports and findCImportEnd. Track brace depth
while skipping braces inside string literals, character literals, line comments,
and block comments, and use the incrementally maintained depth when identifying
import boundaries.
- Around line 424-426: Move the arena initialization and deinitialization from
the whole-run scope into the per-file loop around the processing logic beginning
near the file source allocation, so every iteration owns and releases its arena
even when error paths use continue. Keep the allocator usage for that file
unchanged while ensuring allocations from prior files are reclaimed before the
next iteration.
- Around line 277-280: Update the import parsing and emission flow around
trailing_comments, inter_section, and the Import entries so comments between
imports are attached to the following import declaration rather than emitted
after every import. Ensure sorting and fix-mode output move each attached
comment together with its Import, including group-label comments such as those
preceding vendor imports.
- Around line 454-462: Update the target handling around walkDir and the
files.items empty check to report an error and exit with status 1 when the
target is neither a supported file nor directory, or when no files are
collected. Preserve normal traversal and file collection behavior for valid
targets.
- Around line 139-172: Update hasBannedPatterns to ignore commented-out code:
skip lines whose trimmed content begins with // before evaluating `@import`
patterns, and replace the file-wide usingnamespace search with a line-by-line
scan that only checks non-comment lines. Preserve detection of actual banned
imports and usingnamespace usage while avoiding matches inside comments.
- Around line 105-116: Update isTopLevelImportLine to trim leading and trailing
spaces, semicolons, and line terminators from the right-hand side before
validation, matching buildSortedImportText’s trim behavior. Preserve alias
validation for identifiers and dotted paths so declarations such as const
Payload = msgpack.Payload; are recognized and subsequent imports remain in the
import block.
- Line 469: Update the readFileAlloc call in the source-loading logic to pass
file_path before allocator, and construct the 10 MiB limit using std.io.Limit as
required by Zig 0.15.2. Preserve the existing error handling around the
allocation.
- Around line 16-22: Update lessThan so it provides a total ordering: after
comparing class, path, and import byte length, compare a.start and b.start as
the final tie-breaker. Preserve the existing ordering precedence while ensuring
distinct imports with otherwise equal keys are deterministically ordered for
std.sort.pdq.
- Around line 535-545: Replace the direct createFile/truncate flow in the
file-writing block with std.fs.Dir.atomicFile using the existing directory
handle. Defer af.deinit(), write full_new through af.file, and call af.finish()
only after writeAll succeeds; preserve the existing error_count increment and
continue behavior so failed writes leave the original file unchanged.
---
Nitpick comments:
In `@build.zig`:
- Around line 53-60: Update the build and formatting configuration for
tools/zsort.zig: add zsort_exe as a dependency of check_step so zig build check
compiles it, and extend the package.json zig fmt arguments from src to also
include tools. Leave the existing zlint configuration unchanged.
In `@package.json`:
- Line 12: Reorder the lint command so “zig build fix-imports” runs before “zig
fmt src”; keep the remaining checks in their existing order.
In `@src/wire/encode.zig`:
- Around line 4-6: Update the imports in encode.zig to import
presence/manager.zig once under a module alias, then reference UserEntry and
PresenceManager through that alias; leave the PresenceRecord import unchanged
and preserve the existing declaration ordering.
In `@tools/zsort.zig`:
- Around line 1-3: Add unit coverage for the pure parsing and rewriting helpers
in zsort.zig: classify, extractPath, isTopLevelImportLine, findImportBlockEnd,
findCImportEnd, hasBannedPatterns, and buildSortedImportText. Include cases for
a semicolon-terminated alias, comments separating import groups, a `@cImport`
block, braces inside string literals before imports, and applying fix twice
producing identical bytes; wire tools/zsort_test.zig into build.zig and verify
with the relevant filtered test plus zig build test.
- Around line 25-36: Update classify to use a top-level vendor_modules array
containing sqlite, msgpack, and httpx instead of hardcoding the names in the
condition. Add a comment on vendor_modules pointing maintainers to build.zig as
the corresponding dependency declaration source, and preserve the existing
CLASS_VENDOR and CLASS_LOCAL classification behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: a1cdbabb-6847-485f-a881-5e1a31f62f79
📒 Files selected for processing (163)
build.zigpackage.jsonscripts/unused_pub_detector.jssrc/app_test_helpers.zigsrc/authentication/jwt_validator.zigsrc/authentication/jwt_validator_test.zigsrc/authentication/session.zigsrc/authentication/ticket_exchange.zigsrc/authentication/ticket_exchange_test.zigsrc/authorization/defaults.zigsrc/authorization/doc_predicate.zigsrc/authorization/doc_predicate_test.zigsrc/authorization/evaluate.zigsrc/authorization/evaluate_test.zigsrc/authorization/parse.zigsrc/authorization/parse_test.zigsrc/authorization/pattern.zigsrc/authorization/pattern_test.zigsrc/authorization/presence.zigsrc/authorization/presence_test.zigsrc/authorization/session_resolver.zigsrc/authorization/store.zigsrc/authorization/test_helpers.zigsrc/authorization/types.zigsrc/checkpoint_test_helpers.zigsrc/checkpoint_worker.zigsrc/checkpoint_worker_property_test.zigsrc/checkpoint_worker_test.zigsrc/config_loader.zigsrc/config_loader_property_test.zigsrc/config_loader_test.zigsrc/connection/manager.zigsrc/connection/manager_test.zigsrc/connection/send_queue.zigsrc/connection/state.zigsrc/connection/state_test.zigsrc/connection/violations_test.zigsrc/contains_array_equivalence_test.zigsrc/integration_wiring_test.zigsrc/json/iterate_test.zigsrc/json/read_test.zigsrc/json/write_test.zigsrc/lock_free_cache.zigsrc/lock_free_cache_leak_test.zigsrc/lock_free_cache_test.zigsrc/logging_property_test.zigsrc/main.zigsrc/memory_safety_property_test.zigsrc/memory_strategy.zigsrc/memory_strategy_test.zigsrc/message_handler.zigsrc/message_handler_property_test.zigsrc/message_handler_test.zigsrc/message_handler_verification_test.zigsrc/migration_detector.zigsrc/migration_detector_property_test.zigsrc/migration_executor.zigsrc/migration_executor_property_test.zigsrc/migration_executor_test.zigsrc/msgpack_test_helpers.zigsrc/msgpack_utils.zigsrc/msgpack_utils_property_test.zigsrc/msgpack_utils_test.zigsrc/presence/manager.zigsrc/presence/manager_test.zigsrc/presence/record.zigsrc/presence/record_test.zigsrc/presence/service.zigsrc/presence/service_test.zigsrc/presence/test_helpers.zigsrc/presence/worker.zigsrc/presence/worker_test.zigsrc/query/ast.zigsrc/query/ast_test.zigsrc/query/eval.zigsrc/query/eval_test.zigsrc/query/hash_context.zigsrc/query/hasher.zigsrc/query/parser.zigsrc/query/parser_test.zigsrc/query/test_helpers.zigsrc/queues/mpsc_queue_test.zigsrc/queues/mpsc_queue_thread_safety_test.zigsrc/queues/spmc_blocking_queue_test.zigsrc/queues/spmc_blocking_queue_thread_safety_test.zigsrc/queues/spsc_queue_test.zigsrc/schema/field_path_test.zigsrc/schema/format.zigsrc/schema/format_test.zigsrc/schema/index.zigsrc/schema/parse.zigsrc/schema/parse_test.zigsrc/schema/system.zigsrc/schema/system_test.zigsrc/schema/test_helpers.zigsrc/schema/types_test.zigsrc/server.zigsrc/server_init_property_test.zigsrc/sql/buf_test.zigsrc/sql/build.zigsrc/sql/build_test.zigsrc/sql/ddl.zigsrc/sql/ddl_test.zigsrc/storage_engine.zigsrc/storage_engine/cache.zigsrc/storage_engine/connection.zigsrc/storage_engine/errors.zigsrc/storage_engine/filter_sql.zigsrc/storage_engine/pk_set.zigsrc/storage_engine/read_buffer.zigsrc/storage_engine/read_worker_perf_test.zigsrc/storage_engine/read_worker_pool.zigsrc/storage_engine/reader.zigsrc/storage_engine/sql.zigsrc/storage_engine/write_queue.zigsrc/storage_engine/write_worker.zigsrc/storage_engine/write_worker_perf_test.zigsrc/storage_engine_error_property_test.zigsrc/storage_engine_property_test.zigsrc/storage_engine_sql_test.zigsrc/storage_engine_stability_property_test.zigsrc/storage_engine_test.zigsrc/storage_engine_test_helpers.zigsrc/store_service.zigsrc/store_service_test.zigsrc/store_test_helpers.zigsrc/subscription/change_queue.zigsrc/subscription/change_queue_test.zigsrc/subscription/consistency_test.zigsrc/subscription/engine.zigsrc/subscription/engine_test.zigsrc/subscription/engine_thread_safety_test.zigsrc/subscription/predicate_trie.zigsrc/subscription/predicate_trie_test.zigsrc/subscription/worker_pool.zigsrc/subscription/worker_pool_perf_test.zigsrc/subscription/worker_pool_test.zigsrc/thread_budget_test.zigsrc/threading/latch_test.zigsrc/threading/managed_thread_test.zigsrc/threading/notifier_test.zigsrc/threading/wait_group_test.zigsrc/threading/worker_pool_test.zigsrc/typed/codec.zigsrc/typed/codec_test.zigsrc/typed/doc_id_test.zigsrc/typed/test_helpers.zigsrc/typed/types.zigsrc/typed/types_test.zigsrc/uwebsockets_wrapper.zigsrc/uwebsockets_wrapper_property_test.zigsrc/uwebsockets_wrapper_test.zigsrc/uws_timer.zigsrc/wire/comptime.zigsrc/wire/decode.zigsrc/wire/decode_test.zigsrc/wire/encode.zigsrc/wire/encode_test.zigsrc/wire/errors.zigsrc/wire/errors_test.zigsrc/wire/msgpack_skip_test.zigsrc/wire/test_helpers.zigtools/zsort.zig
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
tools/zsort.zig (1)
632-637: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winThe banned-pattern scan is skipped for files with no collected imports.
Line 632 returns early when
result.items.len == 0.hasBannedPatternsruns only after that check. A file that containsusingnamespace@import("foo");and no recognized import declaration produces an emptyresult, so the violation is never reported. Move the banned-pattern check above line 632.🐛 Proposed fix
- if (result.items.len == 0) continue; - if (hasBannedPatterns(source)) |msg| { std.debug.print("{s}: banned: {s}\n", .{ file_path, msg }); banned_count += 1; } + + if (result.items.len == 0) continue;🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tools/zsort.zig` around lines 632 - 637, Move the hasBannedPatterns(source) check in the import-processing flow before the result.items.len == 0 early continue, so files with no collected imports are still scanned and banned_count is updated when a violation is found. Preserve the existing banned message and file_path reporting.
🧹 Nitpick comments (2)
build.zig (1)
62-72: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winWire
check-importsinto an automated path.The
check-importsstep is defined but no other step depends on it.package.jsononly runsfix-imports, which rewrites files instead of failing. A drift in import ordering can therefore reach CI unnoticed. Consider addingcheck-importsto thecheckstep or to the CI script.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@build.zig` around lines 62 - 72, Wire the existing check-imports_step into the automated validation path by making the main check step or the CI check script depend on it. Keep fix-imports as the explicit rewriting command, while ensuring normal checks execute the zsort “check” action and fail when import ordering drifts.tools/zsort_test.zig (1)
126-144: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAssert the resulting order, not only substring presence.
Lines 141-143 pass for any permutation of the three imports. The test therefore does not verify the sort. Use
expectEqualStringsagainst the expected block, or compare index positions.♻️ Proposed stronger assertion
- try std.testing.expect(std.mem.indexOf(u8, result, "bar") != null); - try std.testing.expect(std.mem.indexOf(u8, result, "foo") != null); - try std.testing.expect(std.mem.indexOf(u8, result, "std") != null); + try std.testing.expectEqualStrings( + \\const std = `@import`("std"); + \\ + \\const bar = `@import`("bar"); + \\const foo = `@import`("foo"); + \\ + , result);The same applies to lines 189-191.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tools/zsort_test.zig` around lines 126 - 144, Strengthen the assertions in the “buildSortedImportText: basic sort” test and the analogous assertions around the later import-sort test so they verify the imports’ exact sorted order rather than only substring presence. Compare the generated import block or import positions against the expected ordering using the existing result from zsort.buildSortedImportText.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@package.json`:
- Line 12: Update the fix-mode exit handling in tools/zsort.zig, specifically
the logic around changed_count and std.process.exit(1), so rewriting files alone
returns exit code 0 while error_count or banned_count still returns 1; preserve
the package.json lint chain so all subsequent checks run after imports are
fixed.
In `@scripts/unused_pub_detector.js`:
- Line 96: Update nostrings to remove indented Zig multiline-string lines using
a multiline, line-anchored pattern that permits spaces or tabs before the
delimiter, before counting braces. Preserve the existing single- and
double-quoted string stripping behavior.
In `@tools/zsort.zig`:
- Line 694: Update the loop’s af.finish() handling so failures are reported
consistently with the other per-file errors: catch the error, print its message,
increment error_count, and continue processing remaining files. Do not propagate
the error from the loop, so the summary after the loop still executes.
- Around line 219-245: Fix stray-import removal so attached comments and
preceding blank lines are not emitted twice in fix mode. Update the
stray-removal logic to remove each stray import from its `comment_start` when
present, through `imp.end`, while preserving the existing import-block rendering
behavior in `buildSortedImportText`.
---
Outside diff comments:
In `@tools/zsort.zig`:
- Around line 632-637: Move the hasBannedPatterns(source) check in the
import-processing flow before the result.items.len == 0 early continue, so files
with no collected imports are still scanned and banned_count is updated when a
violation is found. Preserve the existing banned message and file_path
reporting.
---
Nitpick comments:
In `@build.zig`:
- Around line 62-72: Wire the existing check-imports_step into the automated
validation path by making the main check step or the CI check script depend on
it. Keep fix-imports as the explicit rewriting command, while ensuring normal
checks execute the zsort “check” action and fail when import ordering drifts.
In `@tools/zsort_test.zig`:
- Around line 126-144: Strengthen the assertions in the “buildSortedImportText:
basic sort” test and the analogous assertions around the later import-sort test
so they verify the imports’ exact sorted order rather than only substring
presence. Compare the generated import block or import positions against the
expected ordering using the existing result from zsort.buildSortedImportText.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: e0ef7099-d406-46f9-9ab0-2bc982c09b56
📒 Files selected for processing (16)
build.zigpackage.jsonscripts/unused_pub_detector.jssrc/connection/send_queue.zigsrc/connection/violations.zigsrc/json/read.zigsrc/json/write.zigsrc/presence/subscriber.zigsrc/queues/spmc_blocking_queue.zigsrc/schema/field_path.zigsrc/sql/buf.zigsrc/threading/worker_pool.zigsrc/timed_test_runner.zigsrc/wire/encode.zigtools/zsort.zigtools/zsort_test.zig
🚧 Files skipped from review as they are similar to previous changes (2)
- src/connection/send_queue.zig
- src/wire/encode.zig
Summary by CodeRabbit