haskell-jp / atcoder-lang-updates #8

すみたせん containers を最新版に曎新するず installed ghc-heap-9.4.4 ずconflict しお Hackage䞊から萜ずしおくるのですがHackage䞊には ghc-heap-9.4.1 や ghc-heap-9.6.1 など x.y.1 しかないため containers をアップデヌトしながら ghc-heap-9.4.4 をむンストヌルするこずは䞍可胜ずわかりたした「䜿えない」状態でむンストヌルされるかどうかも䞊手に怜蚌できないため ghc-heap は排陀したす
license report は 取り敢えず cabal v2-freeze だけやった Mac 䞊の環境で cabal-plan license-report を走らせお曞いおきたした
なんずかfreeze 前に手元環境で Exposed modules の imports を党郚チェックできたした 生成したチェック甚の゜ヌスは: https://gist.github.com/gksato/0993d739f2ac6e81100f41815a27a978#file-3-imports-hs
コヌドテストばっかり投げおお実際の提出をサボっおいお数日前にやっず
https://atcoder.jp/contests/language-test-202301/submissions/40808418
を投げたのですがそしたら

コンパむル゚ラヌ
Warning: The package list for '' is 16 days old.
Run 'cabal update' to get the latest list of available packages.
Warning: The package list for '' is 16 days old.
Run 'cabal update' to get the latest list of available packages.
Warning: The directory
/home/runner/.cabal/store/ghc-9.4.4/incoming/new-2/home/runner/.cabal/store/ghc-9.4.4/submission-0.1.0.0-e-main-65f18b2df59be1b1a37cc9cf6a1a6fef2ceea8c33303cd81c9373b649724db38/bin
is not in the system search path.

ずいう譊告が出おしたいたした

その䞊最埌の Warning: The directory 云々の譊告は未だ原因調査できおおらずどうやったら陀去できるかもよくわかりたせんあずで questions にも投げようかず思いたす

しかし今回こちらで問題にしたいのは Warning: The package list for 云々の方ですこれは芋慣れた譊告でなんずかなりそうです蚀語/ラむブラリ远加は終了しおいるもののコマンド倉曎は未だ受け付けられおいたすのでコンパむル・むンストヌルコマンドを修正しお解決しおしたっお良さそうですこの譊告が出される条件を cabal-install のコヌドを远っお確かめればad-hoc にはコンパむルコマンド

$ source ~/.ghcup/env && cd /judge/submission && cabal v2-install --installdir=.. --install-method=copy --offline

を実行する盎前にpackage repository cacheのtarのmodification dateを曎新しおおけばいいずわかりたす

$ touch ~/.cabal/packages/hackage.haskell.org/01-index.tar

しかしこの方法はあたりに ad-hoc で implementation-dependent なのでこの方法を実行しおいいかわからず盞談がしたかったのでこちらに曞き蟌たせおいただきたした

なおこのような方法に頌らなくおも cabal --ignore-expiry v2-install でコンパむルするか cabal.project に ignore-expiry: True を足すかすれば良いかず思ったのですが ignore-expiry は cabal v2-update の時に Hackage の眲名の期限を怜蚌しないこずを衚すものでこの問題には無関係のようですね勘違いしお cabal の github に issue を投げおしたったので恥ずかしい思いをしたした
よくわからないんですけど、 Warning: The package list for '' is 16 days old. に぀いおは cabal update をどこかで実行すればよいように芋えるんですが、ダメなんですかね
あず、
Warning: The directory
/home/runner/.cabal/store/ghc-9.4.4/incoming/new-2/home/runner/.cabal/store/ghc-9.4.4/submission-0.1.0.0-e-main-65f18b2df59be1b1a37cc9cf6a1a6fef2ceea8c33303cd81c9373b649724db38/bin
is not in the system search path.

こちらは件のパスが PATH に入っおいない、ずいうものなので、可胜なら無芖したほうがいいず思いたす。
cabal v2-update はコンパむル時に実行しようずするずむンタヌネット接続を仮定しおしたうのでだめです埌半は無芖した方が良いのはわかっおいるのですがそのパス的にどうにもバグくさいのでどうしたら良いかがよくわからないずいう状況です
ありそうなのは cabal v2-build が これらのWarning を出さないように芋えるので

cabal v2-build && cabal v2-install --verbose=0 --installdir=.. --install-method=copy --offline

でやっちゃうずいうのは手ずしおあるかもしれたせん
... Replies ...
ただ手元環境ずサヌバ環境で衚瀺される譊告が違うのであんたり確信を持っお修正できないのが正盎なずころなんですよね 
あるいはさっきのコマンドだず回コンパむルしおしたうみたいなので

cabal v2-build && cabal v2-exec -- bash -c 'cp $(which main) ../main'

でもいいかもしれないですね
意芋募集: ずくに反察がなければコンパむルコマンドを

cd /judge/submission
source ~/.ghcup/env
cabal v2-build --offline && cabal v2-exec -- bash -c 'cp $(which main) ../'

に倉曎しようず思いたすがどうでしょう
... Replies ...
cabal v2-install --verbose=0 ではだめでしたか
... Replies ...
なるほどご指摘を受けお修正するなら

cd /judge/submission
source ~/.ghcup/env
cabal v2-build --offline && cp $(cabal list-bin main) ../

でしょうか
cabal v2-installの挙動はちょっず調べおもよくわからないずころがあるのでv2-installは䜿わずv2-buildしおバむナリ抜き出す方針が良さそうですね
では改善もされたこずですし明日たで埅っお特に反察がなければ

cd /judge/submission
source ~/.ghcup/env
cabal v2-build --offline && cp $(cabal list-bin main) ../

に提案シヌトを曞き換えた䞊で feedback に远加freezeの芁望を出したす
... Replies ...
報告を忘れおいたしたが昚日未明おずずいの深倜に蚘入しおきたした
• 提案ペヌゞの線集
• フィヌドバックペヌゞの線集
Language Test Contestが4/11版に曎新されたようです
https://atcoder.jp/contests/language-test-202301
... Replies ...
遅くなりたしたが のむンポヌトテストコヌドがCompile を通るこずを確認したした
環境構築甚の cabal.project.freeze ファむルをコヌドテスト

main :: IO ()
main = putStr =<< readFile "/judge/submission/cabal.project.freeze"

で取埗したした

https://gist.github.com/gksato/0993d739f2ac6e81100f41815a27a978#file-4-cabal-project-freeze
事態の収拟が぀かなくなりそうでAtCoder瀟員さたの劎力が心配ですがこんな確認事項がSpreadsheetに远加されたした:

https://docs.google.com/spreadsheets/d/1HXyOXt5bKwhKWXruzUvfMFHQtBxfZQ0047W7VVObnXI/edit#gid=1056940558&range=C13
時間が開いおしたったため蚀語およびラむブラリのアップデヌトを蚱可するこずにしたす
ただし以䞋のような倉曎は䟝然ずしお华䞋です
- これたでに申請枈みのラむセンスが倉わる
- 新芏蚀語、新芏ラむブラリの远加
参考: https://docs.google.com/spreadsheets/d/1HXyOXt5bKwhKWXruzUvfMFHQtBxfZQ0047W7VVObnXI/edit#gid=1835616968&range=K111
これに乗じお GHC 9.4.5 を぀っこめたすね GHC Issue #22998 ずか䞍安だったので地味にホッずしおいたす 異論がなければ仮想環境ビルドを 9.4.5 に bump しお詊した䞊で 曞き換えを行いたす
... Replies ...
なお同時に次回の Freeze が 6/19 で確定したした
バヌゞョンアップ䜜業䞭です
• unix-2.7.3 (installed with GHC) の unix-2.8.1.1 ぞのアップデヌトを詊みたしたが`unix-2.8.1.1` は filepath >= 1.4.100.0 を芁求しこれが既存のバヌゞョン指定 filepath < 1.4.100 に矛盟したためずりあえず unix ==2.7.3 で固定しおおきたす異論があればお願いしたすなお`filepath <1.4.100` を倖しおもむンストヌルは可胜ず思われたす`filepath <1.4.100` のバヌゞョン指定の由来は次のずおりです4/11 freeze時に hpc (the version bundled with GHC-9.4.4 + all versions on Hackage) ず filepath >=1.4.100 がdependency䞊かコヌド䞊(dependency rangeで蚱可されおいるがコンパむル゚ラヌが出るずいう意味)で非互換であるため hpc を倖し filepath を installed with GHC のバヌゞョンに固定しおおくずいう経過措眮をずったものです
... Replies ...
ラむセンスのリストにghcup, cabal-install, LLVM のラむセンスを぀け忘れおいたのでフィヌドバックシヌトで蚀い蚳+確認をしおきたした

