General

Profile

News

dfc: A new dfc version is (finally) out: 3.1.0

Added by Robin Hahling 3 months ago

Last major dfc release was almost 5 years ago. Needless to say that it was time for a new release! In the future, I plan to release more often with less features. This will be easy now that the major code refactoring I wanted to do is done. Therefore, I renamed the stable branch to old-stable and the master branch is now the stable branch.

This release contains a number of new features, a bunch of bug fixes and some (minor) incompatible changes.

Download link: v3.1.0

New features

  • Major code refactoring: now, platform specific code is clearly separated (see src/platform), the auto-adjust feature should also be more accurate.
  • Solaris support.
  • The CSV separator can be specified via the configuration file (defaults to ",").
  • In addition to the already export formats (CSV, text, tex and HTML), dfc is able to export the information as JSON (no additional dependency required).
  • Add support for bold font via the configuration file
  • Add -M option to disable "Mounted On" information.
  • Add Dutch translation.
  • Add git revision to the dfc version string for development versions of dfc.

A number of bugs were also fixed:

  • Fix type not respecting -W flag.
  • Fix alignment issue when both -M and -o options are specified.
  • Plug a few memory leaks.
  • Escape mount options with "" when exporting to CSV as mount options may typically contain a ",".
  • Linux: avoid stat'ing remote file system when local flag is given (prevents dfc from potentially hanging on remote file systems).
  • Consider nfs4 a remote filesystem.
  • Correctly link math library (fixes build on, at least, Ubuntu).
  • Remove a few extra incorrect CSV separators in CSV export mode.
  • Silently ignore EACCESS error on statvfs.
  • Fix build failure on Hurd.
  • Fix build failure on kFreeBSD.

And some minor incompatible changes:

  • Remove "GRIM" compile option - compile flags previously set by "grim" are now defaults.
  • Stop translating color names in the configuration file - now, only "English" names are understood.

Thanks

As always, thanks to all the dfc contributors!

  • Adam Borowski
  • Alexandre Perrin
  • Baptiste Daroussin
  • Cyril Roelandt
  • Frank Villaro-Dixon
  • Kevin Gillieron
  • Landry Breuil
  • Matthieu Le Jeune
  • Sylvain Laperche
  • Tobias Patzl
  • Michiel Pater
  • Andreas Rönnquist

And next?

The next dfc release will probably (finally) accept mount points as argument, just like regular df does. This is a long awaited feature that I miss from dfc and that many people seem to want as well.

dfc: Minor bug fixes for version 3.0.5

Added by Robin Hahling over 2 years ago

I just released version 3.0.5. It contains minor fixes, listed in the changelog file, namely:

  • fixed initialization of LFS (see v3.0.2 release notes). LFS option as
    existing in v3.0.2-v3.0.4 was just wrong: setting LFS option to false
    would actually enable LFS option...
  • do not install translated configuration files and man pages when NLS option
    is disabled
  • fixed typos in the man

Now, en route for version 3.1.0 which will bring more significant changes when available.

siphash: SipHash 0.3.1 is out!

Added by Sylvain Laperche over 3 years ago

Hi,

SipHash 0.3.1 is out!

No new features for this release, but a non-negligible improvement of the execution speed for two of the three use cases :-)

The three use cases are:
  1. hash the whole data in one pass (Block mode).
  2. hash the data incrementally (Streaming mode), one byte at time.
  3. hash the data incrementally (Streaming mode), by chunk (of 4096 bytes for example).The chunks' sizes can be variable.
I did the following benchmark:
  • Input size: ~440 MiB (461 073 466 octets)
  • Compiler options: -O3 -fomit-frame-pointer -funroll-loops
  • CPU: Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz (frequency scaling disabled)
  • Timing done with clock_gettime (CLOCK_MONOTONIC) for C and Ada.Calendar.Clock for Ada
  • Sample size: 100 replications

Version 0.3.0 (the previous version)

SipHash-2-4

| Interfaces                          | Minimum (s) | Maximum (s) | Mean (s) | Standard deviation |
|-------------------------------------|-------------|-------------|----------|--------------------|
| Block                               |    1.168    |    1.254    |   1.191  |        0.017       |
| Streaming (one octet at time)       |    1.277    |    1.348    |   1.303  |        0.016       |
| Streaming (by block of 4096 octets) |    1.176    |    1.249    |   1.200  |        0.016       |

SipHash-4-8

| Interfaces                          | Minimum (s) | Maximum (s) | Mean (s) | Standard deviation |
|-------------------------------------|-------------|-------------|----------|--------------------|
| Block                               |    1.953    |    2.100    |   2.000  |        0.034       |
| Streaming (one octet at time)       |    1.808    |    1.925    |   1.841  |        0.022       |
| Streaming (by block of 4096 octets) |    1.803    |    1.896    |   1.831  |        0.023       |

Version 0.3.1 (this version)

SipHash-2-4

| Interfaces                          | Minimum (s) | Maximum (s) | Mean (s) | Standard deviation |
|-------------------------------------|-------------|-------------|----------|--------------------|
| Block                               |    0.431    |    0.458    |   0.437  |        0.005       |
| Streaming (one octet at time)       |    1.112    |    1.168    |   1.127  |        0.010       |
| Streaming (by block of 4096 octets) |    0.458    |    0.493    |   0.466  |        0.007       |

SipHash-4-8

| Interfaces                          | Minimum (s) | Maximum (s) | Mean (s) | Standard deviation |
|-------------------------------------|-------------|-------------|----------|--------------------|
| Block                               |    0.781    |    0.811    |   0.793  |        0.007       |
| Streaming (one octet at time)       |    1.432    |    1.571    |   1.469  |        0.033       |
| Streaming (by block of 4096 octets) |    0.810    |    0.898    |   0.832  |        0.017       |

Reference C implementation

For comparison, here are the results of the reference C implementation (only SipHash-2-4 is implemented):

| Interfaces                          | Minimum (s) | Maximum (s) | Mean (s) | Standard deviation |
|-------------------------------------|-------------|-------------|----------|--------------------|
| Block                               |    0.484    |    0.503    |   0.489  |        0.004       |
| Streaming (one octet at time)       |     N/A     |     N/A     |    N/A   |         N/A        |
| Streaming (by block of 4096 octets) |     N/A     |     N/A     |    N/A   |         N/A        |

siphash: SipHash 0.3.0 released

Added by Sylvain Laperche over 3 years ago

Hi,

My implementation in Ada of the SipHash PRFs is released.
The version 0.3.0 is based on a generic package that allow you to use any PRF (pseudo-random function) of the SipHash family.

Two interfaces are provided:
- a block interface (to hash a buffer)
- a streaming interface (for an incremental hashing)

The implementation is successfully tested against the reference values provided in the original research paper and in the reference C implementation.

dfc: Version 3.0.4 fixes compilation errors on *BSD systems

Added by Robin Hahling over 3 years ago

Version 3.0.4 of dfc fixes compilation errors on (Dragonfly|Free|Net|Open)BSD introduced in 3.0.3 bugfix release. There is absolutely no difference compared to version 3.0.3 for Linux. I apologize for the inconvenience as this bug could be simply avoided if I tried compiling dfc on a BSD system which I unfortunately haven't done prior to releasing version 3.0.3. This should not happen again in the future.

dfc: New bugfix release available: 3.0.3

Added by Robin Hahling almost 4 years ago

This dfc update fixes several minor issues, including some related to memory management, minor security issues and some typos. One dfc behavior changes a little: now, instead of exiting on error when a file system cannot be stated, it displays a warning message and tries to go on. Before this change, dfc would act this way only when reading file system information was not possible due to permission issues.
This is not a major change but a small improvement which explains why it has been added to this bugfix release.

For the details:

  • fixed warning message wrongly displayed when calling 'dfc -u h'
  • fixed various typo fixes
  • fixed some memory management issues
  • fixed if tests on potentially NULL values
  • fixed potential security holes (potentially exploitable buffer overflows
    caused by misuse of printf function)
  • fixed dfc hang on no more accessible remote file systems
  • display a warning in any case when file system cannot be stated instead of
    exiting on error
  • updated license header and copyright year

Cheers and once again, thanks to all dfc packagers for your work!

dfc: dfc 3.0.2 brings in important bug fixes

Added by Robin Hahling about 4 years ago

dfc 3.0.2 has just been released.

I highly encourage any package or port maintainer to update dfc to this release.
It fixes 2 bugs: a minor one and a very annoying one affecting 32-bit host with volumes >= 4To that simply caused dfc to fail getting volume information.

By the way, just to make things clear: I created a stable branch in dfc git repository. This branch receives only bug fixes and is used to maintain latest stable release of dfc (currently version 3.0.x). I do not maintain the 2.5.x branch since version 3.0.x is out since version 3.0.0 was a major update bringing lots of changes in the code. Therefore, if your distribution still packages dfc in version < 3.0.x, you should fill a bug report to your distribution's dfc packager (I think Debian, Ubuntu and probably all their derivatives still package dfc 2.5.0) to inform about this.

Cheers

dfc: dfc 3.0.1 released and what's next

Added by Robin Hahling over 4 years ago

Hey,

I released a bugfix version of dfc.

