diff --git a/ChangeLog b/ChangeLog index dfac751cd3f49e6f02d3a3b2aafb95175b4a7773..3f3b0b66f623d7b1bbff3ca53168fba3d92a8c08 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,23 @@ # SPDX-FileCopyrightText: 2021 Yoran Heling <projects@yorhel.nl> # 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 - (Linux) Fix build on older Linux systems (Christian Göttsche) - (MacOS) Revert "Exclude firmlinks by default" behavior (until we have a better solution) diff --git a/README.md b/README.md index f526ca11039ad4965b0e9940b198cf1bd6a0c5c3..4439b806c5173fa66b2315449ef0fdbf930f6586 100644 --- a/README.md +++ b/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 POSIX-like environment with ncurses installed. -## This Zig implementation - -This branch represents an experimental rewrite of ncdu using the [Zig -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. +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 +C version (1.x). ## Requirements @@ -86,4 +25,11 @@ separately: ## 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 +``` diff --git a/src/main.zig b/src/main.zig index 040d14e8736ac83d6c0d0eab8af22273e5e434c2..a6ca14bf06b9b05691d1c209fae3789dd2bc9b60 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2021 Yoran Heling <projects@yorhel.nl> // SPDX-License-Identifier: MIT -pub const program_version = "2.0-dev"; +pub const program_version = "2.0-beta1"; const std = @import("std"); const model = @import("model.zig");