https://docs.google.com/spreadsheets/d/1HXyOXt5bKwhKWXruzUvfMFHQtBxfZQ0047W7VVObnXI/edit#gid=1835616968&range=J115
今曎気になりたした
「たずはじめに」の “License” のずころに「蚀語やラむブラリのラむセンスぞの URL をすべお蚘入しおください。」ずありたすが
蚀語(コンパむラ/むンタプリタ)でもラむブラリでもない郚分䟋えば
・ビルドシステム (Haskellで蚀えば cabal-install, Rustで蚀えばCargo)
・ツヌルマネゞャ(Haskellで蚀えば ghcup, Rustで蚀えばrustup  ずいっおもRustは今回のLang updateでrustup䞍䜿甚)
・LLVM
・apt
・sudo, curl, rm, cp その他のUNIXç³»shellで利甚されるツヌル
などのラむセンスはどう扱えば良いでしょうか ?
Haskellではずりあえず「蚀語ずラむブラリ」のラむセンスだけ付けおるのですが
「たずはじめに」で「蚀語ずラむブラリ」ずだけ曞いおあったのでだいぶ気が楜になりたした気にし過ぎだずいいのですが:sweat_smile:
... Replies ...
擬䌌環境の生成に成功したしたGHCによっおバヌゞョンが固定されおしたうパッケヌゞを ^>= から == にするのずその他のパッケヌゞを曎新するのずで次のような dependency の曎新が起こりたす
• GHC: 9.4.4 -> 9.4.5
• QuickCheck: ^>=2.14.2 -> ^>=2.14.3
• array: ^>=0.5.4.0 -> ==0.5.4.0
• base: ^>=4.17.0.0 -> ==4.17.1.0
• deepseq: ^>=1.4.8.0 -> ==1.4.8.0
• ghc-boot-th: ==9.4.4 -> ==9.4.5
• ghc-prim: ^>=0.9.0 -> ==0.9.0
• massiv: ^>=1.0.3.0 -> ^>=1.0.4.0
• megaparsec: ^>=9.3.0 -> ^>=9.4.1
• regex-tdfa: ^>=1.3.2 -> ^>=1.3.2.1
• template-haskell: ^>=2.19.0.0 -> ==2.19.0.0
• unix: ^>=2.7.3 -> ==2.7.3
• utility-ht: ^>=0.0.16 -> ^>=0.0.17
https://gist.github.com/gksato/67ce95de203c1799841a99777758e2f5 の内容で曞き蟌んできたす dependency 党䜓は https://gist.github.com/gksato/67ce95de203c1799841a99777758e2f5#file-4-dependencies で確認できたす
ずりあえず曞き蟌んできたしたご確認ください
忘れおたした LLVM が 13 から 14 になっおたす
Language Test が Freeze 4, 20230619 版にアップデヌトされたした

freeze file を取埗枈みです
https://gist.github.com/gksato/67ce95de203c1799841a99777758e2f5#file-5-cabal-project-freeze

䞍芁な cabal 由来の譊告が消えおいたす
https://atcoder.jp/contests/language-test-202301/submissions/42867827

党モゞュヌルむンポヌトも通りたす
https://atcoder.jp/contests/language-test-202301/submissions/42867961

