diff options
author | Yorhel <git@yorhel.nl> | 2021-05-08 16:17:51 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2021-05-08 16:17:51 +0200 |
commit | 9b59d3dac4c9aa6e11349b7d09e148af98275a5e (patch) | |
tree | 0366ea1f255dc220539e8d6678666d4ec276b68e /README.md | |
parent | e12eb4556d2f613557006433fcdcb25b912991aa (diff) |
README updates
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..5d1989b --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +# ncdu-zig + +## Description + +Ncdu is a disk usage analyzer with an ncurses interface. It is designed to find +space hogs on a remote server where you don't have an entire graphical setup +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. + +### Implementation status + +Missing features: + +- Export/import +- Most directory listing settings +- Scaning UI +- Lots of informational UI windows +- Directory refresh +- File deletion +- Opening a shell + +### Improvements compared to the C version + +Already implemented: + +- 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. +- 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)). + (Implemented in the data model, but not displayed in the UI yet) +- Faster --exclude-kernfs thanks to `statfs()` caching. +- Improved handling of Unicode and special characters. + +Potentially to be implemented: + +- Faster --exclude-pattern matching +- Multithreaded scanning + +### Regressions compared to the C version + +Aside from this implementation being unfinished: + +- Assumes a UTF-8 locale and terminal. +- No doubt somewhat less portable. + +## Requirements + +- Latest Zig compiler +- Some sort of POSIX-like OS +- ncurses libraries and header files + +## Install + +**todo** |