Skip to content

perf(common): release a line reader's buffer at the end of the file - #4494

Merged
atuin-bot merged 1 commit into
mainfrom
perf/line-reader-release-buffer
Oct 21, 2026
Merged

atuin-bot merged 1 commit into
mainfrom
perf/line-reader-release-buffer

Conversation

@markovejnovic

Copy link
Copy Markdown
Member

A follower at the end of its file kept the whole buffer its last lines were read into: 63 buffers, ~10.5 MB, in a daemon up for 22h. At the end of the file it now keeps only the line read in part. Split out of #4483.

@greptile-apps

greptile-apps Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no new actionable issues were found.

Summary

Releases the reader’s shared buffer at EOF while keeping any unfinished line.

  • Idle file readers keep only the unfinished line in memory.

Reviews (3) · Last reviewed commit: "refactor(common): carry whose buffer pen..." · Reviewed by Greptile

@markovejnovic
markovejnovic marked this pull request as ready for review October 20, 2026 21:42
@markovejnovic

Copy link
Copy Markdown
Member Author

/merge

@atuin-bot

atuin-bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Landed as b97b5c2. GitHub shows this merged once it reaches main.

…4494)

A follower at the end of its file kept the whole buffer its last lines were read into: 63 buffers, ~10.5 MB, in a daemon up for 22h. At the end of the file it now keeps only the line read in part. Split out of #4483.
@atuin-bot
atuin-bot force-pushed the perf/line-reader-release-buffer branch from 887f3ad to b97b5c2 Compare October 21, 2026 01:21
@atuin-bot
atuin-bot merged commit b97b5c2 into main Oct 21, 2026
5 checks passed
@atuin-bot
atuin-bot deleted the perf/line-reader-release-buffer branch October 21, 2026 01:21
atuin-bot pushed a commit that referenced this pull request Oct 22, 2026
### Bug Fixes

- *(ai)* Import IntoStaticStr from strum_macros, not strum ([#4480](#4480))
- *(ai)* Improve detection of git repositories ([#4450](#4450))
- *(client)* Resolve relative config paths beside config.toml, not the cwd ([#4479](#4479))
- *(config)* Don't print errors twice ([#4501](#4501))
- *(daemon)* Fetch the server's capabilities until a fetch succeeds
- *(daemon)* Spare a stale pidfile's PID when evicting ([#4512](#4512))
- *(daemon)* Handle daemons not spawned by atuin ([#4516](#4516))
- *(output)* Keep quoted words together in output search ([#4502](#4502))
- *(packfile)* Load only the records inside a manifest's range
- *(pty-proxy)* Standalone init with `atuin pty-proxy init` ([#4449](#4449))
- *(pty-proxy)* Wait for input on a non-blocking inherited stdin ([#4486](#4486))
- *(pty-proxy)* Don't re-exec shells running commands from a string or file ([#4414](#4414))
- *(search)* Don't panic when copying with no results ([#4426](#4426))
- *(server)* Let `ATUIN_*` environment variables override server.toml ([#4456](#4456))
- *(update)* Accept ATUIN_GITHUB_TOKEN ([#4262](#4262))
- Remove duplicated word in the no-history stats message ([#4451](#4451))
- Error printing in `?` handler ([#4448](#4448))
- Normalize relative gitdir paths in worktree resolution ([#4506](#4506))
- Upgrade regressions found in release QA ([#4519](#4519))


### Documentation

- Fix ctrl_n_shortcuts default value ([#4458](#4458))
- List all history list --format variables ([#4460](#4460))
- Fix the --reverse default for history list ([#4472](#4472))
- Mention December default in wrapped --year help ([#4476](#4476))


### Features

- *(common)* AbsPath and AbsPathBuf, Path and PathBuf checked to be absolute ([#4481](#4481))
- *(common)* Find a process's cgroup under cgroup v1 and v2 ([#4513](#4513))
- *(daemon)* Run the daemon as a launchd agent on macOS ([#4517](#4517))
- *(pty-proxy)* Window title follows child process ([#4447](#4447))
- *(secrets)* Keep HashiCorp tokens out of history ([#4445](#4445))


### Miscellaneous Tasks

- Give mono its own nixfmt step and scope atuin's to atuin/
- Say a /merge's landed commit gets CI on main
- Rebuild the apt .deb cache for Ubuntu 24.04 ([#4504](#4504))
- Remove the benchmarks ([#4511](#4511))


### Performance

- *(common)* Compile the vendor regexes once ([#4485](#4485))
- *(common)* Drop the tree watcher's file-id cache ([#4492](#4492))
- *(common)* Release a line reader's buffer at the end of the file ([#4494](#4494))
- *(common)* Keep no tree watcher entry for a rejected file ([#4493](#4493))
- *(daemon)* Warm up only a resumed session's unanswered calls ([#4490](#4490))
- *(packfile)* Compress packs in one shot ([#4484](#4484))


### Refactor

- *(daemon)* Managed daemon service with multiple backends ([#4488](#4488))
- *(daemon)* Move daemon startup into the service module ([#4503](#4503))
- *(daemon)* Keep where the daemon listens behind service::address ([#4514](#4514))
- *(daemon)* Take up the daemon's socket in SocketHolder, not Backend ([#4515](#4515))
- *(deps)* Bump clap_complete_nushell from 4.6.0 to 4.6.2 ([#4473](#4473))
- *(deps)* Bump clap_complete from 4.6.9 to 4.6.11 ([#4396](#4396))
- *(deps)* Bump ratatui from 0.30.0 to 0.30.2 ([#4474](#4474))
- *(deps)* Bump certifi from 2025.11.12 to 2026.10.19 in /docs in the uv group across 1 directory ([#4500](#4500))
- *(pty-proxy)* Run on tokio with the parser on its own runtime ([#4482](#4482))
- *(pty-proxy)* Forward captures to the daemon on the proxy's runtime ([#4487](#4487))
- *(pty-proxy)* Rename the screen's parser to Emulator ([#4510](#4510))
- *(pty-proxy)* Migrate output parsing to vte ([#4518](#4518))


### Testing

- *(daemon)* Run the output index tests under rstest ([#4496](#4496))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants