path: root/
diff options
Diffstat (limited to '')
1 files changed, 11 insertions, 65 deletions
diff --git a/ b/
index f526ca1..4439b80 100644
--- a/
+++ b/
@@ -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
POSIX-like environment with ncurses installed.
-## This Zig implementation
-This branch represents an experimental rewrite of ncdu using the [Zig
-programming language]( 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](
-- Add support for separate counting hard links that are shared with other
- directories or unique within the directory (issue
- [#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
-- 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.
+See the [ncdu 2 release announcement]( for
+information about the differences between this Zig implementation (2.x) and the
+C version (1.x).
## Requirements
@@ -86,4 +25,11 @@ separately:
## Install
+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.:
+sudo make install PREFIX=/usr