During the previous Hackweek [0], I have successfully implemented, tested and merged [1] an implementation of the entire C++ standard header . This time, my aim is to modernize the C++14-esque standard library [2] of HelenOS [3][4] with a C++17 feature - the header. The header is much larger than the header which I barely managed to implement and test in the allocated time for the previous Hackweek, but was mostly OS-independent as it relied only on previously implemented features of the standard library. The 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:
This project is part of:
Hack Week 19 Hack Week 20 Hack Week 21 Hack Week 22 Hack Week 23
Activity
Comments
-
-
over 5 years 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.
-
Similar Projects
Port some classic game to Linux by MDoucha
Let's pick some old classic game, reverse engineer the data formats and game rules and write an open source engine for it from scratch. Some games from 1990s are simple enough that we could have a playable prototype by the end of the week.
Write which games you'd like to hack on in the comments. Don't forget to check e.g. on Open Source Game Clones, Github and SourceForge whether the game is ported already.
Hack Week 25 - TBD
It's time to pick a game for the upcoming Hack Week. Discuss in the comments what game you'd like to hack!
Hack Week 24 - Master of Orion II: Battle at Antares & Chaos Overlords
Work on Master of Orion II continues but we can hack more than one game. Chaos Overlords is a dystopian, lighthearted, cyberpunk turn-based strategy game originally released in 1996 for Windows 95 and Mac OS. The player takes on the role of a Chaos Overlord, attempting to control a city. Gameplay involves hiring mercenary gangs and deploying them on an 8-by-8 grid of city sectors to generate income, occupy sectors and take over the city.
How to ~~install & play~~ observe the decompilation progress:
- Clone the Git repository
- A playable reimplementation does not exist yet, but when it does, it will be linked in the repository mentioned above.
Further work needed:
- Analyze the remaining unknown data structures, most of which are related to the AI.
- Decompile the AI completely. The strong AI is part of the appeal of the game. It cannot be left out.
- Reimplement the game.
Hack Week 20, 21, 22 & 23 - Master of Orion II: Battle at Antares
Master of Orion II is one of the greatest turn-based 4X games of the 1990s. Explore the galaxy, colonize planets, research new technologies, fight space monsters and alien empires and in the end, become the ruler of the galaxy one way or another.
How to install & play:
- Clone the Git repository
- Run
./bootstrap; ./configure; make && make install
- Copy all *.LBX files from the original Master of Orion II to the installation data directory (
/usr/local/share/openorion2
by default) - Run
openorion2
Further work needed:
- Analyze the rest of the original savegame format and a few remaining data files.
- Implement most of the game. The open source engine currently supports only loading saved games from the original version and viewing the galaxy map, fleet management and list of known planets.
Hack Week 19 - Signus: The Artifact Wars
Signus is a Czech turn-based strategy game similar to Panzer General or Battle Isle series. Originally published in 1998 and open-sourced by the original developers in 2003.
How to install & play:
- Clone the Git repository
- Run
./bootstrap; ./configure; make && make install
in bothsignus
andsignus-data
directories. - Run
signus
Further work needed: