mirror of
https://code.blicky.net/yorhel/ncdu.git
synced 2026-01-14 17:58:40 -09:00
Tagging this as a 2.0-beta1 release
This commit is contained in:
parent
a915fc0836
commit
e72768b86b
3 changed files with 29 additions and 66 deletions
17
ChangeLog
17
ChangeLog
|
|
@ -1,6 +1,23 @@
|
||||||
# SPDX-FileCopyrightText: 2021 Yoran Heling <projects@yorhel.nl>
|
# SPDX-FileCopyrightText: 2021 Yoran Heling <projects@yorhel.nl>
|
||||||
# SPDX-License-Identifier: MIT
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
2.0-beta1 - 2021-07-22
|
||||||
|
- Full release announcement: https://dev.yorhel.nl/doc/ncdu2
|
||||||
|
- Requires Zig 8.0
|
||||||
|
- Lower memory use in most scenarios (except with many hard links)
|
||||||
|
- Improved performance of hard link counting
|
||||||
|
- Extra column for shared/unique directory sizes
|
||||||
|
|
||||||
|
1.16 - 2021-07-02
|
||||||
|
- Increase width of size bar depending on terminal size (Christian Göttsche)
|
||||||
|
- Set/increment $NCDU_LEVEL variable when spawning a shell
|
||||||
|
- Indicate whether apparent size or disk usage is being displayed
|
||||||
|
- Display setuid, setgid and sticky bits in file flags in extended mode
|
||||||
|
- Fix error handling while reading --exclude-from file
|
||||||
|
- Improve JSON import to allow for several future extensions to the format
|
||||||
|
- Export link count in JSON dumps
|
||||||
|
- Don't export inode in JSON dumps for non-hardlinks
|
||||||
|
|
||||||
1.15.1 - 2020-06-10
|
1.15.1 - 2020-06-10
|
||||||
- (Linux) Fix build on older Linux systems (Christian Göttsche)
|
- (Linux) Fix build on older Linux systems (Christian Göttsche)
|
||||||
- (MacOS) Revert "Exclude firmlinks by default" behavior (until we have a better solution)
|
- (MacOS) Revert "Exclude firmlinks by default" behavior (until we have a better solution)
|
||||||
|
|
|
||||||
76
README.md
76
README.md
|
|
@ -13,70 +13,9 @@ available, but it is a useful tool even on regular desktop systems. Ncdu aims
|
||||||
to be fast, simple and easy to use, and should be able to run in any minimal
|
to be fast, simple and easy to use, and should be able to run in any minimal
|
||||||
POSIX-like environment with ncurses installed.
|
POSIX-like environment with ncurses installed.
|
||||||
|
|
||||||
## This Zig implementation
|
See the [ncdu 2 release announcement](https://dev.yorhel.nl/doc/ncdu2) for
|
||||||
|
information about the differences between this Zig implementation (2.x) and the
|
||||||
This branch represents an experimental rewrite of ncdu using the [Zig
|
C version (1.x).
|
||||||
programming language](https://ziglang.org/). It is supposed to be fully
|
|
||||||
compatible (in terms of behavior, UI and CLI flags) with the C version, so it
|
|
||||||
can eventually be used as a drop-in replacement.
|
|
||||||
|
|
||||||
Since Zig itself is still very much unstable and things tend to break with each
|
|
||||||
release, I can't in good conscience publish this rewrite as a proper release of
|
|
||||||
ncdu (...yet). I intent to maintain the C version as long as necessary while
|
|
||||||
Zig matures and gets more widely supported among Linux/BSD systems.
|
|
||||||
|
|
||||||
This rewrite is a test-bed for various improvements to the design of ncdu that
|
|
||||||
would impact large parts of its codebase. The improvements may also be
|
|
||||||
backported to the C version, depending on how viable a proper Zig release is.
|
|
||||||
|
|
||||||
### Improvements compared to the C version
|
|
||||||
|
|
||||||
- Significantly reduced memory usage, achieved by:
|
|
||||||
- Removing pointers between nodes that are not strictly necessary for basic
|
|
||||||
tree traversal (this impacts *all* code in the C version of ncdu).
|
|
||||||
- Using separate structs for directory, file and hard link nodes, each storing
|
|
||||||
only the information necessary for that particular type of node.
|
|
||||||
- Using an arena allocator and getting rid of data alignment.
|
|
||||||
- Refreshing a directory no longer creates a full copy of the (sub)tree.
|
|
||||||
- Improved performance of hard link counting (fixing
|
|
||||||
[#121](https://code.blicky.net/yorhel/ncdu/issues/121)).
|
|
||||||
- Add support for separate counting hard links that are shared with other
|
|
||||||
directories or unique within the directory (issue
|
|
||||||
[#36](https://code.blicky.net/yorhel/ncdu/issues/36)).
|
|
||||||
- Faster --exclude-kernfs thanks to `statfs()` caching.
|
|
||||||
- Improved handling of Unicode and special characters.
|
|
||||||
- Key to switch to path from a file's hard link listing.
|
|
||||||
- Remembers item position when switching directories.
|
|
||||||
|
|
||||||
Potentially to be implemented:
|
|
||||||
|
|
||||||
- Faster --exclude-pattern matching
|
|
||||||
- Multithreaded scanning
|
|
||||||
- Exporting a JSON dump after scanning into RAM
|
|
||||||
- Transparent dump (de)compression by piping through gzip/bzip2/etc
|
|
||||||
|
|
||||||
### Regressions compared to the C version
|
|
||||||
|
|
||||||
Aside from this implementation being unfinished:
|
|
||||||
|
|
||||||
- Assumes a UTF-8 locale and terminal.
|
|
||||||
- No doubt somewhat less portable.
|
|
||||||
- Listing all paths for a particular hard link requires a full search through
|
|
||||||
the in-memory directory tree.
|
|
||||||
- Not nearly as well tested.
|
|
||||||
- Directories that could not be opened are displayed as files.
|
|
||||||
- The disk usage of directory entries themselves is not updated during refresh.
|
|
||||||
|
|
||||||
### Minor UI differences
|
|
||||||
|
|
||||||
Not sure if these count as improvements or regressions, so I'll just list these
|
|
||||||
separately:
|
|
||||||
|
|
||||||
- The browsing UI is not visible during refresh or file deletion.
|
|
||||||
- Some columns in the file browser are hidden automatically if the terminal is
|
|
||||||
not wide enough to display them.
|
|
||||||
- The file's path is not displayed in the item window anymore (it's redundant).
|
|
||||||
- The item window's height is dynamic based on its contents.
|
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
|
|
@ -86,4 +25,11 @@ separately:
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
**todo**
|
You can use the Zig build system if you're familiar with that.
|
||||||
|
|
||||||
|
There's also a handy Makefile that supports the typical targets, e.g.:
|
||||||
|
|
||||||
|
```
|
||||||
|
make
|
||||||
|
sudo make install PREFIX=/usr
|
||||||
|
```
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// SPDX-FileCopyrightText: 2021 Yoran Heling <projects@yorhel.nl>
|
// SPDX-FileCopyrightText: 2021 Yoran Heling <projects@yorhel.nl>
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
pub const program_version = "2.0-dev";
|
pub const program_version = "2.0-beta1";
|
||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const model = @import("model.zig");
|
const model = @import("model.zig");
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue