I am a Software Engineer, Living in London, and a Huge Rust and Go enthusiast.
Mostly interested in projects involving (but not limited to) Compilers, Programming languages, Developer tools ...
I want to contribute more to open source projects (other than the ones that I create), and upload more educational videos and live streams to Youtube and hopefully blog more regularly.
I am pationate about teaching people what I learned, So if you have a project involving teaching people new things, feel free to reach out.
I don't see why it's needed to have an exact version of a plugin/library in requirement.txt (using ==)
I think using a range based restriction would be a better idea.
The priority of this is very low for now, but let's keep that in mind.
We can't just run the code without any time/memory/output limit.
Also I suggest adding a ProcessManager which manages calling out os processes and getting out the output/error streams, manage limits, exceptions, etc...
User must be able to add custom test cases, and he can specify the output file as well as no output file at all if he only wishes to run a case which he don't have the correct output.
Add watcher mode that watches the main file of each task in the contest and recompile/run the code if necessary. The watcher should be able to:
Watch files for any modification (Including changing current tests or adding new tests)
Add a file called ".task_metadata.json" in each task folder to keep track of tests and template link, etc.
Hash files before running + keep track of old runs = Don't rerun if it's the same test/code
Log all of these compiling/running to the user. If passed just show "PASSED" in green, if not print "FAILED:" and print the two outputs failing. (Limit the output to 1000 lines if necessary)