200 C programs with differential tests, used to score C→Rust translation by pass@1.
raw_data/{argv,scanf}/*.c the reference C programs (92 argv + 108 scanf = 200)
generated_tests/{argv,scanf}/*.json input / expected-output cases per program
test_tasks/{argv,scanf}/*.json the test command per program
manifest.json problem list, metric and decoding settings
argv programs read their input from command-line arguments, scanf programs from stdin. The
harness passes that convention explicitly to the translation prompt, so a model is told where input
comes from instead of inferring it from the C source.
Expected outputs were produced by compiling and running the reference C program, so a problem "passes" when the Rust translation reproduces the C program's behaviour on those inputs.
- Derived from IBM Project CodeNet (~120 of the 200): original C submissions taken from
Project CodeNet, redistributed with their source content
intact under new filenames (
codenet_argv_NNN.c/codenet_scanf_NNN.c). Some of these retain their original authors' code comments verbatim, including non-English comments and one reference URL — that is upstream content, not part of this benchmark's annotations. - Written for this benchmark (~80 of the 200): additional C programs authored with LLM assistance, then compiled with gcc and executed to verify their I/O behaviour before inclusion.
- Tests (
generated_tests/,test_tasks/): produced for this benchmark.
The Project CodeNet–derived portion is licensed under the Community Data License Agreement – Permissive – Version 2.0 (CDLA-Permissive-2.0), which permits redistribution and derivative data sets provided this notice travels with the data. Project CodeNet's own source code is separately licensed Apache-2.0.
Material added by this benchmark (the newly written programs, the tests, the manifest) is released
under the repository's Apache-2.0 license — see ../LICENSE and ../NOTICE.
Each test_tasks/*.json embeds an absolute path to its generated_tests counterpart. They ship with
a /__DATASET__/... placeholder; run bash ../fix_paths.sh once per checkout to rewrite them to
your location. Without that step every problem fails with Invalid test command.