Judge0 API v1.5.0 Release Notes

Release Date: 2020-01-02 // over 4 years ago
  • v1.5.0 (2020-01-01)

    ๐Ÿ†• New Features

    • Added 30 new languages , archived 42 languages and kept active 2 languages from the last release. In total, there are now 32 active languages that can be used and all are updated to their latest versions as of the date of this release. Archived languages cannot be used anymore. Following table shows a status of every language that API supports.
    ID Name Status
    1 Bash (4.4) archived
    2 Bash (4.0) archived
    3 Basic (fbc 1.05.0) archived
    4 C (gcc 7.2.0) archived
    5 C (gcc 6.4.0) archived
    6 C (gcc 6.3.0) archived
    7 C (gcc 5.4.0) archived
    8 C (gcc 4.9.4) archived
    9 C (gcc 4.8.5) archived
    10 C++ (g++ 7.2.0) archived
    11 C++ (g++ 6.4.0) archived
    12 C++ (g++ 6.3.0) archived
    13 C++ (g++ 5.4.0) archived
    14 C++ (g++ 4.9.4) archived
    15 C++ (g++ 4.8.5) archived
    16 C# (mono 5.4.0.167) archived
    17 C# (mono 5.2.0.224) archived
    18 Clojure (1.8.0) archived
    19 Crystal (0.23.1) archived
    20 Elixir (1.5.1) archived
    21 Erlang (OTP 20.0) archived
    22 Go (1.9) archived
    23 Haskell (ghc 8.2.1) archived
    24 Haskell (ghc 8.0.2) archived
    25 Insect (5.0.0) archived
    26 Java (OpenJDK 9 with Eclipse OpenJ9) archived
    27 Java (OpenJDK 8) archived
    28 Java (OpenJDK 7) archived
    29 JavaScript (nodejs 8.5.0) archived
    30 JavaScript (nodejs 7.10.1) archived
    31 OCaml (4.05.0) archived
    32 Octave (4.2.0) archived
    33 Pascal (fpc 3.0.0) archived
    34 Python (3.6.0) archived
    35 Python (3.5.3) archived
    36 Python (2.7.9) archived
    37 Python (2.6.9) archived
    ๐Ÿ’Ž 38 Ruby (2.4.0)
    ๐Ÿ’Ž 39 Ruby (2.3.3)
    ๐Ÿ’Ž 40 Ruby (2.2.6)
    ๐Ÿ’Ž 41 Ruby (2.1.9)
    42 Rust (1.20.0) archived
    43 Plain Text Renamed from Text (plain text).
    44 Executable Not changed.
    ๐Ÿ†• 45 Assembly (NASM 2.14.02)
    ๐Ÿ†• 46 Bash (5.0.0)
    ๐Ÿ†• 47 Basic (FBC 1.07.1)
    ๐Ÿ†• 48 C (GCC 7.4.0)
    ๐Ÿ†• 49 C (GCC 8.3.0)
    ๐Ÿ†• 50 C (GCC 9.2.0)
    ๐Ÿ†• 51 C# (Mono 6.6.0.161)
    ๐Ÿ†• 52 C++ (GCC 7.4.0)
    ๐Ÿ†• 53 C++ (GCC 8.3.0)
    ๐Ÿ†• 54 C++ (GCC 9.2.0)
    ๐Ÿ†• 55 Common Lisp (SBCL 2.0.0)
    ๐Ÿ†• 56 D (DMD 2.089.1)
    ๐Ÿ†• 57 Elixir (1.9.4)
    ๐Ÿ†• 58 Erlang (OTP 22.2)
    ๐Ÿ†• 59 Fortran (GFortran 9.2.0)
    ๐Ÿ†• 60 Go (1.13.5)
    ๐Ÿ†• 61 Haskell (GHC 8.8.1)
    ๐Ÿ†• 62 Java (OpenJDK 13.0.1)
    ๐Ÿ†• 63 JavaScript (Node.js 12.14.0)
    ๐Ÿ†• 64 Lua (5.3.5)
    ๐Ÿ†• 65 OCaml (4.09.0)
    ๐Ÿ†• 66 Octave (5.1.0)
    ๐Ÿ†• 67 Pascal (FPC 3.0.4)
    ๐Ÿ†• 68 PHP (7.4.1)
    ๐Ÿ†• 69 Prolog (GNU Prolog 1.4.5)
    ๐Ÿ†• 70 Python (2.7.17)
    ๐Ÿ†• 71 Python (3.8.1)
    ๐Ÿ†• 72 Ruby (2.7.0)
    ๐Ÿ†• 73 Rust (1.40.0)
    ๐Ÿ†• 74 TypeScript (3.7.4)
    • โž• Added route GET /languages/:id for getting all attributes of specified language.
    • โž• Added route GET /languages/all for getting a list of all languages (archived and active).
    • โž• Added route DELETE /submissions/:token for deleting specified submission. Only authorized requests (users) are allowed to delete a submission.
    • Added configuration variable ENABLE_SUBMISSION_DELETE with default value set to false. By default you cannot delete a submission as long as this variable is set to false. When set to true then only authorized requests (users) can delete specific submission.
    • โž• Added info routes GET /about, GET /version, GET /license and GET /isolate. Last route GET /isolate returns result from isolate --version command.

    ๐Ÿ‘Œ Improvements

    • ๐Ÿš€ Updated base image to judge0/api-base:1.0.0 which uses Debian "buster" and has installed Ruby 2.7.0.
    • ๐Ÿ‘Œ Improved handling of an server error when one or more submission attributes cannot be serialized to JSON without Base64 encoding. User now gets an error with instructions to use base64_encoded=true query parameter.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed example in configuration for using ALLOW_ORIGIN variable with multiple origins.
    • Fixed a bug where value of MAX_MAX_PROCESSES_AND_OR_THREADS was used as default value for max_processes_and_or_threads attribute of submission, whereas MAX_PROCESSES_AND_OR_THREADS should be used.

    Other Changes

    • Increased maximum allowed compiler_options and command_line_arguments length to 512 characters.
    • ๐Ÿ–จ Increased default value of MAX_PROCESSES_AND_OR_THREADS to 60.
    • Increased default value of MAX_MAX_PROCESSES_AND_OR_THREADS to 120.
    • ๐Ÿ”„ Changed default value of RAILS_ENV to production.
    • ๐Ÿ”„ Changed default value of INTERVAL to 0.1.
    • โšก๏ธ Updated year in LICENSE.
    • Added environment variables JUDGE0_{HOMEPAGE,SOURCE_CODE,MAINTAINER,VERSION}. Isolate sandbox inherits these variables and they are now available for use in user code.

    ๐Ÿš€ Deployment Procedure

    ๐Ÿณ 1. Install Docker and Docker Compose. ๐Ÿš€ 2. Download and extract release archive:

    wget https://github.com/judge0/api/releases/download/v1.5.0/judge0-api-v1.5.0.zip
    unzip judge0-api-v1.5.0.zip
    
    1. Run all services and wait few seconds until everything is initialized:

      cd judge0-api-v1.5.0 docker-compose up -d db redis sleep 10s docker-compose up -d sleep 5s

    2. Your instance of Judge0 API v1.5.0 is now available at http://<IP OF YOUR SERVER>:3000.