exa release v0.9.0
I will release more than one version of exa this year, mark my words.
- Icon support with
- New sort options
.Namewhich ignore a leading dot (a156d96)
TIME_STYLEenvironment variable (9917810)
- New option to only display directories,
- Support 24-bit colours (dc2009a)
- Display if a file is ignored by Git (80b0d9d)
- Replace the
bOoverlay colour (59d9e90)
- Pre-release versions have their build number shown (c7497f3)
--classifyto man page (9c77a95)
- Highlighting for file types
.zst(5fae489), Bazel and Ant (c635031),
- Create worker threads only once for performance (8cbde76)
- Allow zero-padded numbers in
- Make non-uppercase
READMEfiles immediate (d9c9dbe)
README~as temporary, not immediate (57e4c08)
- Use more accurate time to fix inconsistent sorting (649744d)
- Prevent infinite loop with
- Fix panic in certain timezones (9f76f94 and this fix)
- Fix sorting by created time (faed8f9)
- Fix Git status not working for paths containing
Thanks to alexmaco, ariasuni, asoderman, benmezger, BenWhitehead, cecton, chetgurevitch, dguo, Don42, Fierthraix, golem131, ignatenkobrain, jcrd, joshleeb, joshuarli, kornelski, LlinksRechts, lovesegfault, martinlindhe, mfarrugi, mgkurtz, mgttlinger, mopp, nasyxx, ne-sted, Offpics, Paradiesstaub, polyzen, rleungx, semarie, sergeysova, spk, and teresy for contributing!
This release provides both bug fixes and new features. I've written a post that outlines what's new, as well as some remarks on how I'd like to handle getting me to do releases more often in the future: bsago.me/blog/exa/v0.8.0
- Use completely new, less strict, more friendly options parser (b5bcf22)
- Add a strict mode, for when you want to check your options (97d1472)
--long --grida bit more palatable (e933fa6)
EXA_DEBUGfor logging information (e0727a1)
LS_COLORSparsing and colouring (adfee28, aa2e3a5)
EXA_COLORSparsing and colouring, which overrides the above (075fe80, aa2e3a5)
- Initial support for a
- Default to sorting case-insensitively (57c647f)
- Hide xattr errors unless xattrs were explicitly asked for (5189d66)
neffile types (40ce7ba)
bkfile type (eda3e56)
- Only check the terminal width of
- Sorting by date now has
oldconvenience aliases (f55bd6d)
- Use only verified published crates, so exa can be on crates.io (1efb8a5)
- Display device IDs when listing block or character devices (ef5fa90)
- Display the sticky/setuid/setgid bits in permissions (110613b)
--all --allto display the
..directory entries (5cd7609)
--sort=typeto sort by file type: file, directory, link, pipe, device (f750536)
- Add the
--time-styleoption to use the ISO format for timestamps (690aa21)
- Don’t look up things like time zones or locale information when those columns won’t be displayed (9723612)
- Similarly, don’t buffer the entire table before printing it out when not in grid-details view (fc60838)
- Make the help text like 1% faster to display (763e833)
- Actually display the error when recursing into a directory fails in tree view (f4ddbf3)
- Fix crash when given invalid UTF-8 arguments (de60b95)
- Fix bug where files’ accessed times (atime) were actually modified times (mtime)! (5bdf630)
- Fix bug where the presence of the
COLUMNSenvironment variable made exa always use colours (84b01f2)
Thanks to kballard and gyscos for contributing!
- Add the
.cr2as image type (8ac68f9)
- Non-printable characters in file names are now escaped (3ebc225, 609bafe)
- Add completions for bash, zsh, and fish (897d6ff)
- Don’t prepend symlink paths to link targets (f8624ed)
- Turn off the Git networking features, meaning exa does not require OpenSSL, making it smaller and easier to compile (08bc2e3)
--versionto return exit code 0 (510d2f7)
- Lots and lots of Makefile changes
- The usual amount of internal restructuring
- Fix bugs where files with two components, and
.., were not displayed (a28bd8f, dd63774)
- Handle locales with 4-character-wide short month names (ce8a2e7)
- Fix bug where cell width wasn’t being calculated (0828133)
Thanks to maandree, neosilky, MakeNowJust, raphink, kballard many times over, and quininer for contributing!
Now, where was I?
--colo[u]roption to toggle colours on and off (f92459d)
- Add case-insensitive sorting with
--Ext(note the caps) (8805ce9, 3e9616c)
- Recognise pipes, devices, and sockets on systems where they’re avaliable (a9bb275)
- Add ability to ignore globs (9559629)
- Add option to colour file sizes on a scale (0ffb331, 86065f8)
- Improved help text (edeec0f, b35927f, 7e15e0d)
- Use the time zone data present on the system, rather than the perpetually-outdated versions compiled with exa (ee4c09d)
- Print files’ paths if they had paths when passed in as arguments (9b87ef1)
- Highlight cryptographic file types (45c93b1)
- Error messages now go to stderr (8d25719)
- Stop printing a header for zero files (a7e3456)
- The usual amount of internal restructuring.
- Lots and lots of upgrades to newer Rust versions.
- Allow Details view to be used, even if the terminal has no width (1756a0a)
- Compilation fixes for ARM (734c508)
- Compilation fixes for FreeBSD (b9eb364)
- Fix bug where files were shown to not have extended attributes (4c32663)
- Fix bug where files weren’t being sorted correctly in Details view (f6c5c89)
- Fix bug where the directory name above a list of files was not printed (f35d28d)
Thanks to skade, petevine, jbeich, tomassedovic, hoodie, lindenk, gemmarx, spk, Stebalien, and neosilky for contributing!
This is a snapshot of exa’s current code, which has been cleaned up a bit and at the very least been run through untry (which managed to pick apart all
try!s but one). It’s being released to work around a bug in macOS Sierra.
Usually when I do a release I go through the commit history, pick out anything that looks like it could be a bullet point in the release notes, look at the contributors and see who’s there, then edit the website and upload — there are more features in here than just the openssl upgrade, and the work done so far is really deserving of a “proper” release, rather than just a beta.
But I don’t even want to learn how little work I’ve done on it in the past twelve months.
I think I need to be honest with everyone here. My interest in exa is still there, and the list of features I’d still like to add is as long as it’s ever been, but my motivation is completely shot. Compared to even a year ago it’s plummeted. Every day I go to work, bang out code on whatever it is I’m doing, leave, arrive home, then do my best to not do anything, on the computer or off it. My life’s going alright, I can still do things, I’m able to do things, but I just... don’t, and I wish I could give you a better reason than that. GitHub notifications were something I’d deal with later that day, then next week, then whenever I’d get around to it, and then routed into a folder in my inbox that I never actually checked, and then every day I’d see that number and hope it didn’t increase, and then I noticed that whenever it did increase I wouldn’t be able to concentrate on anything for another hour, so I just hid it, which hurt at first but at least gave me some time back. I’d still commit from time to time, but not mention any of this because I didn’t want to call attention to it, as though in time everyone would just forget. Whenever I saw a reply to the Sierra bug thread, I’d log in, read it, start to worry that if I replied now then I’d be admitting to everyone that I was still around and hadn’t died or something and was instead just ignoring their comments, and then what would people think of me? I even got as far as navigating to “Delete this repository” before I had to push the computer away.
That’s one push that went correctly. It’s obvious to say, but it’s stupid to delete code that people are using, just because you didn’t want to deal with the fact that you made a mistake.
I’m going to try something new: switching exa to a routine 6-week release schedule. The Rust has a release train that works over the same duration using multiple versions. I think exa (a hundredth its size) can do without that part, but the rest of it is good advice. Having an actual date for each one means I don’t get a choice in releasing anything or not, which is an incredible motivator for actually doing it! I still have to put 0.5.0 out properly, but with luck, the second release (0.6.0, which would come out halfway through May) would be a lot less daunting than the first, the third less than the second, and it would plateau from there.
The root advice here is “if you’re having difficulty doing something, then do it more often, because it gets easier”. I found actually releasing my software hard. I want it to be easier.
I hope you all find this acceptable, and I apologise again for the massive commit lacuna.
So a while back I decided to add lots more info to exa's site, and unknowingly described a bunch of features that were in the development version but not the release version! So this is a kind-of emergency release to allow everybody to use those features, even those using the released versions.
The downside of this is that I did mark some features as ones I wanted to complete before the v0.4.0 milestone. All that's happened is the version that they'll show up in has been renamed, but they're all still on my radar.
--grid --longview, which splits the details into multiple columns (090cebe)
--long, which displays a tree view without any details (e1f4ea9)
- DragonFlyBSD support (9601884, 6317417)
- Change symlink arrow to
- Extended attributes are now displayed as child nodes (eee49ec)
- Individual files are now queried in parallel (fa51a87)
- Fix bug where Git repos were always queried, making exa very slow (d547c3f)
- Fix bug where an extra newline was printed (6cf9274)
Thanks to mgee, mneumann, kbknapp, lilydjwg, petevine, rhysd, hoodie, and DavidJFelix for contributing!
It's been exactly 100 commits and just over three months since version 0.2, so it's about time I did another binary release. This one fixes a few bugs, but most of the code changes have been maintenance: upgrading to the new standard filesystem library was a big step, and having dates in the right time zone is something I'm glad to have finally landed.
By the way, I've decided to hold off on version 1.0 until exa can compile with Rust Stable. There aren't many feature flags left, and most of the ones that are pertain to the new
std::fs library that we need to use. So exa will continue to require the nightly version for the foreseeable future.
None in this build.
- Make the Git column optional, to improve performance on large repositories (7dc3a02)
- Stat files in parallel, for a nice speed boost! (d2df70e)
- Use the new Rust
- ANSI codes are now not displayed when output is not to a terminal (36116a1)
- More options now require
--long(5d152db and a4459da)
- Timestamps are now in the user's correct time zone, rather than UTC (cc1d6aa)
- Executable files are now highlighted in green (b452967)
- Allow compilation without Git support (5caa6dd)
Thanks to byteprelude, killercup, e12e, tsurai, and mgee for contributing! And thanks to everyone who's given feedback, reported bugs, and just plain used the thing.
(Please let me know if I've missed you out.)
This is the first proper 'release' of exa. A number of people have been clamouring for these because Rust isn't fully stable yet, and there have been days when it's failed to build because of upstream failures. And if you're the sort of person (like me) who just aliases ls to the in-development version of exa, your ls will fail half the time.
Unfortunately, I have no idea whether these releases will work or not. I just built them with Cargo. If they don't work, please tell me!
- Add missing sort-by-date options. You can now also sort by 'modified', 'created', and 'accessed'. (a4e1719)
- Add extended attribute support. (ce23c63)
--leveloption to limit depth of recursion and tree view. (f505bdc)
- Change date format to mimic ls. (0082563)
- Numerous small optimisations and fixes.
- Use the width of the file name in the grid view, instead of its length. The width handles multibyte UTF-8 characters and filenames with combining diacritics correctly. (43e8061)
- Fix getting Git status while in a subdirectory. (6e19563)
- Fix displaying UIDs and GIDs that are over 231. (38a7854)
- Fix panic when previewing symlink to
- Fix missing
/s in symlink targets. (ef58c30)
Major stuff not done yet
Thanks to nwin, Stebalien, tuftedocelot, coyotebush, davidcelis, ebfe, mikefaille, and jgilchrist for contributing!