You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: IMPROVEMENTS.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,8 @@
1
1
2
2
# Improvement Notes and Todo Items
3
3
4
+
This is a list of things I intend to do as a brief roadmap
5
+
4
6
(Note: Windows support is out of scope for pre-1.0 releases)
5
7
6
8
## 0. Project Naming
@@ -9,6 +11,8 @@ The current name needs reconsideration. It was originally created as a joke that
9
11
10
12
## 1. macOS Performance Investigations
11
13
14
+
NOTE: Optimisations for other platforms such as BSD are out of scope due to obscure use case.
15
+
12
16
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).
13
17
14
18
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
19
23
20
24
However, this presents a rather unpleasant API that is difficult to parallelise.
21
25
22
-
For investigation purposes, the last commit before removing `getdirentries64` can be found at:
23
-
24
26
Also, look at this link for [`fts open`](https://github.com/dalance/fts-rs)
25
27
28
+
For investigation purposes, the last commit before removing `getdirentries64` can be found at:
This addresses issues with large filename length edge cases. The relevant implementation is in `build.rs` and `src/iter.rs` (approximately line 250).
33
37
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.
35
39
36
40
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.
37
41
@@ -48,7 +52,7 @@ An alternative iterator implementation: when `stat` calls are known to be requir
48
52
49
53
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.
50
54
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.
52
56
53
57
## 5. Additional Features
54
58
@@ -75,16 +79,12 @@ impl TLSRegex {
75
79
}
76
80
```
77
81
78
-
## 7. Future Considerations
79
-
80
-
Additional improvements to be determined based on ongoing development needs.
81
-
82
82
## 8. CIFS Filesystem Issue
83
83
84
84
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.
85
85
86
86
Reverting to the standard `getdents` "call until 0" paradigm resolved the issue and returned the expected results.
87
87
88
-
## 9. Performance Profiling
88
+
## 10. Performance Profiling (because 7 8 9 )
89
89
90
90
Comprehensive performance profiling across different filesystem types and usage patterns to identify bottlenecks and optimisation opportunities.
0 commit comments