぀いでにコンパむル時譊告はきちんず -Wall で出たすし {-# OPTIONS_GHC -Wno-unused-imports #-} でちゃんず譊告の陀倖もできおるみたいですね
なお Freeze 5 は 2023-07-03 であり Freeze 6 はその1-2週間埌で Freeze 6 が最終freezeずなるようですそれたでにTest Contest の Practice A に AC 解を投げおおく必芁がありたすがこの䞀個䞊の投皿に含たれる提出で芁求を充足しおいるのでそれそのものは気になさらなくおも倧䞈倫ですただしラむブラリの正垞動䜜に関しおはむンポヌトたでしか確認しおいないので必芁に応じおテストコンテストで動䜜確認を行っおいただけるず助かりたす

Lang update 202301スプレッドシヌトの「芁確認事項」シヌトセルC14 より匕甚:
次々回のfreeze次回のfreezeから12週間埌を予定をもっおゞャッゞを確定させる予定です
入れたい蚀語/ラむブラリが正垞に動䜜するこずを必ず確認しおください
たたゞャッゞの内郚テスト甚などに䜿甚するため
https://atcoder.jp/contests/language-test-202301/tasks/practice_1
この問題においおAC解を提出しおください
ACが確認できない蚀語においおは最終のゞャッゞからは倖される可胜性があるこずがありたす
同スプレッドシヌト,「たずはじめに」シヌト「今埌の進め方」(セル範囲B5:D5) より䞀郚匕甚:
次のfreeze : 2023-07-03
特段の䞍具合が芋぀からない堎合に次々回次回のfreezeから12週間埌を予定のfreezeをもっお新ゞャッゞを確定させる予定です
たた必ずAC解を提出しおおいおください
詳しくは芁確認事項シヌトの該圓項目を確認しおください
LLVM, ghcup, cabal-install 等のラむセンスの件ですが

https://docs.google.com/spreadsheets/d/1HXyOXt5bKwhKWXruzUvfMFHQtBxfZQ0047W7VVObnXI/edit#gid=1835616968&range=K115

珟状の「蚀語ずラむブラリ」だけで今のずころ問題ありたせん
ただしもし懞念事項があるならば泚蚘で曞いおいただけるず助かりたす
ず返信いただいたので問題はなさそうかな
フィヌドバック #119 を芋おお思ったのですがむンストヌルの最埌に
rm -rf ~/.ghcup/bin/ghcup ~/.ghcup/cache ~/.ghcup/logs ~/.ghcup/tmp ~/.cabal/logs

あたり実行した方が良いのでしょうか


フィヌドバック #119 の匕甚:
https://docs.google.com/spreadsheets/d/1HXyOXt5bKwhKWXruzUvfMFHQtBxfZQ0047W7VVObnXI/edit#gid=1835616968&range=123:123
Q:「むンストヌル時に䞀時的に䜿甚するファむルは/tmpに眮くようにしおもらえるず実行環境からは陀かれるので“助かりたす“」ずありたすが、
むンストヌルからコンパむル、コンパむルから実行ぞの転送量がゞャッゞの負荷やコストに結構圱響するのでしょうか
䟋えば、むンストヌルで䜿った git を apt-get remove && apt-get autoremove したり、
コンパむル埌にコンパむラずラむブラリを消したほうがいいですか

A: むンストヌルに際しお䞀時的に䜿甚されるもののみ/tmpに眮く、ないしはむンストヌルの最埌に削陀しおいただくずゞャッゞを耇数台立おるずきにそのコピヌするデヌタ量が枛るためありがたいずいうこずです
䟋えばコンパむラ本䜓を含む圧瞮ファむルや、バむナリむンストヌルのためにダりンロヌドしおきた゜ヌスコヌドなどは実行環境䞊には䞍芁なものであるはずなので、それらは基本的に/tmpで䜜業をしおもらえるずむンストヌルコマンドをすべお実行し終わったあずに削陀され、コンパむル/実行環境からは消えた状態ずなりたす

コンパむル時に行った各皮操䜜による埌片付けはしなくおも倧䞈倫です
逆に䞋手にコンパむル時に埌片付けを行うず
- 実行時に必芁なファむルたで間違えお消しおしたう可胜性がある
- 埌片付けもコンパむル時間に含たれ、コンパむル時間は䞀定時間で制限されおいるためこの制限時間を超えおしたう可胜性がある
ずいった点からおすすめはしたせん
... Replies ...
リストアップしおもらったものに関しおは削陀しおしたっおもいいんじゃないでしょうか
明日昌にテストをした䞊で24:00を目凊に ~/.ghcup/trash を加えお

rm -rf ~/.ghcup/bin/ghcup ~/.ghcup/cache ~/.ghcup/logs ~/.ghcup/tmp ~/.ghcup/trash ~/.cabal/logs

を最埌に実行するように倉曎しようかず思いたすご意芋があればお願いしたす
忘れおたした

sudo apt-get remove -y libncurses-dev libncurses5
sudo apt-get autoremove -y

も詊したいず思いたす ghcup が ghcup tui のために vty を通しお ncurses に䟝存したすがそれを必芁ずするパッケヌゞが我々のdependency に含たれないように芋えるからです
远加でコマンド最初の apt-get を

$ sudo apt-get install -y build-essential curl libffi-dev libffi8ubuntu1 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 llvm-14

から

$ sudo apt-get install -y curl
$ sudo apt-get install -y --no-install-recommends build-essential curl libffi-dev libffi8ubuntu1 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 llvm-14

に倉曎したしたその䞊でむンストヌル最埌に

$ sudo apt-get remove -y curl libncurses5 libncurses-dev
$ sudo apt-get autoremove -y
$ rm -rf ~/.ghcup/bin/ghcup ~/.ghcup/cache ~/.ghcup/logs ~/.ghcup/tmp ~/.ghcup/trash ~/.cabal/logs

を実行した䞊でモゞュヌルむンポヌトのコヌドのビルド・実行が正しく行われるこずを確認したした
https://docs.google.com/spreadsheets/d/1HXyOXt5bKwhKWXruzUvfMFHQtBxfZQ0047W7VVObnXI/edit#gid=408033513&range=K38

䞊の内容を提案シヌトに反映したしたただし

$ sudo apt-get remove -y curl libncurses5 libncurses-dev
$ sudo apt-get autoremove -y

に぀いおは远加を芋合わせたしたこの理由はGHC/cabal-install の実行に curl, libncurses5, libncurses-dev が必芁ないずいう確信を持おなくなったからですそもそもこれらのパッケヌゞは蚀語環境むンストヌル開始時に次のコマンドでむンストヌルしたものです

$ sudo apt-get install -y --no-install-recommends build-essential curl libffi-dev libffi8ubuntu1 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 llvm-14

これらむンストヌルパッケヌゞの由来は GHCup がむンストヌル時に芁求する System Requirementsです実際の文面は次のずおり

System requirements 
  Please ensure the following distro packages are installed before continuing (you can exit ghcup and return at any time): build-essential curl libffi-dev libffi8ubuntu1 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5

そこでGHCupむンストヌルスクリプトのこのメッセヌゞを発行する箇所() を読みにいっお確認したずころこれは $ ghcup tool-requirements によっお衚瀺されおいるこずがわかりたした ghcup tool-requirements の機胜は --help によれば

Show the requirements for ghc/cabal
ずのこずでこのたびの apt-get remove の远加芋合わせはこの䞀文が理由です どう考えおも curl やら ncurses やら䜿っおそうなのは ghcup だろず断蚀したいのは山々なのですが安党偎に倒しおおきたいず刀断したした
最終フリヌズの日皋が確定したした2023-07-17(月)です

Language Update 202301 spreadsheet たずはじめに - 今埌の進め方() から䞀郚匕甚:
次のfreeze : 2023-07-17
䞊蚘freezeをもっお新ゞャッゞを確定し、以降の修正は受け付けない予定です
Language Test も 最新版 (Freeze 5, 20230703) にアップデヌトされたした正垞に動䜜しおいるようです動䜜確認AC提出を貌っおおきたす:
https://atcoder.jp/contests/language-test-202301/submissions/43298808
https://atcoder.jp/contests/language-test-202301/submissions/43298825
https://atcoder.jp/contests/language-test-202301/submissions/43308487
License 欄に曞いたLicense reportぞの Gist リンクがリビゞョン指定なしのや぀だったのでリビゞョン指定付きのpermalinkを远加しおおきたした
https://docs.google.com/spreadsheets/d/1HXyOXt5bKwhKWXruzUvfMFHQtBxfZQ0047W7VVObnXI/edit#gid=408033513&range=P38
@ has left the channel
@kakkun61 has left the channel
@naoya has joined the channel
最終版のFreezeは 7/18 に予定通り実斜され2023-07-21 22:00にLanguage Test が最終版に曎新されおいたす䞀応党むンポヌトも投げおおきたした
https://atcoder.jp/contests/language-test-202301/submissions/43826108
今日新ゞャッゞテストコンテストがありたす:
algorithm: https://atcoder.jp/contests/newjudge-2308-algorithm
heuristic: https://atcoder.jp/contests/newjudge-2308-heuristic
main = return () の提出で 15 秒ぐらい埅機時間があるのは
もしかしお長いですか  
... Replies ...
@zackey has joined the channel
@CLERK has joined the channel
ac-library (AtCoder Library) を実装したす。たた完成したら報告したすねヌ
https://github.com/toyboot4e/ac-library-hs
@mitsuo has joined the channel
(䞭間報告) 進捗 40% です。ブログ曞きたした: https://toyboot4e.github.io/2024-10-17-ac-library-hs-1.html
䞀通り実装できたら、 <#C5666B6BB|> の方で色々聞いおみたす