Skip to content

Files

Latest commit

c5bd22a · Sep 6, 2024

History

History

judger

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Aug 6, 2023
Jun 14, 2024
Nov 21, 2023
Aug 30, 2024
Aug 24, 2024
May 10, 2024
Jan 7, 2024
Jan 7, 2024
Dec 11, 2023
Jul 4, 2024
Aug 2, 2024
Sep 6, 2024
Feb 2, 2024
Jun 2, 2024

MDOJ judger

Publish staging build for judger

From high level, the judger is a grpc server that provide JudgeService, which is defined in /proto/judge.proto.

The interface should provide ability to

  • Judge a submission(compile, run, compare output)
  • Stream the output of a submission(compile, run, stream) Like leetcode, we should provide experience of watching the output of a submission in real time with setting up development environment.
  • Get List of available languages
  • Get system utilization

Design

Developing a GRPC server works in a similar way to developing a function, but remote and stateful.

To implement high level function, we need to implement the following functions:

  • filesystem module: mount a filesystem in userspace
  • sandbox module: run a program in a sandbox with resource/permission limitation applied
  • language module: compile/run a program for a specific programing language

See dev.md in each module for more details.