AtCoder 新ジャッジシステム（主にKotlin）

# AtCoderの新環境

先日、AtCoder社より、下記のツイートがありました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">また、今回のコンテストから、言語のバージョンや、使用可能な言語が変更となっております。問題なければ次回からこのバージョンでのコンテスト開催となります。<br>次回コンテストまでに、新環境のテストをしておくことをオススメしておきます。</p>&mdash; AtCoder (@atcoder) <a href="https://twitter.com/atcoder/status/1246755537779228673?ref_src=twsrc%5Etfw">April 5, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


　 
そこで、現/新の「コードテスト」ページで選択できる言語を比較してみました。[^1] [^2]


## サポート言語（バージョン）

バージョアップとともに言語自体の追加もなされたようです。知らない言語も多くあります。

| #    | 現環境                          | 新環境                              |
| ---- | ------------------------------- | -------------------------------- |
| 1    |                                 | Ada2012 (GNAT 9.2.1)             |
| 2    | Awk (mawk 1.3.3)                | Awk (GNU Awk 4.1.4)              |
| 3    | Bash (GNU bash v4.3.11)         | Bash (5.0.11)                    |
| 4    |                                 | bc (1.07.1)                      |
| 5    | Brainfuck (bf 20041219)         | Brainfuck (bf 20041219)          |
| 6    | C (Clang 3.8.0)                 | C (Clang 10.0.0)                 |
| 7    | C (GCC 5.4.1)                   | C (GCC 9.2.1)                    |
| 8    |                                 | C# (.NET Core 3.1.201)           |
| 9    |                                 | C# (Mono-csc 3.5.0)              |
| 10   | C# (Mono 4.6.2.0)               | C# (Mono-mcs 6.8.0.105)          |
| 11   | C++ (Clang 3.8.0)               | C++ (Clang 10.0.0)               |
| 12   | C++ (GCC 5.4.1)                 | C++ (GCC 9.2.1)                  |
| 13   | C++14 (Clang 3.8.0)             |                                  |
| 14   | C++14 (GCC 5.4.1)               |                                  |
| 15   | Ceylon (1.2.1)                  |                                  |
| 16   | Clojure (1.8.0)                 | Clojure (1.10.1.536)             |
| 17   | COBOL - Fixed (OpenCOBOL 1.1.0) | COBOL - Fixed (OpenCOBOL 1.1.0)  |
| 18   | COBOL - Free (OpenCOBOL 1.1.0)  | COBOL - Free (OpenCOBOL 1.1.0)   |
| 19   | Common Lisp (SBCL 1.1.14)       | Common Lisp (SBCL 2.0.3)         |
| 20   | Crystal (0.20.5)                | Crystal (0.33.0)                 |
| 21   |                                 | Cython (0.29.16)                 |
| 22   | D (DMD64 v2.070.1)              | D (DMD 2.091.0)                  |
| 23   | D (GDC 4.9.4)                   | D (GDC 9.2.1)                    |
| 24   | D (LDC 0.17.0)                  | D (LDC 1.20.1)                   |
| 25   |                                 | Dart (2.7.2)                     |
| 26   |                                 | Dash (0.5.8)                     |
| 27   |                                 | dc (1.4.1)                       |
| 28   |                                 | Elixir (1.10.2)                  |
| 29   |                                 | Erlang (22.3)                    |
| 30   |                                 | F# (.NET Core 3.1.201)           |
| 31   | F# (Mono 4.0)                   | F# (Mono 10.2.3)                 |
| 32   |                                 | Forth (gforth 0.7.3)             |
| 33   | Fortran (gfortran v4.8.4)       | Fortran(GNU Fortran 9.2.1)       |
| 34   | Go (1.6)                        | Go (1.14.1)                      |
| 35   | Haskell (GHC 7.10.3)            | Haskell (GHC 8.8.3)              |
| 36   |                                 | Haxe (4.0.3); Java               |
| 37   |                                 | Haxe (4.0.3); js                 |
| 38   | Java7 (OpenJDK 1.7.0)           |                                  |
| 39   | Java8 (OpenJDK 1.8.0)           | Java (OpenJDK 1.8.0)             |
| 40   |                                 | Java (OpenJDK 11.0.6)            |
| 41   | JavaScript (node.js v5.12)      | JavaScript (Node.js 12.16.1)     |
| 42   | Julia (0.5.0)                   | Julia (1.4.0)                    |
| 43   | Kotlin (1.0.0)                  | Kotlin (1.3.71)                  |
| 44   | Lua (5.3.2)                     | Lua (Lua 5.3.5)                  |
| 45   | LuaJIT (2.0.4)                  | Lua (LuaJIT 2.1.0)               |
| 46   | MoonScript (0.5.0)              |                                  |
| 47   | Nim (0.13.0)                    | Nim (1.0.6)                      |
| 48   | Objective-C (Clang3.8.0)        | Objective-C (Clang 10.0.0)       |
| 49   | Objective-C (GCC 5.3.0)         |                                  |
| 50   | OCaml (4.02.3)                  | OCaml (4.10.0)                   |
| 51   | Octave (4.0.2)                  | Octave (5.2.0)                   |
| 52   | Pascal (FPC 2.6.2)              | Pascal (FPC 3.0.4)               |
| 53   | Perl (v5.18.2)                  | Perl (5.26.1)                    |
| 54   | Perl6 (rakudo-star 2016.01)     |                                  |
| 55   | PHP (5.6.30)                    |                                  |
| 56   | PHP7 (7.0.15)                   | PHP (7.4.4)                      |
| 57   |                                 | Prolog (SWI-Prolog 8.0.3)        |
| 58   | PyPy2 (5.6.0)                   | PyPy2 (7.3.0)                    |
| 59   | PyPy3 (2.4.0)                   | PyPy3 (7.3.0)                    |
| 60   | Python2 (2.7.6)                 |                                  |
| 61   | Python3 (3.4.3)                 | Python (3.8.2)                   |
| 62   |                                 | Racket (7.6)                     |
| 63   |                                 | Raku (Rakudo 2020.02.1)          |
| 64   | Ruby (2.3.3)                    | Ruby (2.7.1)                     |
| 65   | Rust (1.15.1)                   | Rust (1.42.0)                    |
| 66   | Scala (2.11.7)                  | Scala (2.13.1)                   |
| 67   | Scheme (Gauche 0.9.3.3)         | Scheme (Gauche 0.9.9)            |
| 68   | Sed (GNU sed 4.2.2)             | Sed (4.4)                        |
| 69   | Standard ML (MLton 20100608)    | Standard ML (MLton 20130715)     |
| 70   | Swift (swift-2.2-RELEASE)       | Swift (5.2.1)                    |
| 71   | Text (cat)                      | Text (cat 8.28)                  |
| 72   | TypeScript (2.1.6)              | TypeScript (3.8)                 |
| 73   | Unlambda (0.1.3)                | Unlambda (2.0.0)                 |
| 74   |                                 | Vim (8.2.0460)                   |
| 75   | Visual Basic (Mono 4.0.1)       | Visual Basic (.NET Core 3.1.101) |
| 76   |                                 | Zsh (5.4.2)                      |


