Skip to content

Commit ce50d89

Browse files
committed
design: improvements list fixes
1 parent affa186 commit ce50d89

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

IMPROVEMENTS.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11

22
# Improvement Notes and Todo Items
33

4+
This is a list of things I intend to do as a brief roadmap
5+
46
(Note: Windows support is out of scope for pre-1.0 releases)
57

68
## 0. Project Naming
@@ -9,6 +11,8 @@ The current name needs reconsideration. It was originally created as a joke that
911

1012
## 1. macOS Performance Investigations
1113

14+
NOTE: Optimisations for other platforms such as BSD are out of scope due to obscure use case.
15+
1216
Despite attempting several approaches for macOS optimisation via `getattrlistbulk` and `getdirentries64` through raw syscalls (commented code can be found in `src/utils.rs` - search for GETDIRENTRIES).
1317

1418
macOS appears to skip this call in certain circumstances, possibly on empty directories. Without available source code, system call tracing is the only option (use `dtruss` for this purpose).
@@ -19,10 +23,10 @@ A potential alternative is [`fts_open`](https://blog.tempel.org/2019/04/dir-read
1923

2024
However, this presents a rather unpleasant API that is difficult to parallelise.
2125

22-
For investigation purposes, the last commit before removing `getdirentries64` can be found at:
23-
2426
Also, look at this link for [`fts open`](https://github.com/dalance/fts-rs)
2527

28+
For investigation purposes, the last commit before removing `getdirentries64` can be found at:
29+
2630
```bash
2731
git checkout 27728cdadcd254a95bda48a3f10b6c8d892bea0d
2832
```
@@ -31,7 +35,7 @@ git checkout 27728cdadcd254a95bda48a3f10b6c8d892bea0d
3135

3236
This addresses issues with large filename length edge cases. The relevant implementation is in `build.rs` and `src/iter.rs` (approximately line 250).
3337

34-
An elegant solution is needed that doesn't require rebuilding - perhaps using `LazyLock` without paying initialisation costs. This could be achieved with `OnceCell` or `std::cell::LazyCell`. Thread safety isn't a concern as this is effectively constant.
38+
An elegant solution is needed that doesn't require rebuilding - perhaps using `LazyLock` without paying initialisation costs. This could be achieved with `std::cell::OnceCell` or `std::cell::LazyCell`. Thread safety isn't a concern(?) as this is effectively constant.
3539

3640
There's currently a fundamental flaw: building without ZFS support and subsequently installing ZFS (or ReiserFS) works fine. The challenge is implementing a very low-cost runtime check.
3741

@@ -48,7 +52,7 @@ An alternative iterator implementation: when `stat` calls are known to be requir
4852

4953
This presents challenges as `stat` is a large structure. It could be stored as `Option<Cell<stat>>`, keeping the `direntry` structure under 64 bytes to fit within a single cache line.
5054

51-
Note: This must use `stat`, not `lstat`. Consider using `fstatat` with `AT_SYMLINK_NOFOLLOW` as an alternative approach.
55+
Note: This must use `stat` type calls, not `lstat` type ones. Consider using `fstatat` with `AT_SYMLINK_NOFOLLOW` as an alternative approach.
5256

5357
## 5. Additional Features
5458

@@ -75,16 +79,12 @@ impl TLSRegex {
7579
}
7680
```
7781

78-
## 7. Future Considerations
79-
80-
Additional improvements to be determined based on ongoing development needs.
81-
8282
## 8. CIFS Filesystem Issue
8383

8484
The `getdents` skip code (in `src/iter.rs` around line 243) encounters issues on certain exotic CIFS filesystems. This was observed on a friend's server setup but hasn't been reproducible since, and access to the original server is no longer available.
8585

8686
Reverting to the standard `getdents` "call until 0" paradigm resolved the issue and returned the expected results.
8787

88-
## 9. Performance Profiling
88+
## 10. Performance Profiling (because 7 8 9 )
8989

9090
Comprehensive performance profiling across different filesystem types and usage patterns to identify bottlenecks and optimisation opportunities.

0 commit comments

Comments
 (0)