First version of Taker problem preparation system.
It's a competitive programming contest preparation system, just like Polygon. But it will have some advantages, like possibility to use it locally, being more modular (core tools can be run everywhere, and some web/GUI interface can be built upon them). And, in the end it's released as free software.
The answer is: taker = task + maker
. Also, the name is simillar to make
, which will be used to conrol the dependencies.
Also, there are some concepts on how to rename it.
Some initial work was in this repo. The format will evolve from these docs.
The plan for the project development is improving by code rewriting in several iterations. Initial plan for iterations is (this may change):
- v0— basic prototype: add main functionality, start creating the problem format. This will be written on Python
- v1— more production-ready version: stabilize the problem format, add more functionality, write some tests
- v2— final version: rewrite to C++ (?), fully stabilize the format
Initially, Taker will be command-line. After the initial stable release, work on GUI or Web tools can be started.
I don't know.
make
(not necessarily GNU Make, because Makefiles in this project tries to be POSIX-compatible)python (works on 3.5, 3.6 and 3.7)
,pip
,venv
g++
(orclang
)cmake
for runnerslibjsoncpp
for runners (on Debian/Ubuntu, you can uselibjsoncpp-dev
package)
Currently the project targets UNIX-like OSes and is tested on GNU/Linux, macOS and FreeBSD. Other OS support will be added later.
The least portable part of Taker is the process runner. For UNIXes, it is taker_unixrun
. It mostly uses POSIX-compatible routines, but there may be problems while porting it to some other UNIX-like OS. Now it works on the following ones:
- GNU/Linux
- FreeBSD
- macOS [thanks to Travis CI for macOS builds :) ]
Note that on OSes other than GNU/Linux, taker_unixrun
uses ru_maxrss
for getrusage()
, which not always gives the correct value for consumed memory. So, GNU/Linux is supported best now.
Taker's build system is also tightly integrated with UNIXes. So, to port Taker on Windows, some additional effort is required.