## Kotlinの環境

私がメインで使用している**Kotlin**のバージョンも**1.0.0**から**1.3.71**にアップされるようです。
そこで、以下のコードを現/新の「コードテスト」ページで実行させ、実行環境を取得しました。[^1] [^2] [^3]

```Kotlin
fun main(arg: Array<String>) {
    var n = 0
    for ((k, v) in System.getProperties()) {
        n += 1
        if (n > 0) println("$n\t$k\t$v")
        //変数nを判定するのは、一回の実行で出力できる標準出力の出力量に制限があるため
    }
}
```

しかし、**Kotlin**自体のバージョンを実行環境から確認することはできませんでした。

| #    | Key                           | Kotlin 1.0.0                                                 | Kotlin 1.3.71                                                |
| ---- | ----------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 1    | awt.toolkit                   | sun.awt.X11.XToolkit                                         | sun.awt.X11.XToolkit                                         |
| 2    | file.encoding                 | UTF-8                                                        | UTF-8                                                        |
| 3    | file.encoding.pkg             | sun.io                                                       |                                                              |
| 4    | file.separator                | /                                                            | /                                                            |
| 5    | java.awt.graphicsenv          | sun.awt.X11GraphicsEnvironment                               | sun.awt.X11GraphicsEnvironment                               |
| 6    | java.awt.printerjob           | sun.print.PSPrinterJob                                       | sun.print.PSPrinterJob                                       |
| 7    | java.class.path               | /opt/kotlinc/lib/kotlin-runner.jar                           | ./Main.jar                                                   |
| 8    | java.class.version            | 51                                                           | 55                                                           |
| 9    | java.endorsed.dirs            | /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/endorsed           |                                                              |
| 10   | java.ext.dirs                 | /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext:/usr/java/packages/lib/ext |                                                              |
| 11   | java.home                     | /usr/lib/jvm/java-7-openjdk-amd64/jre                        | /usr/lib/jvm/java-11-openjdk-amd64                           |
| 12   | java.io.tmpdir                | /tmp                                                         | /tmp                                                         |
| 13   | java.library.path             | /usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib | /usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib |
| 14   | java.runtime.name             | OpenJDK Runtime Environment                                  | OpenJDK Runtime Environment                                  |
| 15   | java.runtime.version          | 1.7.0_121-b00                                                | 11.0.6+10-post-Ubuntu-1ubuntu118.04.1                        |
| 16   | java.specification.name       | Java Platform API Specification                              | Java Platform API Specification                              |
| 17   | java.specification.vendor     | Oracle Corporation                                           | Oracle Corporation                                           |
| 18   | java.specification.version    | 1.7                                                          | 11                                                           |
| 19   | java.vendor                   | Oracle Corporation                                           | Ubuntu                                                       |
| 20   | java.vendor.url               | http://java.oracle.com/                                      | https://ubuntu.com/                                          |
| 21   | java.vendor.url.bug           | http://bugreport.sun.com/bugreport/                          | https://bugs.launchpad.net/ubuntu/+source/openjdk-lts        |
| 22   | java.version                  | 1.7.0_121                                                    | 11.0.6                                                       |
| 23   | java.version.date             |                                                              | 2020/1/14                                                    |
| 24   | java.vm.compressedOopsMode    |                                                              | 32-bit                                                       |
| 25   | java.vm.info                  | mixed mode                                                   | mixed mode, sharing                                          |
| 26   | java.vm.name                  | OpenJDK 64-Bit Server VM                                     | OpenJDK 64-Bit Server VM                                     |
| 27   | java.vm.specification.name    | Java Virtual Machine Specification                           | Java Virtual Machine Specification                           |
| 28   | java.vm.specification.vendor  | Oracle Corporation                                           | Oracle Corporation                                           |
| 29   | java.vm.specification.version | 1.7                                                          | 11                                                           |
| 30   | java.vm.vendor                | Oracle Corporation                                           | Ubuntu                                                       |
| 31   | java.vm.version               | 24.121-b00                                                   | 11.0.6+10-post-Ubuntu-1ubuntu118.04.1                        |
| 32   | jdk.debug                     |                                                              | release                                                      |
| 33   | kotlin.home                   | /opt/kotlinc                                                 |                                                              |
| 34   | line.separator                | \\n                                                          | \\n                                                          |
| 35   | os.arch                       | amd64                                                        | amd64                                                        |
| 36   | os.name                       | Linux                                                        | Linux                                                        |
| 37   | os.version                    | 3.13.0-108-generic                                           | 4.15.0-1063-aws                                              |
| 38   | path.separator                | :                                                            | :                                                            |
| 39   | sun.arch.data.model           | 64                                                           | 64                                                           |
| 40   | sun.boot.class.path           | （長いので省略）                                             |                                                              |
| 41   | sun.boot.library.path         | /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64              | /usr/lib/jvm/java-11-openjdk-amd64/lib                       |
| 42   | sun.cpu.endian                | little                                                       | little                                                       |
| 43   | sun.cpu.isalist               |                                                              |                                                              |
| 44   | sun.io.unicode.encoding       | UnicodeLittle                                                | UnicodeLittle                                                |
| 45   | sun.java.command              | org.jetbrains.kotlin.runner.Main -classpath ./Main.jar MainKt | MainKt -Xss256m                                              |
| 46   | sun.java.launcher             | SUN_STANDARD                                                 | SUN_STANDARD                                                 |
| 47   | sun.jnu.encoding              | UTF-8                                                        | UTF-8                                                        |
| 48   | sun.management.compiler       | HotSpot 64-Bit Tiered Compilers                              | HotSpot 64-Bit Tiered Compilers                              |
| 49   | sun.os.patch.level            | unknown                                                      | unknown                                                      |
| 50   | user.country                  | US                                                           | US                                                           |
| 51   | user.dir                      | /imojudge                                                    | /imojudge/sandbox                                            |
| 52   | user.home                     | /home/contestant                                             | /home/contestant                                             |
| 53   | user.language                 | en                                                           | en                                                           |
| 54   | user.name                     | contestant                                                   | contestant                                                   |
| 55   | user.timezone                 |                                                              |                                                              |


# 終わりに

**Java**のバージョンが**1.7.0**から**11.0.6**にアップされ、**Java11**の新機能を使うことができるのか楽しみです。

また、**Swift**も**2.2**から**5.2.1**にアップされるようです。もし**4.1**以上に上がったら**Kotlin**から乗り換えようかと考えていた時もありましたので、こちらも楽しみです。

何かの参考になれば幸いです。以上


## _2020.4.13追記_

予告されていた通り昨日(_2020.4.12_)のABC162から新環境に変わりました。そこで自分のKotlin(及びJava)の環境も新しくしました。

```Log
$ kotlin -version
Kotlin version 1.3.71-release-431 (JRE 11.0.6+10)

$ kotlinc -version
info: kotlinc-jvm 1.3.71 (JRE 11.0.6+10)

$ java -version
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.6+10, mixed mode)

```


[^1]: 現環境の「コードテスト」ページは[**こちら**](https://atcoder.jp/contests/abc161/custom_test)です。
[^2]: 新環境の「コードテスト」ページは[**こちら**](https://atcoder.jp/contests/judge-update-202004/custom_test)です。
[^3]: プログラム実行時に得られる並びはこの表の並びとは異なります。表を見易くするために、**Key**でソートしました。