As the new changelog file ( #148) states, version 3.0.1 fixes two minor bugs:
  • Fixed CMake minimal required version (#146). Changed from 2.8.0 to 2.8.4 which is actually the minimum version of CMake that is able to build dfc along with its translations.
  • Fixed hyphens and spelling mistakes in manpages (#147 thanks Khalid)

I also have been reported that dfc does not build on versions 7.x of FreeBSD (see #149). However, a proper fix still has to be found.

From now on, I'll start working on version 3.1.0 that already has a list of interesting and useful features (see roadmap). If you wish to see other features implemented in dfc, do not hesitate to ask either by sending me an e-mail or opening a new feature request.

Cheers

dfc: dfc 3.0.0 released

Added by Robin Hahling about 5 years ago

Hi,

It's been only two months since last version of dfc was released. However, a new major version is already available!
dfc 3.0.0 brings a LOT of changes over the 2.x.x series and this explains the version bump.
Some statistics would probably give a better idea of what I mean (output of git diff v2.5.0 v3.0.0 --shortstat):

 38 files changed, 5232 insertions(+), 978 deletions(-)

General improvements

  • Internalization support: dfc can now be easily translated into other languages. Being a french native speaker, I already translated dfc into French. Of course, if you would like to contribute and translate dfc into a language you speak fluently, you are more that welcomed.
  • An optional configuration file has appeared. It allows you to change dfc colors, symbol used to draw the graphs, values from which usage is considered medium and high and colors used in HTML export. So yes, if Mac OSX user want to change the default '=' sign for a '$' sign, they can definitely do it. :P
  • Auto-adjust feature has been improved. Now, instead of arbitrary disabling options when it estimated that the width was too small, it computes the required width and disables options in a smart way until the output fits the terminal width. Of course, this behavior can still be disabled using the -f option.

Better platform support

  • Mac OSX users may now enjoy the -o option
  • DragonFly BSD support
  • NetBSD support
  • OpenBSD support

New options

  • -d option allows you to see... used size (true: it did not exist in previous releases of dfc !)
  • -e option allows you to export data to other formats. What does this mean? Instead of simply displaying information on your console, the data generated by dfc can now be exported CSV, TeX and HTML format. In my opinion, the most useful one probably is the HTML export. See an example of what it looks like with color and without color . It's now easy to imagine a cron job output results to HTML format and send it via e-mail or something of the kind.
  • -l option allows you to only show information about locally mounted file system (just like the old good df(1) does).
  • -p allows you to perform filtering based on file system name.
  • -q sorts the output based on file system name, file system type or mount point. For those interested, the algorithm used is a merge sort because I think it probably is one of the most efficient and easy to implement considering that the data is stored in a linked list structure (memory problem does not exist here as all it does is changing pointers (but the data to sort is very small anyway)).

Of course, all those new options are fairly well documented in the manpage.

Bug fixes

Codebase has been entirely reviewed and modified. So, with all those changes, some bugs may have been introduced even though I thoroughly tested dfc during the development process and spent the last 10 days hunting bugs. However, this release includes some bug fixes over 2.5.0.
The one worth to mention is a bug that was affecting FreeBSD users and was causing dfc to be really wrong (130% usage was possible...). This has of course been fixed in this release. Inodes count was also wrong on FreeBSD and is has also been fixed.

Thanks to the all of the contributors

This release has been marked by contributions from external users and I especially want to thank them for their contributions:

  • Sylvain Laperche who came up with a brilliant idea that makes dfc codebase easily maintainable even if new export options are added in the future. He also reviewed the source code and proposed patches.
  • Cyril Roelandt for various patches which brought initial support for html and tex export, support -o option for OSX, NetBSD port, etc.
  • Landry Breuil who provided a patch that brought initial support for OpenBSD and another one that fixed the bug causing wrong values to be displayed on *BSD platforms.
  • Baptiste Daroussin for maintaining dfc into FreeBSD ports and bringing advice and patches.
  • Khalid El Fathi for packaging dfc for Debian and reporting bugs.
  • Kevin Gillieron for reviewing the code and providing advice.

Final words

I think I also need to mention that due to the support of more platforms and the use of internalization support, I have switched from using a simple Makefile to using cmake. Therefore, compilation process has changed a little but all of this is explained in the README.

I had fun developing this version and I really hope that you will enjoy it! However, this will probably be the last major one as to my point of view, dfc is pretty much feature complete now. A 3.1.0 is planned but it will only bring small changes and improvements and no massive ones like those found in this release.

dfc: dfc is open to translations

Added by Robin Hahling about 5 years ago

Hi folks,

dfc is nearing its 3.0.0 release. This one will bring lots of new features and improvements over 2.5.0 release and one of these is support for translation.

This means that dfc is now easily translatable. However, to be available in many different languages, it needs... translators!

As a native French speaker, I already translated dfc into French but this is the only language I am able to translate dfc into (my German is probably not good enough).

So... if you are fluent in English and would like to translate dfc into your language, this is great! Here is how you should proceed:
  • Pull the latest revision of dfc using the git repository.
  • Read the TRANSLATORS file.
  • Follow the instructions.
  • Send me your translation using e-mail or through this website by creating a new issue with your translation files attached.

That's it. 1 hour should be enough to translate dfc (it took me about 45 minutes for the French translation).

I will spend the next two weeks on optimizing dfc and trying to find and fix bugs. If you send me your translation within this two weeks time frame, it'll be integrated into the 3.0.0 release. If you cannot, don't worry, it will then be added in a future release (like eventual 3.0.1).

(1-10/20)

Also available in: Atom