During the previous Hackweek [0], I have successfully implemented, tested and merged [1] an implementation of the entire C++ standard header <future>. This time, my aim is to modernize the C++14-esque standard library [2] of HelenOS [3][4] with a C++17 feature - the <filesystem> header. The <filesystem> header is much larger than the <future> header which I barely managed to implement and test in the allocated time for the previous Hackweek, but <future> was mostly OS-independent as it relied only on previously implemented features of the standard library. The <filesystem> header, however, is limited by the filesystem API of the OS and as such implementing of the entirety of it might not be possible, limiting the scope of the project (which is a good thing due to the time constraints).

The primary features of the header [5] that should be implemented:

  • path (manipulation, testing, catenation)
  • directory handling (create, delete, remove, move, copy, traversal, recursive traversal)
  • file handling (create, delete, remove, move, copy - links/sockets/states as permitted by HelenOS)
  • error handling (exception types, those only require C++ constructs, low priority)
  • file types as permitted by HelenOS (e.g. things like is_fifo() might not be possible)

[0] https://hackweek.suse.com/19/projects/helenos-of-the
[1] https://github.com/HelenOS/helenos/pull/171
[2] https://github.com/HelenOS/helenos/tree/master/uspace/lib/cpp
[3] http://helenos.org
[4] https://github.com/helenos/helenos
[5] https://en.cppreference.com/w/cpp/header/filesystem

Looking for hackers with the skills:

helenos c++ standardese filesystem

This project is part of:

Hack Week 19 Hack Week 20

Activity

  • over 1 year ago: jjindrak added keyword "helenos" to this project.
  • over 1 year ago: jjindrak added keyword "c++" to this project.
  • over 1 year ago: jjindrak added keyword "standardese" to this project.
  • over 1 year ago: jjindrak added keyword "filesystem" to this project.
  • over 1 year ago: jjindrak started this project.
  • over 1 year ago: jjindrak originated this project.

  • Comments

    • jjindrak
      over 1 year ago by jjindrak | Reply

      It seems the standard took different filesystem/operating systems into account well, so I might be able to implement the entirety of the header after all. Current progress can be seen at:

      https://github.com/Dzejrou/helenos/commits/hackweek19

      Two days to go!

    • jjindrak
      over 1 year ago by jjindrak | Reply

      Yesterday I finished the last remaining parts of the header. Before an upstream PR is created automated tests need to be added (I foolishly tested everything by hand and now regret it) and one case of standard non-conformance (recursivedirectoryiterator returns entries as they are received by readdir(), but that does not prepend a path prefix relative to the root of the iteration). Other than these two short comings, I am satisfied with managing to implement the entire header in just 5 days and marking it as finished.

    • jjindrak
      4 months ago by jjindrak | Reply

      During HW19 I did implement majority of the library, but there are two places where the implementation diverges from the standard and there is a sever lack of unit tests, which prevented merging upstream. During HW20 I plan on finishing this.

    Similar Projects

    Port some classic game to Linux by MDoucha

    Let's pick some old classic game, reverse engin...


    Build kdump initrd without dracut by ptesarik

    Project Description

    The kdump plumbing ...


    [unassigned] improve new openSUSE image writer by lnussel

    In order to aid loading openSUSE installation a...