Compiler Generated Repairs - kimjooyoon/meta-ontology-go GitHub Wiki
2026-10-03 ์๋ด: ์๋ ์์ ์ ๊ด์ธก์ ๊ฐ ์ ์ ๊ณ ์ ๋ ์์คยท๋๊ตฌ์ฒด์ธ์ ๊ธฐ์ค์ผ๋ก ์ฝ์ต๋๋ค. ์ต์ ๋ฐ๋ ์์ฑ๊ณผ ์์ฒด ์ํ ๋ชจ๋ธ์ ํ๋ฆ์ ๋ชจ๋ธ๊ณผ ๋ฉํํ๋ก๊ทธ๋๋ฐ, ์ง๊ธ ์ฌ์ฉํ ๋ฒ์ ์ ํ์ฌ ์ํ์ ์์ํ๊ธฐ์ ์ ๋ฆฌํ์ต๋๋ค.
Gooo์ ๋ฉํํ๋ก๊ทธ๋๋ฐ์ ์ฝ๋์ ์ด๋ฆํ๋ฅผ ๋ถ์ด๋ ๋ฐ์ ๋๋์ง ์์ต๋๋ค. ์ด๋ค ์๋ณธ์ ์ด๋ค ๋์์ ๋ฐ๊ฟ์ง ์ ์ธํ๊ณ , ๊ทธ ์ ์ธ์ ์ฐ๊ฒฐ๋ ์์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด ์ค์ต์์๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ์ง ๋ชปํ๋๋ฐ๋ ์ฑ๊ณต์ผ๋ก ๋ณด๊ณ ํ๋ CLI ๋์์ ๋ค๋ฃน๋๋ค. Gooo๋ ์ด๋ฏธ ์กด์ฌํ๋ JSON ์ถ๋ ฅ์ ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ์ ํํด, ์ฌ๋์ด ์ฝ๋ ์ถ๋ ฅ ๊ฒฝ๋ก์ ์์ ํ๋ณด๋ฅผ ๋ง๋ญ๋๋ค. ํ๋ณด๋ฅผ ์์ฑํ๋ ์ผ๊ณผ ๊ทธ ํ๋ณด๋ฅผ ๋ฐ์๋ค์ด๋ ์ผ์ ๋ถ๋ฆฌ๋ฉ๋๋ค.
์ง์ ๊ธฐ์ค: ๊ฐ๋ฐ ๋ธ๋์น์ #851 ๋ณํฉ๋ณธ,
go-error-guard:v1. ์คํ์ ์ปดํ์ผ๋ฌ ํ๋กํ๊ณผ ์์ ์ด๋ํฐ์ด๋ฉฐ, ๊ณต๊ฐ ๋ฆด๋ฆฌ์ค ์ ์ฒด์ ์ง์ ์ฝ์์ด๋ ์๋ก์ด ๋ฒ์ฉ ๋ฆฌํฉํฐ๋ง ๋ช ๋ น์ ์๋๋๋ค.
๊ณ์ฐ์ ๋๋ด๋ ๊ฒ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๋ค๋ฆ ๋๋ค.
์ถ๋ ฅ ๋์์ด ๋ซํ๋๋ฐ CLI๊ฐ ์ข
๋ฃ ์ฝ๋ 0์ ๋ฐํํ๋ฉด, ํธ์ถ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์์ ์ผ๋ก ๋ฐ์๋ค๊ณ ์คํดํ ์ ์์ต๋๋ค. ์ด ์ฌ๋ก์ ๋ชฉํ๋ ๋ชจ๋ ์คํ์ ์ฑ๊ณต์ผ๋ก ๋ง๋๋ ๊ฒ์ด ์๋๋๋ค. ์ ๋ฌ์ ์คํจํ์ ๋ ์คํจ๋ฅผ ์ ํํ๊ฒ ๋ณด๊ณ ํ๋ ๊ฒ์
๋๋ค.
| ๊ทธ๋๋ก ์ง์ผ์ผ ํ๋ ๊ฒ | ๋ฐ๋์ด์ผ ํ๋ ๊ฒ |
|---|---|
| ์ ์ ์ถ๋ ฅ์ ๋ด์ฉ๊ณผ ๊ธฐ์กด JSON ์ค๋ฅ ์ฒ๋ฆฌ | ์ฌ๋์ฉ ์ถ๋ ฅ์์ ๋ฒ๋ ค์ง๋ ์ฐ๊ธฐ ์ค๋ฅ |
| ์ ํํ์ง ์์ ์๋ณธ ๊ตฌ๊ฐ | ๊ทธ ์ฐ๊ธฐ ํธ์ถ์ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ตฌ๊ฐ |
| ๊ธฐ์กด ๊ฒ์ฌ์ ๊ธฐ๋๊ฐ | ์ค๋ฅ๋ฅผ ๋ฌด์ํ๋ ์ค์ ๋์ |
๊ตฌ์กฐ๋ง ๋ฐ๊พธ๋ ๋ฆฌํฉํฐ๋ง๊ณผ ๋ฒ๊ทธ ์์ ์ ๋ชฉํ๊ฐ ๋ค๋ฆ ๋๋ค. ์ด ์์ ์ ํน์ ์คํจ ์ํฉ์ ๋์์ ์๋์ ์ผ๋ก ๋ฐ๊พธ๋ฏ๋ก, ์๋ณธ๊ณผ ๋ชจ๋ ์ํฉ์์ ๊ฐ์ ๋์์ ํ๋ค๊ณ ์ฃผ์ฅํ์ง ์์ต๋๋ค. ์ฝ๋ ๋ณํ๊ณผ ํจ๊ณผ์์ ์ด ์ฐจ์ด๋ฅผ ๋ ์ฝ์ ์ ์์ต๋๋ค.
Go 1.27.0์ ์ฌ์ฉํ ์ ์ฅ์์ CI ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํฉ๋๋ค. ๋ค๋ฅธ ์์ ๊ณผ ๋ถ๋ฆฌ๋ ์ฒดํฌ์์์์ ๋ณํฉ๋ ๋ฒ์ ์ ์ ํํ ์ ์์ต๋๋ค.
git clone https://github.com/kimjooyoon/meta-ontology-go.git gooo-guard-lab
cd gooo-guard-lab
git checkout ba8a8d5250e1b2ccdf87a495eb7930a7ef082614์ค์ต ์
๋ ฅ์ internal/meta/policycompilation/testdata/go-error-guard/original.go.golden์
๋๋ค. ๊ณผ๊ฑฐ a97a102... ๋ฒ์ ์ ์ค์ Go ํ์ผ์ ๋ณด์กดํ fixture์
๋๋ค. ํ์ฌ CLI๋ฅผ ์ผ๋ถ๋ฌ ๊ณ ์น๊ฑฐ๋ ๋ง๊ฐ๋จ๋ฆฌ๋ ์ค์ต์ด ์๋๋๋ค. ์๋์ ๊ณ ์ ๋ ์๋ณ๊ฐ์ ์ด ์
๋ ฅ์๋ง ๋์ํฉ๋๋ค.
๊ฒฐํจ์ด ์ด๋ฏธ ์์ ๋ ํ์ฌ ๊ตฌํ์ ๊ฐ์ ์๋ณ๊ฐ์ผ๋ก ๋ฃ์ผ๋ฉด ์๋ณธ ๋ถ์ผ์น๋ก ๊ฑฐ์ ๋๋ ๊ฒ์ด ์ ์์ ๋๋ค. ๊ฒ์ฌ๋ฅผ ํต๊ณผ์ํค๊ธฐ ์ํด ์๋ณ๊ฐ์ ๋ชฐ๋ ๋ฐ๊พธ๊ฑฐ๋, ๊ทธ ๊ฑฐ์ ์ ์์ ์๋ฃ๋ก ์ฝ์ง ์์ต๋๋ค.
์ถ๋ ฅ์ฉ ์์ ๋๋ ํฐ๋ฆฌ์ Gooo ์ ๋ ฅ์ ๋ง๋ญ๋๋ค.
work="$(mktemp -d)"
cat > "$work/guard.gooo" <<'GOOO'
package goerrorguard
namespace goerrorguard
entity Source id "gooo://error-guard/source"
entity Candidate id "gooo://error-guard/candidate"
activity GuardWrite(Source) -> Candidate computes "go-error-guard:v1;function=writeSourcePackageResult;writer=stdout;diagnostic=stderr;source=sha256:5bd27e33e18e8c5dc87f25c0cd4004ee370cfa7dc441c85d89bb03fd333a8937;handler=sha256:16406e2ee9ce1a70c1541170c698ca69219afc39dd56aae66c54d7cc64ff2a93"
GOOO๊ธด computes ๋ฌธ์์ด์ ๊ฐ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ์ ์ธ | ์ปดํ์ผ๋ฌ์ ์ฃผ๋ ์ ํ |
|---|---|
Source, Candidate
|
๋ฌด์์ ์ฌ์ฉํด ๋ฌด์์ ์์ฑํ๋๊ฐ |
GuardWrite |
๊ทธ ๋์ ์ฐ๊ฒฐํ๋ ์์ |
go-error-guard:v1 |
์ ์ฉํ , ๋ฒ์๊ฐ ์ ํ๋ ๋ณํ ๊ท์น |
function |
์์ ๋์ ํจ์ |
writer, diagnostic
|
๊ฒฐ๊ณผ์ ์ง๋จ ๋ฉ์์ง๋ฅผ ์ฐ๋ ๋งค๊ฐ๋ณ์ |
source |
์ ๋ ฅ Go ํ์ผ ์ ์ฒด ๋ฐ์ดํธ์ ์๋ณ๊ฐ |
handler |
๋ณต์ฌํ ๊ธฐ์กด ์ค๋ฅ ์ฒ๋ฆฌ ๋ธ๋ก์ ์๋ณ๊ฐ |
์ด ์ ํ์ ์์ฐ์ด์์ ์ถ์ธกํด ์ฑ์ฐ์ง ์์ต๋๋ค. ๊ธฐ์กด Gooo ํ๋ฐํธ์๋๋ ์ ์ธ์ ์๋ฏธ ๋ชจ๋ธ์ธ IR๋ก ๋ด๋ฆฌ๊ณ , ์ปดํ์ผ๋ฌ๋ ์ ๋ ฅ ์ฌ์ฉ๊ณผ ๊ฒฐ๊ณผ ์์ฑ ๊ด๊ณ๊ฐ ๊ทธ ๋ชจ๋ธ์ ๋ง๋์ง ํ์ธํฉ๋๋ค.
ํด์๋ ์ด ์ ๋ ฅ์ด ์ด๋ ์ ๋ ฅ์ธ์ง ๊ตฌ๋ถํฉ๋๋ค. ์๋ช , ์์ฑ์ ์ ๋ขฐ, ์ฌ๋ฐ๋ฅธ ๋์์ ์ฆ๋ช ๊น์ง ๋์ ํ์ง๋ ์์ต๋๋ค.
์ ์ฅ์ ๋ฃจํธ์์ ์์ ์ด๋ํฐ๋ฅผ ํธ์ถํฉ๋๋ค.
go run ./examples/meta-policy-compilation/go-error-guard \
-program "$work/guard.gooo" \
-source ./internal/meta/policycompilation/testdata/go-error-guard/original.go.golden \
> "$work/proposal.json"์ด ์ด๋ํฐ๋ ๋ ์ ๋ ฅ์ ์ฝ๊ณ JSON์ ํ์ค ์ถ๋ ฅ์ผ๋ก ๋ด๋ณด๋ ๋๋ค. ์๋ณธ ํ๋ก์ ํธ๋ฅผ ์์ ํ๊ฑฐ๋ ํ๋ณด๋ฅผ ์คํํ์ง ์์ต๋๋ค. ์ ํธ์ถ์์ ์ ํ์ผ์ ๋ง๋๋ ์ฃผ์ฒด๋ ํธ์ถ์๊ฐ ์ง์ ํ ์ถ๋ ฅ ๋ฆฌ๋ค์ด๋ ์ ์ ๋๋ค.
๊ฒฐ๊ณผ์์ ๋ค์์ ์ฝ์ต๋๋ค.
| ํ๋ | ์ฝ๋ ๋ฐฉ๋ฒ |
|---|---|
state |
PROPOSED์ด๋ฉด ํ๋ณด๊ฐ ์์ฑ๋๋ค๋ ๋ป |
candidate_source |
์ค์ ์์ฑ๋ Go ์ฝ๋ |
edit_start, edit_end
|
์๋ณธ์ 0๋ถํฐ ์์ํ๋ ๋ฐ์ดํธ ๊ตฌ๊ฐ, ๋ ์์น๋ ์ ์ธ |
program_digest, semantic_digest
|
Gooo ์ ๋ ฅ๊ณผ ์๋ฏธ ๋ชจ๋ธ์ ์๋ณ๊ฐ |
source_digest, candidate_digest
|
์๋ณธ๊ณผ ์์ฑ ์ฝ๋์ ์๋ณ๊ฐ |
admission.state |
๋
๋ฆฝ๋ ๊ฒ์ฆยท์ฑํ ๊ทผ๊ฑฐ๊ฐ ์๋ค๋ฉด UNKNOWN
|
mutation_authority, promotion_authority
|
์ด ํ๋ณด์ ์๋ ์์ ยท์น๊ฒฉ ๊ถํ์ ๊ฐ๊ฐ 0
|
ํ๋ณด ์์ฑ ์ฑ๊ณต๊ณผ ์ฑํ ์ฌ๋ถ UNKNOWN์ ๋ชจ์์ด ์๋๋๋ค. ํ์ผ์ ๋ง๋ค์ด ๋ธ ์ฌ์ค๊ณผ ๊ทธ ํ์ผ์ ์ฌ์ฉํด๋ ๋๋ค๋ ํ๋จ์ ์๋ก ๋ค๋ฅธ ์ง๋ฌธ์ ๋๋ค.
์๋ณธ์ ์ ํ๋ ํธ์ถ ๊ตฌ๊ฐ๋ง ๊ต์ฒดํ๋ฉฐ, ์ ํํ ๊ธฐ์กด ์ค๋ฅ ์ฒ๋ฆฌ ๋ธ๋ก์ ๋ฐ์ดํธ ๊ทธ๋๋ก ๋ณต์ฌํฉ๋๋ค. ์๋ ์ฐ๊ธฐ ํธ์ถ์ ํ ๋ฒ ํ๊ฐ๋ฉ๋๋ค. ๊ตฌ๋ฌธยท๋ฐ์ธ๋ฉ ๊ฒ์ฌ๋ง์ผ๋ก ์ ์ฒด ํ๋ก๊ทธ๋จ์ ํ์ , ์คํ ํจ๊ณผ, ์๋ฏธ์ ๋๋ฑ์ฑ์ด ์ฆ๋ช ๋์ง๋ ์์ต๋๋ค.
ํธ์ถ ํ์์ ๋ณํฉ๋ ์ด๋ํฐ ๊ตฌํ์ ๊ทผ๊ฑฐํฉ๋๋ค. ์๋ ์คํ ์ฆ๊ฑฐ๋ CI์ ์ปดํ์ผ๋ฌ API์ ์ค์ CLI ํจํค์ง ๊ฒ์ฆ์ ๋ํ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์์ ์ ธ ์ค์ต ์ ์ฒด๋ฅผ ๋ณ๋ ์ฌ์ฉ์ ์ธ์ ์์ ์คํํ๋ค๋ ์ฆ๊ฑฐ๋ก ๋ฐ๊พธ์ด ๋งํ์ง ์์ต๋๋ค.
#851์ native CI๋ ๊ฐ์ ํ์ฑ CLI ํ ์คํธ ์๋ณธ์ ๊ณ ์ ํ ๋ค, ์๋ ๊ตฌํ๊ณผ ์์ฑ๋ ํ๋ณด๋ฅผ ๊ฐ๊ฐ Go ๋น๋ overlay๋ก ์คํํ์ต๋๋ค. ๊ธฐ์กด ํ๋ก์ ํธ ํ์ผ์ ์ง์ ๋ฎ์ด์ด ์คํ์ด ์๋๋๋ค.
| ๊ณ ์ ๋ ์ฌ์ฉ ์ฌ๋ก | ์๋ณธ ๊ฒ์ฌ | ์์ฑ ํ๋ณด ๊ฒ์ฌ |
|---|---|---|
| ์ฌ๋์ฉ ๊ฒฐ๊ณผ์ ์ฐ๊ธฐ๋ฅผ ๊ฑฐ์ ํ๋ ์ถ๋ ฅ ๋์ | FAIL | PASS |
| JSON ๊ฒฐ๊ณผ์ ์ฐ๊ธฐ๋ฅผ ๊ฑฐ์ ํ๋ ์ถ๋ ฅ ๋์ | PASS | PASS |
| ์ ์์ ์ธ ์ฌ๋์ฉ ๊ฒฐ๊ณผ ์ถ๋ ฅ | PASS | PASS |
| JSON ํจํค์ง ๊ฒฐ๊ณผ์ ๋ฐ์ดํธ ๋์ผ ์ฌ์คํ | PASS | PASS |
| ํฉ๊ณ | 3 PASS / 1 FAIL | 4 PASS / 0 FAIL |
์ฒซ ํ์ PASS๋ ์ถ๋ ฅ์ด ์ฑ๊ณตํ๋ค๋ ๋ป์ด ์๋๋๋ค. ์ถ๋ ฅ ์คํจ๋ฅผ ์๊ตฌํ ์ฌ๋ก์์ CLI๊ฐ ์คํจ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณด๊ณ ํ๋ค๋ ๋ป์
๋๋ค. ํ
์คํธ ํ๋ก์ธ์ค์ ์ข
๋ฃ ์ฝ๋๋ ์๋ณธ 1, ์์ฑ ํ๋ณด 0์ผ๋ก ๊ด์ธก๋์ต๋๋ค.
์ด๋ ๋ค ์ฌ๋ก์์ ํ์ธํ ์ค๋ฅ ์ฒ๋ฆฌ ๋ณํ์ ๋๋ค. ์ธ์ด ์ ์ฒด ์์ฑ๋ฅ , ์์์ Go ์ฝ๋์ ๋ํ ์์ ์ฑ, ์๋ ํฅ์์ด๋ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์๋ฅผ ๋ปํ์ง ์์ต๋๋ค. ์๊ฐยท๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ์ ๋ณ๋์ ๋น๊ต ๊ฐ๋ฅํ ๊ด์ธก ์์ด ํ์ํฉ๋๋ค.
์ ํํ ์ ๋ ฅ๊ณผ CI ๊ทผ๊ฑฐ๋ฅผ ๋ ๊น๊ฒ ์ถ์ ํ๊ธฐ
- ๊ฒ์ฌ๋ PR head:
1147138e038ef56862af488a5a932152cef53620. - ์์ฑ ํ๋ก๊ทธ๋จ:
sha256:f3ac58d6b47a055aa19fddc6ad848134446003b870d3cbfe59036e5217039b1e. - ์๋ฏธ IR:
sha256:37f2dd73d819730bca2665d413dc60b595544d561f1f88d50b29007def16e2ee. - ์๋ณธ:
sha256:5bd27e33e18e8c5dc87f25c0cd4004ee370cfa7dc441c85d89bb03fd333a8937. - ์์ฑ ํ๋ณด:
sha256:e65ab82fed6b572ae14098255273fa43df4e34551c5275e44655e60aaa5ddf9d. - ํ์ฑ ํ
์คํธ ์๋ณธ ์งํฉ:
sha256:6f948a474af349fee2a4655b2ee3ad9b1c44854e6bc9bc98513997190ee113ba. -
์์ฑยท์คํ artifact 10336683386์
test.json์์gooo guard witness์TestGoErrorGuardGeneratedCandidateUsesFrozenNativeOracle๋ฅผ ์ฐพ์ต๋๋ค. - ์ ์ ๋ณํฉ๊ณผ ์ต์ข CI ํ์ ๊ธฐ๋ก์ ๊ธฐ๋ฅ ์ฌ๋ก์ ๊ฒฐ๊ณผ์ ์ ์ฒด ๊ฐ๋ฐ ๋ธ๋์น ์์ฉ์ ๋ถ๋ฆฌํด์ ๋จ๊น๋๋ค.
์ด ์คํ์ ํ์ฑ CLI ํ ์คํธ ์๋ณธ 112๊ฐ์ ์ด๋ฆ์ด ์ง์ ๋ ๋ฐํ์ Gooo ์ ๋ ฅ 2๊ฐ๋ฅผ ํฌํจํฉ๋๋ค. ๊ทธ ์๋ณ๊ฐ์ด ์ ์ฒด ์์กด์ฑยท์ด์ ํ๊ฒฝ์ ๋ชจ๋ ํฌ๊ดํ๋ค๊ณ ์ฃผ์ฅํ์ง ์์ต๋๋ค. GitHub artifact์ ๋ณด์กด ๊ธฐ๊ฐ์ ์ ํํ๋ฏ๋ก ๋งํฌ๋ฅผ ์๊ตฌ์ ์ธ ๋ฐฐํฌ๋ฌผ๋ก ์ทจ๊ธํ์ง ์์ต๋๋ค.
| ๊ฒฐ๊ณผ | ์๋ฏธ | ๋ค์์ ํ ์ผ |
|---|---|---|
PROPOSED + ์ฑํ UNKNOWN
|
ํ๋ณด๋ ์์ผ๋ ๋ณ๋ ๊ฒ์ฆ ๊ทผ๊ฑฐ๊ฐ ์์ | ๊ณ ์ ํ ๊ธฐ๋๊ฐ์ผ๋ก ํ๋ณด๋ฅผ ๊ฒ์ฆ |
UNKNOWN |
ํจ์๊ฐ ์๊ฑฐ๋, ์ ํ์ด ๋ชจํธํ๊ฑฐ๋, ์ง์ํ์ง ์๋ ํํ | ๊ธฐ๋ก๋ ์์ธ๊ณผ ๋ค์ ์ฐ์ฐ์ ์ฝ๊ธฐ |
REFUTED |
์๋ณธยท์ฒ๋ฆฌ ๋ธ๋ก์ ์๋ณ๊ฐ ๋ฑ์ด ์ ์ธ๊ณผ ๋ชจ์๋จ | ์๋ชป ์ฐ๊ฒฐ๋ ์ ๋ ฅ์ ์กฐ์ฌํ๊ณ ์ ์๋๋ฅผ ๋ณ๋๋ก ๊ธฐ๋ก |
UNKNOWN์๋ stage, step, reason, unknown_class, next_operation, blocked_by๊ฐ ์์ต๋๋ค. ์ด๋ฆ์ ๋ณด๊ณ ์์ธ์ ์ถ์ธกํ๊ธฐ๋ณด๋ค ์ด๋ ๋จ๊ณ์์ ๋ฌด์์ด ์์ด ๋ฉ์ท๋์ง ์ฝ์ต๋๋ค. ์ด ํ๋กํ์์ ์๋ณธ pin ๋ถ์ผ์น๋ ๋จ์ํ ์ฆ๊ฑฐ ๋๋ฝ์ด ์๋๋ผ REFUTED์
๋๋ค.
๋ค๋ฅธ ์์ ์ ๋ต์ ์๋ํ ์๋ ์์ง๋ง, ์ฑ๊ณต์ํค๋ ค๊ณ ๊ฒ์ฆ ๊ธฐ์ค์ ๋ฎ์ถ๊ฑฐ๋ ๊ธฐ์กด ์คํจ ๊ธฐ๋ก์ ์ง์ฐ์ง๋ ์์ต๋๋ค. ์ค๋ฅ ์ฝ๊ธฐ์ ๊ณ ์ ๋ ๋ชฉํ๋ก ์ ํํ๊ธฐ๋ฅผ ํจ๊ป ์ฐธ๊ณ ํ์ธ์.
v1์ ์์ ํจ์์ด๋ฉฐ ์ ๋ค๋ฆญ์ด ์๋๊ณ , ๊ฒฐ๊ณผ๊ฐ int ํ๋์ธ ํํ๋ฅผ ๋ค๋ฃน๋๋ค. ๊ฒฐ๊ณผยท์ง๋จ ์ถ๋ ฅ์ ์๋ก ๋ค๋ฅธ io.Writer ๋งค๊ฐ๋ณ์์ฌ์ผ ํฉ๋๋ค. ์ธ์ ํ ๋ถ๊ธฐ์์ ์ด๋ฏธ ์กด์ฌํ๋ ์ฐ๊ธฐ ์ค๋ฅ ๊ฒ์ฌ, ์ง๋จ ์ถ๋ ฅ, ๋ฐํ์ ์ฐพ๊ณ , ์ ํ๋ ํ์ ๋ถ๊ธฐ์ ๋ฒ๋ ค์ง fmt.Fprintf ๊ฒฐ๊ณผ์ ์ฐ๊ฒฐํฉ๋๋ค.
์์์ ์ธํฐํ์ด์ค, closure, ๋ณต์กํ ์ ์ด ํ๋ฆ์ ์์์ ํด์ํ๋ ๋ฒ์ฉ ์์ ๊ธฐ๋ ์๋๋๋ค. ์ง์ํ์ง ์๋ ๋ชจ์์ ํ๋ณด๋ฅผ ์ต์ง๋ก ๋ง๋ค์ด ํต๊ณผ์ํค์ง ์์ต๋๋ค.
๋ฐํ๋ง ํ๋ ์ค๋ฅ ์ฒ๋ฆฌ์ ๋ก์ปฌ writer ์ธํฐํ์ด์ค๋ฅผ ๋ค๋ฃจ๋ v2๋ ์ปดํ์ผ๋ฌ PR #854์ ๊ฐ๋ฐ ๋ธ๋์น ๋ณํฉ๋ณธ 1c0d251...์ ํฌํจ๋ฉ๋๋ค. Gooo ์์ ํ๋ก๊ทธ๋จ ์์ฑํ๊ธฐ์์ ๊ทธ ๋ณํฉ ๋ฒ์ ์ ๋ง๋ ์ ์ธ๊ณผ ์
๋ ฅ, ์ง์ ๊ฒฝ๊ณ, ์ค์ ๋ค์ฏ ์ฌ๋ก์ ์คํ ๊ทผ๊ฑฐ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ์ค์ ๊ณต๊ฐ CLI์ ์์ฑ ์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒฝ๋ก๋ PR #853์์ ๋ณ๋๋ก ์ถ์ ํฉ๋๋ค. ์ด ๋ฌธ์์ v1 ์
๋ ฅ๊ณผ v2์ ์๋ณธยทํ๋ก๊ทธ๋จ ์๋ณ๊ฐ์ ์๋ก ๋ฐ๊พธ์ด ์ฌ์ฉํ์ง ๋ง์ธ์.
์ค์ ์คํจ ๊ด์ธก
-> Gooo๋ก ๋์๊ณผ ์์ ์กฐ๊ฑด ์ ์ธ
-> ์๋ณธ๊ณผ ์๋ฏธ IR์ ์ฐ๊ฒฐ๋ ์ฝ๋ ํ๋ณด ์์ฑ
-> ๊ณ ์ ๋ ๊ธฐ๋๊ฐ์ผ๋ก ๋ณ๋ ์คํ ๊ฒ์ฆ
-> ์ ํด์ง ๊ถํ ์์์ ์ฑํ ๋๋ ๊ธฐ๊ฐ
-> ๋ค์ ์คํ์ด ์ฑํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ค์ ์ฌ์ฉ
์ด๊ธฐ์ ์ค์ ์ค๋ฅ ์์ #849๋ ์ด์์คํดํธ๊ฐ ์์ฑํ Go ์ฝ๋์์ต๋๋ค. ๋ค์ ์ถ๊ฐํ ์์ฑ ๊ธฐ๋ฅ์ผ๋ก ๊ทธ ๊ณผ๊ฑฐ ์์ ๊น์ง ์ธ์ด๊ฐ ์์จ์ ์ผ๋ก ์ํํ๋ค๊ณ ๋ค์ ์ด๋ฆ ๋ถ์ด์ง ์์ต๋๋ค.
์ดํ์๋ ์์ฑ๋ ์ฝ๋๊ฐ ์ค์ ๊ตฌํ์ ๋ค์ด๊ฐ๊ณ , CI์ ๋ค์ ์คํ์ด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ๋ก๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ์์ ์์ฑ๋ฌผ ๋ค์ ํ์ ์ ๋ฆฌ๊ฐ ํ์ํ๋ค๋ฉด ์์ ํ๋ณด, formatter ์ ๋ ฅยท์ถ๋ ฅ, ์ต์ข ํ๋ณด์ ์๋ณ๊ฐ์ ๋ฐ๋ก ๋จ๊น๋๋ค. ์๋ฅผ ๋ค์ด #853์ Gooo ์์ฑ ๊ตฌ๊ฐ์ ์ ์ฉ๊ณผ CI๊ฐ ์ ๊ณตํ ํ์ ๋ณด์ ์ ๊ตฌ๋ถํด์ ๊ธฐ๋กํฉ๋๋ค.
์ธ์ด๊ฐ ํ๋ณด๋ฅผ ๋ง๋ค์๋ค๋ ์ฌ์ค์ ์ค์ค๋ก ๋ณํฉํ๊ฑฐ๋ ํ๊ฐ ๊ธฐ์ค์ ๋ฐ๊ฟ ๊ถํ์ด ์๋๋๋ค. ํ๋ณด ์์ฑ, ์คํ ์ฆ๊ฑฐ, ์ฑํ, ๋ฐฐํฌ, ๋ค์ ์ฌ์ฉ์ ๊ฐ๊ฐ ๋ณ๋์ ์ฌ๊ฑด์ ๋๋ค. ๊ฐ๋ฐ ๊ณผ์ ๋ ์ด provenance์ ์ผ๋ถ์ ๋๋ค.
ํ ์คํธยท์คํ ๋น์ฉยท์ฌ์ฌ์ฉ ยท Provenance์ ๊ฒฐ์ ยท ๊ฑฐ๋ฒ๋์ค์ ๊ธฐ์ฌ