Skip to content

Commit

Permalink
executors/NODEJS: add Node.js executor
Browse files Browse the repository at this point in the history
  • Loading branch information
pxpeterxu committed Jan 22, 2024
1 parent c70e803 commit 8c44618
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ The judge can also grade in the languages listed below:
* Groovy
* Haskell
* INTERCAL
* JavaScript (Node.js or V8)
* Kotlin
* Lean 4
* LLVM IR
Expand Down
32 changes: 32 additions & 0 deletions dmoj/executors/NODEJS.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from dmoj.cptbox.filesystem_policies import ExactFile
from dmoj.executors.script_executor import ScriptExecutor


class Executor(ScriptExecutor):
ext = 'js'
command = 'node'
nproc = -1
command_paths = ['node', 'nodejs']
syscalls = ['capget', 'eventfd2', 'shutdown']
address_grace = 1048576
test_program = """
process.stdin.on('readable', () => {
const chunk = process.stdin.read();
if (chunk != null) {
process.stdout.write(chunk);
}
});
"""

def get_env(self):
env = super().get_env()
# Disable io_uring due to potential security implications
env['UV_USE_IO_URING'] = '0'
return env

def get_fs(self):
return super().get_fs() + [ExactFile('/usr/lib/ssl/openssl.cnf')]

@classmethod
def get_version_flags(cls, command):
return ['--version']

0 comments on commit 8c44618

Please sign in to comment.