1
1
mirror of https://github.com/mgree/ffs.git synced 2024-09-11 19:17:40 +03:00
Commit Graph

11 Commits

Author SHA1 Message Date
Michael Greenberg
b9c6644312
Lazy loading (#50)
Lazy implementation is now the default. Use `--eager` to force ffs to construct the entire filesystem on startup.

NB that lazy loading is not the same as lazy parsing. There's still plenty of savings left on the table.

There is some unwelcome code duplication in saving to accommodate type-level jiggery pokery.
2021-10-01 07:57:58 -07:00
Michael Greenberg
35f6bf8188
Fuser 0.9.1 (#49), in anticipation of ffs 0.1.2
Update to fuser=0.9 (i.e., 0.9.1). Update websites, version numbers, etc. for new release.

Finally use `destroy` properly, got rid of the `Drop` impl for `FS`. Drop `AutoUnmount` which wasn't doing anything anyway.

Fixes and improvements to CI, docs, and logging.
2021-09-26 05:54:18 -07:00
Michael Greenberg
6ed74ee0c7
Timing support (#46)
Benchmarks, in two flavors: real-world benchmarks and synthetic microbenchmarks.

`--time` flag for benchmarking output on stderr.

Using R to generate pretty graphs. Some overhaul of build scripts and artifacts, with the hope of simplifying the release system.
2021-07-29 17:55:53 -07:00
Michael Greenberg
b651c9c1ac
Exit status (#44)
Unify exit status (0=success, 1=fs error, 2=cli error).

Documented and tested; one test is disabled due to an upstream error masking.
2021-07-21 08:10:42 -07:00
Michael Greenberg
85b1ac6da9
Better, configurable name munging (#41)
A new flag `--munge [rename|filter]` controls how a name munging will work.

Name munging only applies to fields named '.', '..', containing a NUL byte, or containing a forward slash '/'.

The `rename` option (the default) will change '.' to '_.' and '..' to '_..'; each NUL byte turns into '_NUL_' and each slash turns into '_SLASH_'.

This greatly simplified policy means that spaces and other special characters should work just fine in field names now.
2021-07-08 08:55:44 -07:00
Michael Greenberg
a1d5718ac9
--new flag for creating files from empty (#38)
Running `--new FILE.EXT` will:

- infer the output format form `EXT`
- use `FILE.EXT` as the output
- start with a single, empty, named directory (but allocate a bit more space)

In implementing this, I realized that introducing metadata (fad45bed4b) meant we no longer inferred types automatically. I added a type `Typ::Auto` and some inference code.
2021-07-04 18:19:31 -07:00
Michael Greenberg
7249ae95df
Pretty printing (#35)
Add --pretty flag, tests, docs.

Resolves #33.
2021-07-03 16:40:01 -07:00
Michael Greenberg
c6355e9812 clarify manpage 2021-07-01 21:59:06 -04:00
Michael Greenberg
fad45bed4b
Manage metadata using extended attributes (#30)
Extended attributes in `user.type` track the type of files and directories. Users can update these to alter the metadata.

Loading files records types; serialization tries to use them (but will default to strings or bytes if it can't interpret the file appropriately).

In particular, it's now possible to convert between both kinds of directories (list and named).

This isn't a long term solution, because extended attributes have no real affordances---it's not obvious that they even exist, and even once you see `user.type`, it's obvious what it means or what values it has. #2 has other ideas about ways to represent and manipulate metadata.

All of this comes with a few new flags and some brittle file ignoring behavior (macOS will generate `._*` files to hold extended attributes on filesystems that don't support them). The man page is updated with detail on the data model, and now the manpage is part of the website proper.
2021-07-01 18:52:53 -07:00
Michael Greenberg
99c346cdad better manpage [ci skip] 2021-06-26 11:42:49 -04:00
Michael Greenberg
93ecc0f644 update cli help, add manpage 2021-06-26 11:28:13 -04:00