A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1. はじめに | |||||||||||||||||||||||||
2 | AtCoderで使用できるプログラミング言語の更新を行います。 そこで使用したいプログラミング言語のインストール方法、コンパイル、実行コマンドを記入してください。 基本的には記入していただいたものをそのまま実行を行い、言語のインストールを行います。 ただしここに記入していただいたすべての言語のインストールを保証するものではありません。 注意事項: 言語ならびにライブラリのライセンスについて 有償のライセンスが必要なものは受け付けませんのでご遠慮ください。 その他、営利目的での利用に際して制限がある場合や、ライセンス上の懸念などがある場合には受け付けられないことがあります。 言語更新作業について 言語インストール作業は提案シートから機械的に行います。 インストール作業中に気づいた点は適時フィードバックを行いますが提案シートの方を直接修正することはありません。 フィードバックの内容を確認し必ず提案シートを修正してください 言語テストコンテスト: 現在準備中です。ある程度の言語が記入されたタイミングで言語をインストールし公開します。 今回の言語更新を試せるコンテストを準備しました。 https://atcoder.jp/contests/language-test-202301 過去の言語更新時の情報は4.に記入してあります。 | |||||||||||||||||||||||||
3 | ||||||||||||||||||||||||||
4 | 1.1 今後の進め方(2023/07/21更新) | |||||||||||||||||||||||||
5 | ある時点でシートをfreezeして、その情報をもとにライセンスチェック/言語インストールチェック作業を行います。 その後、言語コンテストにて動作確認を行い、フィードバックを募集します。 この「ある日にfreeze→ライセンスチェック→言語コンテストにて動作確認→フィードバックを募集」という流れを2-3サイクルほど繰り返す予定です。 ライセンスチェックや言語インストール作業で却下された言語は次サイクルにてインストール出来るよう、不備の修正をお願いします。 言語やライブラリの追加は締め切りました。 現状: 更新分を反映済み 今後の予定: 実際に新ジャッジを使ったテストコンテストを行うことを予定しています | |||||||||||||||||||||||||
6 | 2. 環境 | |||||||||||||||||||||||||
7 | 項目 | 内容 | ||||||||||||||||||||||||
8 | OS | Ubuntu 22.10 | ||||||||||||||||||||||||
9 | カレントディレクトリ | /judge | ||||||||||||||||||||||||
10 | 環境変数 | HOME=/home/runner LANG=C.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ATCODER=1 | ||||||||||||||||||||||||
11 | ||||||||||||||||||||||||||
12 | 3. 各項目について | |||||||||||||||||||||||||
13 | * 付きの項目は必須項目です。見やすいように背景を赤色に変更しています 前回まで存在した{dirname}、{basename}といったプレースホルダといったものは今回なくなりました プレースホルダとして存在しているのは実行時におけるメモリ指定だけです 前回からコピーしてくる場合などにご注意ください。 | |||||||||||||||||||||||||
14 | ||||||||||||||||||||||||||
15 | 項目 | 説明 | 例1 | 例2 | ||||||||||||||||||||||
16 | * Language | 言語の名前を記入してください | C++ | Rust | ||||||||||||||||||||||
17 | * Compiler/Interpreter | 言語の実装を記入してください | GCC | Rust | ||||||||||||||||||||||
18 | * Version | 実装のバージョンを記入してください | 12.2 | 1.66.1 | ||||||||||||||||||||||
19 | Library | 標準ライブラリ以外に追加でインストールを行うライブラリがある場合は1行ごとにライブラリ名を記入してください。 このときバージョンがある場合はバージョンも合わせて記入してください | AC Library@1.4 Boost@1.81.0 | proconio@0.4.3 rand@0.8.5 regex@1.7.0 | ||||||||||||||||||||||
20 | * Filename | 提出されたソースコードを配置するファイルパスを指定してください。 基本的には Main + 拡張子 で統一してください。 ただしファイル名に意味がある場合やプロジェクトファイルを用いる場合は適切にファイルパスを指定してください | Main.cpp | src/main.rs | ||||||||||||||||||||||
21 | * Install Command | インストールを行うコマンドを記入してください。 基本的にはここに記入されたコマンドをそのままbashに入力して実行を行います。 そのためインストールに複数のコマンドが必要な場合は、ここに複数行で記入してください。 インストール時に一時ファイルが必要になる場合は /tmp を使ってください。 ここに置かれたファイルはインストールの最後ですべて消されるため、必要なファイルはここには置かないようにしてください | sudo apt install gcc=12.2 cd /tmp # ac library sudo mkdir /opt/aclibrary wget https://github.com/atcoder/ac-library/releases/download/v1.4/ac-library.zip sudo unzip /tmp/ac-library.zip -d /opt/aclibary # boost wget https://boostorg.jfrog.io/artifactory/main/release/1.81.0/source/boost_1_81_0.tar.gz tar xf boost_1_81_0.tar.gz cd boost_1_81_0 ./bootstrap.sh --with-toolset=gcc --without-libraries=mpi,graph_parallel ./b2 -j3 toolset=gcc variant=release link=static runtime-link=static cxxflags="-std=c++20" stage sudo ./b2 -j3 toolset=gcc variant=release link=static runtime-link=static cxxflags="-std=c++20" --prefix=/opt/boost/gcc install | pushd /tmp wget https://static.rust-lang.org/dist/rust-1.66.1-x86_64-unknown-linux-gnu.tar.gz tar xf rust-1.66.1-x86_64-unknown-linux-gnu.tar.gz sudo ./rust-1.66.1-x86_64-unknown-linux-gnu/install.sh popd cargo init --bin --edition 2021 --vcs none # ltoを有効 cat >> Cargo.toml <<'CARGO_TOML' [profile.release] lto = true CARGO_TOML cargo add proconio@0.4.3 cargo add --features std,small_rng,min_const_gen rand@0.8.5 cargo add regex@1.7.0 cargo build --release | ||||||||||||||||||||||
22 | Compilation Command | コンパイルを行う言語の場合はコンパイルコマンドを記入してください。 ここに記入されたコマンドはそのままbashに渡されるため、シェル特有の構文や複数行での記入が可能です。 またコンパイルを行う必要のないインタプリタ言語の場合でも、構文チェックなどをコンパイル代わりに行わせることが可能です。 その場合はエラー時に下記Object fileが生成されないようにうまく記述してください | g++ -std=gnu++20 -I/opt/aclibrary -I/opt/boost/gcc/include -L/opt/boost/gcc/lib -O2 -o a.out main.cpp | cargo build --release --quiet --offline | ||||||||||||||||||||||
23 | Object file | コンパイルが成功したかどうかの判定に行うファイルを /judgeからの相対パス で記入してください。 コンパイルの成否はこのファイルの存在で判定を行います。 コンパイラの出力内容や、コンパイラの終了コードでは判定を行いませんので注意してください またこの仕様を用いて、インタプリタ言語で構文チェックなどを行うことが可能です。 例えばコンパイルコマンドとして構文チェックを行い、その成否に応じてここで指定するファイルを生成する/しないを行えば、インタプリタ言語でもコンパイルエラーで実行を中断させることが可能です | a.out | target/release/judge | ||||||||||||||||||||||
24 | Environment | 実行時に追加で設定する環境変数がある場合は 環境変数名=内容 というフォーマットで1行ごとに1つずつ記入してください。 ここで指定するものは実行時のみ使用されます。 インストール時、コンパイル時に設定する環境変数がある場合はbashの構文を用いて行ってください また以下の文字列は実行直前にジャッジシステムによって置換されます: {memory:b} 問題のメモリ制限の数値(単位: バイト) {memory:kb} 問題のメモリ制限の数値(単位: KiB) {memory:mb} 問題のメモリ制限の数値(単位: MiB) これは主にVM系の言語において、VMにメモリの使用量の上限を指定するために使われることを想定しています。 | RUST_BACKTRACE=0 | |||||||||||||||||||||||
25 | * Execution Command | 実行コマンドを指定してください ここで指定する実行コマンドはbashなどを経由せず直接起動を行うため、コマンドラインの引数を1行ごとに記入してください。 また以下の文字列は実行直前にジャッジシステムによって置換されます: {memory:b} 問題のメモリ制限の数値(単位: バイト) {memory:kb} 問題のメモリ制限の数値(単位: KiB) {memory:mb} 問題のメモリ制限の数値(単位: MiB) これは主にVM系の言語において、VMにメモリの使用量の上限を指定するために使われることを想定しています。 例えばJavaにおいては -Xss{memory:mb}M という1行が入ると思います。 | ./a.out | ./target/release/judge | ||||||||||||||||||||||
26 | * License Url | 言語やライブラリのライセンスへの URL をすべて記入してください。このライセンスを元に判断します。 すべて記入されていない場合、その言語の追加が出来ないことがあります。 | https://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html https://www.boost.org/users/license.html | https://www.rust-lang.org/ja/policies/licenses https://github.com/statiolake/proconio-rs https://github.com/rust-random/rand https://github.com/rust-lang/regex | ||||||||||||||||||||||
27 | Comment | 最後の列以降の部分はコメント記入欄です。 必要であれば他人とのやりとりに使用してください。 みんななかよくつかってね! | ||||||||||||||||||||||||
28 | ||||||||||||||||||||||||||
29 | 4. 前回、前々回の更新時の情報 | |||||||||||||||||||||||||
30 | スプレッドシート | コンテスト | ||||||||||||||||||||||||
31 | 今回 | https://docs.google.com/spreadsheets/d/1HXyOXt5bKwhKWXruzUvfMFHQtBxfZQ0047W7VVObnXI | https://atcoder.jp/contests/language-test-202301 | |||||||||||||||||||||||
32 | 前回 | https://docs.google.com/spreadsheets/d/1PmsqufkF3wjKN6g1L0STS80yP4a6u-VdGiEv5uOHe0M/ | https://atcoder.jp/contests/language-test-202001 | |||||||||||||||||||||||
33 | 前々回 | https://docs.google.com/spreadsheets/d/1X5Yk5PiGx-Otm1JaHpQQzQhEIPj8trofLTkphKX43s0/ | https://atcoder.jp/contests/language-test-201603 | |||||||||||||||||||||||
34 | ||||||||||||||||||||||||||
35 | 5. 更新履歴 | |||||||||||||||||||||||||
36 | 日時(JST) | 変更内容 | ||||||||||||||||||||||||
37 | 2023-01-17 20:00 | 公開 | ||||||||||||||||||||||||
38 | 2023-01-17 21:45 | 環境変数に ATCODER を追加 | ||||||||||||||||||||||||
39 | 2023-01-18 14:16 | License Urlにちょっと追記 | ||||||||||||||||||||||||
40 | 2023-01-19 05:20 | 前回、前々回の更新時の情報を追記 | ||||||||||||||||||||||||
41 | 2023-01-19 17:15 | 注意事項にプレースホルダが変更になった件を追記 | ||||||||||||||||||||||||
42 | 2023-01-31 17:19 | 今後の進め方について | ||||||||||||||||||||||||
43 | 2023-03-17 20:15 | 現在言語のインストール作業を進めています その過程で各種シートに変更を加えました 作業状況は「2/3 freeze modified」シートに記入しています Feedbackに各言語のインストール時に問題になったこと、また修正を行った内容を記載しています 特に修正内容は作業者が推測で行ったものであるため、正しいとは限りませんので必ず確認をお願いします 内容の修正を加えたのは「2/3 freeze modified」のシートだけであり、提案シートには反映しておりません 変更があった場合にChangedに「!」が、また背景色が付いているセルが「2/3 freeze」から変更があった場所です またこれに合わせて提案シートも「2/3 freeze modified」から変更があった場所に背景色が付くように設定を変えてあります フィードバックに記載した内容および変更差分をご確認の上、提案シートの修正を次回のfreezeまでにお願いします | ||||||||||||||||||||||||
44 | 2023-03-23 00:00 | 2/3でのfreezeしたものをインストールしたジャッジを公開 https://atcoder.jp/contests/language-test-202301 注意事項を追加。必ず提案シートの方を修正してください | ||||||||||||||||||||||||
45 | 2023-03-24 02:00 | 要確認事項シートを追加 | ||||||||||||||||||||||||
46 | 2023-03-25 00:30 | 言語、ライブラリのい追加に関する注意を追記 | ||||||||||||||||||||||||
47 | 2023-04-03 19:00 | Object fileの説明を修正 記述するパスの内容を/judgeからの相対パスにするように明確に | ||||||||||||||||||||||||
48 | 2023-04-05 16:00 | 言語テストコンテストにインストールされている言語を3/28時点でのものに更新 | ||||||||||||||||||||||||
49 | 2023-04-07 15:45 | Environmentにメモリ制限用のプレースホルダが使えることを追記 実行用コマンドだけでなく、実行時の環境変数にもメモリ制約に応じた値を設定できるようにしたのを明記しました | ||||||||||||||||||||||||
50 | 2023-04-11 19:15 | 今後の進め方を修正 これからは現時点で提案された言語、ライブラリが正常に動作するためのコマンドの修正のみ受け付け、新規言語やライブラリの追加はできません | ||||||||||||||||||||||||
51 | 2023-06-16 21:00 | 次回の更新予定日更新 またコンパイラ、ライブラリのバージョンのアップデートについて記載 | ||||||||||||||||||||||||
52 | 2023-06-23 01:00 | 次回の更新予定日更新 また次々回のfreezeをもって特に問題がない場合はジャッジを確定すること、またAC解を必ず提出しておくことを記載 | ||||||||||||||||||||||||
53 | 2023-07-06 23:30 | 次回の更新予定日更新 また次回のfreeze後は修正を行わない旨を記載 | ||||||||||||||||||||||||
54 | 2023-07-21 22:00 | 2023-07-17に締め切った更新分をコンテストに反映 今後の予定を記述 | ||||||||||||||||||||||||
55 | ||||||||||||||||||||||||||
56 | ||||||||||||||||||||||||||
57 | ||||||||||||||||||||||||||
58 | ||||||||||||||||||||||||||
59 | ||||||||||||||||||||||||||
60 | ||||||||||||||||||||||||||
61 | ||||||||||||||||||||||||||
62 | ||||||||||||||||||||||||||
63 | ||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||
65 | ||||||||||||||||||||||||||
66 | ||||||||||||||||||||||||||
67 | ||||||||||||||||||||||||||
68 | ||||||||||||||||||||||||||
69 | ||||||||||||||||||||||||||
70 | ||||||||||||||||||||||||||
71 | ||||||||||||||||||||||||||
72 | ||||||||||||||||||||||||||
73 | ||||||||||||||||||||||||||
74 | ||||||||||||||||||||||||||
75 | ||||||||||||||||||||||||||
76 | ||||||||||||||||||||||||||
77 | ||||||||||||||||||||||||||
78 | ||||||||||||||||||||||||||
79 | ||||||||||||||||||||||||||
80 | ||||||||||||||||||||||||||
81 | ||||||||||||||||||||||||||
82 | ||||||||||||||||||||||||||
83 | ||||||||||||||||||||||||||
84 | ||||||||||||||||||||||||||
85 | ||||||||||||||||||||||||||
86 | ||||||||||||||||||||||||||
87 | ||||||||||||||||||||||||||
88 | ||||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||
90 | ||||||||||||||||||||||||||
91 | ||||||||||||||||||||||||||
92 | ||||||||||||||||||||||||||
93 | ||||||||||||||||||||||||||
94 | ||||||||||||||||||||||||||
95 | ||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||
97 | ||||||||||||||||||||||||||
98 | ||||||||||||||||||||||||||
99 | ||||||||||||||||||||||||||
100 |