Getting Started History through 2026 10 09 - kimjooyoon/meta-ontology-go GitHub Wiki
์์ํ๊ธฐ
์ ๋ฐ์ดํธ: 2026-10-09. ์์ Gooo ๋๊ตฌ๋ฅผ ์กฐ๋ฆฝํ๊ณ , ์ ์ฅํ ํ๋ก๊ทธ๋จ์ ์ ์ ๋ ฅ์ ๋ฃ์ด ๋ด ๋๋ค.
์ง๊ธ ์์ํ๊ธฐ: Go 1.27.2
0.6.21 ๊ฐ๋ฐํ์
Linux amd64, macOS amd64ยทarm64, Windows amd64 ์คํ ํ์ผ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ์ ธ์จ ํจ์๊น์ง ํจ๊ป ์กฐ๋ฆฝํ๋ package construct์ ์ ์ฅ ์ฌ์คํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
--inputs๋ก ์ ๋ต ์๋ ์ค์ ์
๋ ฅ์ ์ฃผ๊ณ , ๋์จ ๊ฐ์ ์ ์ฅํด ๋ค์ ์
๋ ฅ์ด๋ ํ์ ํ๊ฐ์ ์ฌ์ฌ์ฉํฉ๋๋ค.
๋น๋์ ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ๋ค์ดํฐ๋ธ ์คํ์๋ Go 1.27.2๊ฐ ํ์ํฉ๋๋ค.
๊ณต๊ฐ macOS ARM64 ํ์ผ์ ์ค์นํด ์์ฒด ๋ชจ๋ธ ์ฌ์ฉยท๋ฏธ์ฌ์ฉยท์ ์ฅ ์ฌ์คํ์ ํ์ธํ์ต๋๋ค.
๊ฐ์ ๋ฐฐํฌ ์์ค๋ฅผ ์ง์ ๋น๋ํ ๋๋ ์ ํด๋์์ ๋ค์์ฒ๋ผ ๊ณ ์ ํฉ๋๋ค.
git init gooo-compiler
git -C gooo-compiler remote add origin https://github.com/kimjooyoon/meta-ontology-go.git
git -C gooo-compiler fetch --depth 1 origin d4d0966f3c463d64119d9b6a6c689da4af2cef4f
git -C gooo-compiler switch --detach FETCH_HEAD
GOTOOLCHAIN=go1.27.2 go -C gooo-compiler build -trimpath -o gooo ./cmd/gooo
./gooo-compiler/gooo version --build --json
์ถ๋ ฅ์ go_version๊ณผ native_go_required๋ go1.27.2, version์ 0.6.21-dev,
vcs_revision์ ์ ์์ค์ ๊ฐ์์ผ ํฉ๋๋ค. 0.6.21 ์คํ ์๋ด์
์์ดยทํ๊ธ ํ์
์ด๋ฆ๊ณผ ๊ฐ์ ID, ๋ณ์ยท์กฐ๊ฑด๋ฌธยท์์ฒด ๋ชจ๋ธ ์กฐ๋ฆฝยท์ค์ ์
๋ ฅยท์ ์ฅ ์ฌ์์ ์คํํ ์ ์์ต๋๋ค.
์กฐ๋ฆฝ ์ ๋ชจ๋ธ ๊ท๊ฒฉ์ ํ์ธํ๋ body-context --model์ PR1423์
๋ณํฉํ dev e5be98712f6b435917b297447200ef50e7adb493์ ์์ต๋๋ค. ๊ฐ์ ๋ฐฉ์์ผ๋ก
๊ทธ ์์ค๋ฅผ ๋น๋ํ๋ฉด ํ ๋ช
๋ น ์กฐ๋ฆฝ ์์ ๋ฅผ
์คํํ ์ ์์ต๋๋ค. ๊ณต๊ฐ ํ๊ทธ ์์ค์ ๊ฐ๋ฐ ์์ค๋ version --build --json์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
์ด์ ๊ณต๊ฐ ์คํ ํ์ผ: 0.6.16
0.6.16 ๊ฐ๋ฐํ์
Linux amd64, macOS amd64ยทarm64, Windows amd64 ์คํ ํ์ผ์ ์ ๊ณตํฉ๋๋ค.
gooo init --template diagnostic, ์ ์ฅํ ์กฐ๋ฆฝ ์ด์ด๊ฐ๊ธฐ, ํธ์ถ ๊ฒฐ๊ณผ์ ๋ฐ๋ฅธ
๊ณ์ฐ์ยท๋ ์ฝ๋ ์กฐ๋ฆฝ, ์กฐ๊ฑด์ยท๋์
์ ๋น์นธ ๋ฌถ์๊ณผ ์ค์ ํธ์ถ์ ๊ณ์ฐ ์คํจ ํ ์ด์ด๊ฐ๊ธฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์์ฑํ ํ๋ก๊ทธ๋จ์ ์ค์ ์คํ์๋ Go 1.27.1์ด ํ์ํฉ๋๋ค.
์ง๋จ ๋๊ตฌ ๋ฐ๋ผ ํ๊ธฐ์์ ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ,
๊ธฐ๋ ์ถ๋ ฅ์ ํ์ธํ ๋ค ์ ์ฅํ ํ๋ก๊ทธ๋จ์ ์ ์
๋ ฅ์ ์ฌ์ฌ์ฉํฉ๋๋ค.
Gooo ์ ์ธยท์คํ ๊ธฐ๋กยท์์ ์์ฒด ๋ชจ๋ธ์ ์ญํ ์ ๊ฐ์ ์์ ๋ก ์ดํด๋ด
๋๋ค.
ํ์ฌ ๋ฐฐํฌ์ ์ค์น ๊ด์ธก์์ ๋ฒ์ ๋ณ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
์ฌ๋ฌ ๋น์นธ์ ํจ๊ป ์กฐ๋ฆฝํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํ๋ ค๋ฉด 0.6.16 ์คํ ์๋ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ํ๊ณ ๋๊ตฌ์ ์คํ ์๋ด๋ ์คํ ํ์ผ์ ์ง์ ํด Gooo ํผ๋๋ฐฑ ๊ท์น๊ณผ ์์ฒด ๋ชจ๋ธ๋ก ์กฐ๋ฆฝ์ ๋ฐ๋ณตํ๋ ๋ช ๋ น์ ์ ๊ณตํฉ๋๋ค. ์๋ ๊ณผ๊ฑฐ ์์ ๋ค์ ๋น์ ๊ณ ์ ์์ค์ ๊ด์ธก์ ์ ์งํฉ๋๋ค.
0.6.10 ๋ฐฐํฌ ํ๋ณด๋ก ์ ์ง๋จ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ๊ณ ์ ์์ยท์์ฒด ๊ทธ๋ํ ๋ชจ๋ธ์ ์ง์ ์ฐ๊ฒฐํ์ต๋๋ค. ๋ ๊ฒฝ๋ก ๋ชจ๋ ๋ค ์ ๋ ฅ์ ํ๋ ์ถ๋ ฅ 8/8์ ๋งํ๊ณ , ์กฐ๋ฆฝ ์๋ฃ๊น์ง ๊ฐ๊ฐ ํ๋ณด ๋ค ๊ฐ๋ฅผ ํ์ธํ์ต๋๋ค. ์ ์ฅํ ํ๋ก๊ทธ๋จ์ ์ ์ ๋ ฅ ์ธ ๊ฑด์ ๋ฃ์ ๋ ์ ์ถ๋ก ์ 0ํ์์ต๋๋ค. ํ๋ณด ์คํ ํ์ผ๊ณผ ์์ฑ ํ๋ก์ ํธยท์๋ณธ ๊ฒฐ๊ณผ. ์ด ์ง๋จ ๊ด์ธก์ ๋ก์ปฌ ํ๋ณด๋ก ์ํํ์ต๋๋ค. ์ดํ 0.6.10 ๊ณต๊ฐยท์ค์น๋ฅผ ์๋ฃํ๊ณ , ๊ณต๊ฐ ์คํ ํ์ผ๋ก ์์ค ์์ ๋๊ตฌ๋ฅผ ํ์ธํ ๊ธฐ๋ก์ ์ ํ์ฌ ์ํ์์ ์ฝ์ ์ ์์ต๋๋ค.
๊ณต๊ฐ ์คํ ํ์ผ์ ๊ด์ธก์์๋ ์์ ํ ์ถ๋ ฅ๊ณผ ์ผ๋ถ๋ง ๋งํ ๊ฒฐ๊ณผ๋ฅผ ํจ๊ป ์ฝ์ต๋๋ค. ๋ฐ์ ๋ฐฉํฅ์ ์ด ๋๊ตฌ์์ ๋๋ฌ๋ ์ธ์ด์ ๋ถ์กฑ์ ๋ค์ ๊ตฌํ์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
์๋ ๋ณธ๋ฌธ ์์ ์ ๊ณ ์ ์์ค
์ซ์ยท๋ ผ๋ฆฌยท๋ฌธ์์ด ํจ์๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๊ณ ์งง์ ๋ช ๋ น์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด ์์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ํ ์ ์์ต๋๋ค. ํ์ค ํจ์ยท์ง๋จยท์ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ๋ถํฐ ์์ํ๋ ค๋ฉด Gooo ์ํ๊ณ ๋๊ตฌ์ ์ธ ๋ช ๋ น์ ๋ฐ๋ผํด ๋ณผ ์ ์์ต๋๋ค.
์ดํ ๋ณธ๋ฌธ ์์ ๋ 10์ 5์ผ์ main f144dddb๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. ํด๋น go.mod๋ Go 1.27.1ยทSDK v0.2.24๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ๋ณ ์์ ์ ๋งํฌ์ ๊ด์ธก์ ๊ฐ ์์ค ์์ ์ ์ ์งํฉ๋๋ค. ํ์ฌ ์ํ์์ ์ ๋ฐฐํฌ ๊ทผ๊ฑฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ ํด๋์ ์์ ์ฉ ์์ค๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ:
git clone --depth 1 https://github.com/kimjooyoon/meta-ontology-go.git
cd meta-ontology-go
git fetch --depth 1 origin f144dddb8261b9b525181dee510afc65f1603153
git switch --detach FETCH_HEAD
์ด๋ฏธ ์์ ์ค์ธ ์ ์ฅ์๊ฐ ์๋ค๋ฉด ์์ ์ ๋ณ๊ฒฝ์ ๋ณด์กดํ๊ณ ์ฌ์ฉํ ๋ฆฌ๋น์ ์ ํ์ธํฉ๋๋ค.
ํ ํ์ผ์ ์กฐ๋ฆฝ ๊ท์น์ ๋๊ณ ์์ฑยท์คํํ๊ธฐ
์์ค์ assembling ์ ์ธ์ด ์กฐ๋ฆฝ ๊ท์น๊ณผ ์ ํ ์์๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ค์ ์คํ์์
ํ์ธํ ๊ธฐ๋๊ฐ์ ๋ฐ๋ก ์ฃผ๊ณ , ์ปดํ์ผ๋ฌ๋ฅผ ๋น๋ํด ํ ๋ช
๋ น์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
์ ๊ณ ์ ์์ค์ ๋ฃจํธ์์ ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค.
gooo_go_bin="$(GOTOOLCHAIN=go1.27.1 go env GOROOT)/bin/go"
"$gooo_go_bin" version
GOWORK=off "$gooo_go_bin" build -trimpath -o gooo ./cmd/gooo
./gooo body-path-run \
--source examples/body-codegen/source-assembly.gooo.fixture \
--activity Clamp \
--cases examples/body-codegen/source-assembly-clamp-cases.json \
--repeat 2 --timing --out clamp-results
./gooo body-path-run --verify-timing --out clamp-results
clamp-results๋ ์ ์ถ๋ ฅ ํด๋ ์ด๋ฆ์
๋๋ค. ์ด๋ฏธ ์๋ ๊ฒฝ๋ก๋ ๊ฑฐ๋ถํฉ๋๋ค.
์์ฑ๋ ์ฝ๋๋ run-N-generated.go, ํ์ฌ ๊ธฐ๋๊ฐ์ ์ถฉ์กฑ ์์ ๋ถ๋ชจ๋
summary.json์์ ํ์ธํฉ๋๋ค. ์ด ์์ ์ ๋ณ๋ ์คํ ๊ธฐ๋๊ฐ์ int64 ๊ฒฝ๊ณ๋ฅผ ํฌํจํ
์ผ๊ณฑ ๊ฐ์
๋๋ค. ์ ์ธ ๋ฌธ๋ฒ๊ณผ ๊ด์ธก
ยท ๋ชจ๋ธ ์ฐ๊ฒฐยทํ์ ์ง์ยท์ถ๋ ฅ ์ฝ๊ธฐ.
๋น๋ํ ๋ Go1.27.1์ ์ ํํด๋ PATH์ ๊ธฐ๋ณธ go๊ฐ ๋ฐ๋์ง๋ ์์ต๋๋ค.
๊ธฐ๋ณธ ์คํ์ ์ด๋ฏธ ์ค์น๋ ์ ํํ Go1.27.1์ ์ฐพ์ต๋๋ค. --go-bin์ผ๋ก ์ํ๋ ๋๊ตฌ๋ฅผ
์ง์ ํ ์๋ ์์ต๋๋ค. ์์ค ์ฐ๊ฒฐ ๊ธฐ๋ก์ ๋จ๊ธฐ๋ ค๋ฉด
๋ณ๊ฒฝ์ด ์๋ Git ์ฒดํฌ์์์์ ๋น๋ํฉ๋๋ค. go install ...@revision์ผ๋ก ๋ฐ์
์คํ๊ธฐ๋ ๋ชจ๋ ๋ฒ์ ์ ๋ณด๊ดํ์ง๋ง, ์ด๋ฒ ๊ด์ธก์์๋ Git ๋ฆฌ๋น์ ์ด ๋ด์ฅ๋์ง ์์
๊ฒฐ๊ณผ์ ์์ค ํญ๋ชฉ์ด UNBOUND_LOCAL_SOURCE์์ต๋๋ค.
๋ ์ค์น ๋ฐฉ์ยท์๋ ๋๊ตฌ ์ค๋ฅยท์ค์ ๊ฒฐ๊ณผ.
์ฌ๋ฌ ๋ณธ๋ฌธ์ ์ฐ๊ฒฐํด ์คํํ๊ธฐ
์์์ ๋น๋ํ ์ปดํ์ผ๋ฌ๋ก ์ ์ยท์ฐธ๊ฑฐ์งยทํ ์คํธ ์ผ๊ณฑ ํ๋์ ํ ๋ฒ์ ์กฐ๋ฆฝํฉ๋๋ค.
./gooo body-compose \
--source examples/body-codegen/native-composition.gooo.fixture \
--cases examples/body-codegen/native-composition-cases.json \
--out composition-results
์ ํด๋์ ์๋ณธยท์ ํ๋ Goooยท์์ฑ ํจ์ยท์ฐ๊ฒฐ ์ฝ๋ยท์ค์ ์คํ ๊ธฐ๋ก์ ์ ์ฅํฉ๋๋ค.
๊ธฐ๋ณธ ๊ฒฝ๋ก๋ ๊ฒฐ์ ๋ก ์ ์
๋๋ค. ๋ชจ๋ธ ํ์ผ์ ์ค๋นํ๋ค๋ฉด --model path/to/model.json์
์ถ๊ฐํฉ๋๋ค. ์ ์ฅ ๊ธฐ๋ก์ ์ฌ์คํ๊ณผ ๊ธฐ๋๊ฐ ๋ถ๋ชจ๋
์ค์ ๋ณธ๋ฌธ ์ฐ๊ฒฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฆ
๋๋ค.
์ฌ๋ฌ ์ ๋ ฅ์ ํฉ๋ฅ์ํค๊ธฐ
๊ฐ์ Integer ํ์ ์ ๋ ์์น๋ฅผ ๊ตฌ๋ถํ๊ณ , ์ ๋ ฅ ์ผ๋ถ๋ง ์ฐ๊ฒฐํ๋ ์์ ์ ๋๋ค.
./gooo body-compose \
--source examples/body-codegen/native-input-joins.gooo.fixture \
--cases examples/body-codegen/native-input-joins-cases.json \
--out input-joins-results
์ฌ๋ฌ ์
๋ ฅ์ input0, input1์ฒ๋ผ ์ ์ธ ์์๋๋ก ์ฝ์ต๋๋ค. ์ธ๋ถ์์ ์ ๊ณตํ๋
์์น์ ์ฌ๋ก ํค๋ Label.input1๊ณผ ๊ฐ์ต๋๋ค. ์
๋ ฅ ํ๋๋ ๊ธฐ์กด input๊ณผ
ํ๋ ์ด๋ฆ์ ์ฌ๋ก ํค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋ธ ์ฐ๊ฒฐ, ์ ์ฅ ๊ธฐ๋ก๊ณผ ์ค์ ๊ฐ ์ฝ๊ธฐ๋
์ฌ๋ฌ ์
๋ ฅ์ ํฉ๋ฅ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฆ
๋๋ค.
๊ธฐ๋ก์ ๋ง๋ค๊ณ ๋ค์ ๋ณธ๋ฌธ์ ์ ๋ฌํ๊ธฐ
์ ๋ชฉยท์ํ๋ฅผ ๋ด์ ๊ธฐ๋ก์ ๋ง๋ค๊ณ , ๋ค์ ํ๋์์ ํ๋๋ฅผ ์ฝ๋ ์ฌ์ฏ ํ๋ ์์ ์ ๋๋ค.
./gooo body-compose \
--source examples/body-codegen/native-records.gooo.fixture \
--cases examples/body-codegen/native-records-cases.json \
--out record-results
๊ธฐ๋ก ์์ฑ์, ํ๋ ์ฝ๊ธฐ, ์ง์ญ๊ฐ ์ ์ฒด ๊ต์ฒด์ ๊ธฐ๋ก ๋น๊ต๋ฅผ ๋ค๋ฃน๋๋ค. ์ ๊ณตํ ์ฌ์ฏ ์ฌ๋ก์ ์ด๋ฆ ์๋ ์ถ๋ ฅ ๊ธฐ๋๊ฐ์ 36๊ฐ์ ๋๋ค. ์ค์ ํ๋๊ฐ๊ณผ ๋ฏธ์ถฉ์กฑ ๋ถ๋ถ์ ์์ฝ์ ๊ธฐ๋ก ์ ๋ฌ ๊ฐ์ด๋์์ ์ฝ์ต๋๋ค.
์์ ์์ฒด ๋ชจ๋ธ๋ก ์ค์ ํ๋๋ฅผ ์กฐ๋ฆฝํ๊ธฐ
์ ๋ชฉยท์ํยท์ฌ์ ์ ํ๋ณด์์2,072๊ฐ ๋งค๊ฐ๋ณ์์ ๊ณต์ ๋ชจ๋ธ์ด ํ ๋ฒ ํ๋จํฉ๋๋ค. ์์์ ๋น๋ํ ์ปดํ์ผ๋ฌ์ ๊ณต๊ฐ ๋ค ํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
hf download asketeddy/gooo-record-shared-field-tiny-v1 \
models/qat_ternary/model.json models/qat_ternary/weights.bin \
demo.gooo.fixture demo-cases.json \
--revision 87f8c482d23dc0eaa41f5575f652e7ca61f44280 \
--local-dir ./gooo-field-model
./gooo body-compose --source ./gooo-field-model/demo.gooo.fixture \
--cases ./gooo-field-model/demo-cases.json \
--model ./gooo-field-model/models/qat_ternary/model.json \
--out field-results > field-result.json
์์ ์ ์์ฐ์8์ด๋ฉฐ, ์ค์ ๊ด์ธก์ ์ ํ15/15ํ๋ยท์ ์
๋ ฅ8/8์ถ๋ ฅยท12/12ํ๋์
๋๋ค.
--model์ ๋นผ๋ฉด ๊ฒฐ์ ๋ก ์ ์ผ๋ก ์กฐ๋ฆฝํฉ๋๋ค. ์ ํ ์์์ ๋ฐํ์ ์
๋ ฅ์ ๋ถ๋ชจ๋ฅผ
๋ฐ๋ก ์ฝ์ต๋๋ค. ์ฐ๊ตฌ ๋ ํฌ์record-completeness ๋๊ตฌ๋ ์งง์ ์ถฉ์กฑ๋ฅ ๊ณผ ๋จ์
ํ๋ ์ด๋ฆยท์ค์ ๊ฐยท๊ธฐ๋๊ฐ์ ๋ณด์ฌ์ค๋๋ค. ๋ชจ๋ธ ์ฝ๊ธฐ์--text๋ ํ๋ณด์๋ณ ํ๋ฅ ์
ํ์ํ๋ฉฐ ์ด ๊ฐ๊ณผ ๊ธฐ๋ฅ์ ์์ ์ฑ์ ๊ตฌ๋ถํฉ๋๋ค.
๋ค ํ์ผ๋ถํฐ ๊ฒฐ๊ณผ ์ฝ๊ธฐ๊น์ง
ยท ๊ณต์ ํ๋จ์ ์ฑ๊ณผยทํดํ.
1. ์ ์ธ์ ๊ฒ์ฌํ๊ธฐ
๊ฒฐ์ ์์ ๋ ์ฃผ๋ฌธ๊ณผ ๊ฒฐ์ ์๋จ์ ๋ฐ์ ๊ฒฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋๋ ์์ ์ ์ ์ธํฉ๋๋ค.
go run ./cmd/gooo check examples/billing/main.gooo
์ฑ๊ณตํ๋ฉด ์ ์ธ์ ์ด๋ฆยท์ฐธ์กฐยท์๋ฏธ ๊ด๊ณ๋ฅผ ๊ฒ์ฌํ๋ค๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค. ์ฌ๊ธฐ์ ์ฝ์ ๊ด๊ณ๋ PayOrder used Order, PayOrder used PaymentMethod, Payment wasGeneratedBy PayOrder์
๋๋ค. ์ค์ ๊ฒฐ์ ํธ์ถ์ ๊ตฌํ๊ณผ ์คํ ๋จ๊ณ์์ ๋ค๋ฃน๋๋ค.
2. Go ๊ตฌ์กฐ ์์ฑํ๊ธฐ
out="$(mktemp -d)"
go run ./cmd/gooo generate examples/conformance/main.gooo --out "$out"
์ด ์์ ๋ ์์ ์ถ๋ ฅ ํด๋์ semantic.gooo.go๋ฅผ ์์ฑํฉ๋๋ค. Gooo ์ ์ธ์ด ๊ตฌ์กฐ๋ฅผ ์์ ํ๋ฉฐ, ๋ณ๋์ ๊ตฌํ ๋ก์ง์ ์์ฑ ๊ณ์ฝ์ด ์ ํ ์ฌ๋กฏ์ ๋ค์ด๊ฐ๋๋ค. ์์ฑ ๊ตฌ์กฐ์ ์ฌ๋กฏ ์๋ด.
3. ์กฐ๊ฑด๊ณผ ํ ๋น์ด ์๋ ๋ฐ๋ ์์ฑํ๊ธฐ
์ ์ฅ์์ ์๋ ClampBelowZero ์๋ณธ์ ์ง์ญ ๋ณ์, ๋์ ๊ณผ ์กฐ๊ฑด ๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
go run ./cmd/gooo body-codegen --activity ClampBelowZero \
examples/body-codegen/main.gooo.fixture
ํ์ ๊ณผ ์ง์ ๋ฌธ๋ฒ์ ํ์ธํ ๋ค Go ํจ์๊ฐ ํ์ค ์ถ๋ ฅ์ผ๋ก ๋์ต๋๋ค. ์๋ณธ ํ์ผ์ ๊ฒฐ๊ณผ๋ฅผ ์ฐ๋ ์์ ์ ํธ์ถ์๊ฐ ๋ณ๋๋ก ์ ํํฉ๋๋ค.
์กฐ๊ฑดยท๋์ ์ ์ฌ๋ฌ ์ค๋ก ์ง์ ์์ฑํ ์์ ๋ ๋ฐ๋ก ์์ฑํ ์ ์์ต๋๋ค.
go run ./cmd/gooo body-codegen --activity ClampBelowZero \
examples/body-codegen/raw-computes.gooo.fixture
์ ์ฒด ์์ค์ ๋ฌธ์์ด ๊ท์น์ ์ฐธ๊ณ ํ์ธ์. ์ค์น๋ณธ์์ ์ด ๋ฐ๋๋ฅผ ๋ณ๋๋ก ์ปดํ์ผยท์คํํด int64 ๊ฒฝ๊ณ๊ฐ์ ํฌํจํ 8/8 ๊ธฐ๋๊ฐ์ ํ์ธํ์ต๋๋ค.
๋ชจ๋ธ ์์ด ํ์ฉ๋ ์กฐ๋ฆฝ ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ ์์ ๋ ์์ต๋๋ค.
go run ./cmd/gooo body-codegen --json \
--path-plan examples/body-codegen/typed-path-compound-plan.json \
--activity Combined examples/body-codegen/typed-path-compound.gooo.fixture
์ด ๊ฒฝ๋ก๋ ๊ณํ์ ์ ์ธ๋ ํ๋ณด์ ์ ํ ์์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ช
์์ ์ผ๋ก --path-model์ ์ถ๊ฐํ๋ฉด ํธํ๋๋ ๋ก์ปฌ ๋ชจ๋ธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๊ฐ์ค์น ๋ค์ด๋ก๋์ ํ์ผ ์ ํ์ ๋ชจ๋ธ ์ฌ์ฉ ์๋ด๋ฅผ ๋ฐ๋ฆ
๋๋ค.
4. ๊ฒฐ๊ณผ์ ์คํ ๋ฒ์ ์ฝ๊ธฐ
go run ./cmd/gooo run --entry PayOrder --json examples/billing/main.gooo
์ด ๋จ์ผ ์์ค ์์ ์ DECLARATION_RESOLUTION_ONLY ๊ฒฐ๊ณผ๋ ์ ์ธ์ ์
๋ ฅยท์ถ๋ ฅ ์ ์ด๋ฅผ ํด์ํ ๊ธฐ๋ก์
๋๋ค. ์์ฑ๋ Go๋ฅผ ๋น๋ํ๊ณ ์คํํ ๊ด์ธก์ ๋ณ๋ ๊ฒฐ๊ณผ์ ๋จ์ต๋๋ค. ์คํ ๊ณ์ฝ.
๋ค์ ๋จ๊ณ
ํ๊ตญ์ด ์ง์๋ก ๋ ์ฐ์ฐ์ ์์๋ฅผ ์กฐ๋ฆฝํ๊ณ ์ค์ ์คํ๊น์ง ํด๋ณด๋ ค๋ฉด
์ ์ฒด ํ๋ณด ์์ ๋ฅผ
๋ฐ๋ผ ์คํํ ์ ์์ต๋๋ค. Gooo ์์ค, ์งง์ ๋ ์ํผ, ๊ธฐ๋๊ฐ๊ณผ ๊ณต๊ฐ 16 KiB ๋ชจ๋ธ์ด ํจ๊ป
๋ค์ด ์์ต๋๋ค. ์๋ณธ์ โ๋ํ ๋ค์ ๊ณฑํ๋คโ๋ฅผ โ๊ณฑํ ๋ค์ ๋ํ๋คโ๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์
๋๋ค.
--path-model์ ์๋ตํ๋ฉด ๊ฐ์ ํ๋ณด์ ์์์์ ๊ฒฐ์ ๋ก ์ ์ผ๋ก ์กฐ๋ฆฝํฉ๋๋ค.
๊ทธ ์์ ๋ ์ด์ Go ๋ช ๋ น ํ๋๋ก ์์ฑ๊ณผ ์ค์ ์คํ์ ์ด์ด์ ํ ์ ์์ต๋๋ค. ์ฐ๊ตฌ ์ ์ฅ์ ๋ฃจํธ์์ ์คํํฉ๋๋ค.
out_root="$(mktemp -d)"
go run ./cmd/order-example \
--model publication/order-judge-initial-20261003/model.json \
--out "$out_root/model"
--model์ ์๋ตํ๋ฉด ๊ฒฐ์ ๋ก ์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ถ๋ ฅ ํด๋์ ์
๋ ฅ, ์์ฑ๋ ์ฝ๋์
์ค์ ๊ธฐ๋๊ฐ ๋น๊ต๊ฐ ๋จ์ต๋๋ค. ์๋ต์ด ๋์ฐฉํ๋ฉด ๋ฐ๋ก ์คํํ๊ณ ๋ค์ ์์ฒญ์ ๋ณด๋ด๋ฉฐ,
์๋ต ์๊ฐ๊ณผ ์คํ ์๊ฐ์ ๋ฐ๋ก ํ์ํฉ๋๋ค. ๋ก์ปฌยทLinux ์คํ ์๋ณธ.
๋ฐ๋ณต ์กฐ๋ฆฝ์ ์ ๊ณ ์ main์ ํฌํจ๋ gooo body-path-stream์ผ๋ก ์คํํฉ๋๋ค.
๋ณ๋ ์์ปค ๋น๋ ์์ด JSON ํ ์ค์ ํ ์์ฒญ์ ๋ณด๋ด๊ณ ์ค๋น๋๋ ๊ฒฐ๊ณผ๋ถํฐ ๋ฐ์ต๋๋ค.
๊ณต๊ฐ ์ฐ๊ตฌ ์ ์ฅ์์ ๋ฃจํธ์์ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
gooo body-path-stream --workers 1 \
--model publication/order-judge-initial-20261003/model.json \
< examples/whole-candidate-order/worker-requests.jsonl \
> /tmp/gooo-order-stream-results.jsonl
์ฌ๊ธฐ์ gooo๋ ์ปดํ์ผ๋ฌ ์ ์ฅ์์์ go build -o gooo ./cmd/gooo๋ก ๋น๋ํ ์คํ ํ์ผ์
PATH์ ๋ ๊ฒ์
๋๋ค. --model์ ์๋ตํ๋ฉด ๊ฒฐ์ ๋ก ์ ์ผ๋ก ์กฐ๋ฆฝํฉ๋๋ค. ๊ฐ ์ค์ status์
correlation_id๋ฅผ ํ์ธํ๊ณ , ์ค์ ์์ฑ ์ฝ๋๋ response.source์์ ์ฝ์ต๋๋ค.
์์ ์ ๋ณด๋ ํ์ค ์ค๋ฅ์ ๋์ต๋๋ค. ๋ณ๋ ฌ ๊ฒฐ๊ณผ๋ ์ค๋น๋๋ ์์๋ก ๋์ฐฉํฉ๋๋ค.
๋ ์์ฒญ์ ์์ฑยท์คํ ์์
ยท main ๋ณํฉยท์ค์นยท32/32 ์คํ ๊ธฐ๋๊ฐ์ ์๋ณธ.
- ์์ ๋ชจ๋ธ๊ณผ ๋ฉํํ๋ก๊ทธ๋๋ฐ: ๋ชจ๋ธ์ด ํ๋จํ๋ ๋ด์ฉ๊ณผ ์คํจ ํผ๋๋ฐฑ.
- ์งํ์ ์ฆ๊ฑฐ: ํ์ ๊ฒ์ฌ, ์์ ์ถฉ์กฑ, ์์ฑยท์คํ, ๋ฏธํด๊ฒฐ ํญ๋ชฉ ์ฝ๊ธฐ.
- ๋ฌธ๋ฒ ์ค๋ฅ์ UNKNOWN: ์ค๋ฅ ์์น์ ์ฌ๊ฐํ ์์ ์ฐพ๊ธฐ.
- ์ธ์ด ๋๋ฌ๋ณด๊ธฐ: Entity, Activity, ์์ ์ ID์ ๊ด๊ณ.
๋ช ๋ น์ ๊ณ ์ ๋ ๊ตฌํ๊ณผ ์์ ๋ฅผ ๊ทผ๊ฑฐ๋ก ์ ๋ฆฌํ์ต๋๋ค. ์ํค ๊ฐฑ์ ์์ฒด์ ๊ด์ธก์ ๋ฌธ์ยท๋งํฌ ๋์กฐ์ด๋ฉฐ, ์ฝ๋ ์์ฑยท์คํ ์์น๋ ๋ณ๋์ ๊ณต๊ฐ ์คํ์ ์ฐ๊ฒฐํฉ๋๋ค.
์์ eb8477d5 ๊ฐฑ์ ์์๋ ํด๋น ๊นจ๋ํ ์ค์น๋ณธ์ผ๋ก ์ ์ธ ๊ฒ์ฌ, ๊ตฌ์กฐ ์์ฑ,
์กฐ๊ฑด ๋ฐ๋ ์์ฑ, ๋จ์ผ ์์ค ์คํ๊ณผ ์ ํ์ผ ์กฐ๋ฆฝยท์คํ์ ํ์ธํ์ต๋๋ค. ์ raw ๋ฐ๋์
1,024/1,024 ๊ธฐ๋๊ฐ๊ณผ ๋ณ๋ clamp 8/8, ์์ฑยท์คํ ๊ธฐ๋ก ๋น๊ต๋ ํ์ธํ์ต๋๋ค.
์์ ์คํธ๋ฆผ ๋ช
๋ น์ ์ค์น ๊ด์ธก์ ๊ฐ ์ ์ ๊ณต๊ฐ ๊ธฐ๋ก์ ์ฐ๊ฒฐํ์ต๋๋ค.
์์ฑ๊ณผ ์ค์ ์คํ์ ํ ์คํธ๋ฆผ์์ ์ด์ด๊ฐ๊ธฐ
์์ ์ค์น๋ณธ๊ณผ ์ฐ๊ตฌ ์ ์ฅ์์์๋ ๋ค์ ๋ช ๋ น์ผ๋ก ์คํํ์ผ๋ ๋ณด๊ดํ ์ ์์ต๋๋ค.
out_root="$(mktemp -d)"
go run ./cmd/order-example --retain-native \
--model publication/order-judge-initial-20261003/model.json \
--out "$out_root/model"
--model์ ์๋ตํ๋ฉด ๊ฒฐ์ ๋ก ์ ์ผ๋ก ์งํํฉ๋๋ค. ๊ฐ์ ๋ฐ๋์ ๋ ๋ฒ์งธ ์์ฒญ์
์คํํ์ผ์ ์ฌ์ฌ์ฉํ๊ณ ํ์ฌ ์
๋ ฅ์ ์๋ก ๋ ๋ฒ ์คํํฉ๋๋ค. passed/total์ ํ์ฌ
๊ธฐ๋๊ฐ์ ์ถฉ์กฑ ์์
๋๋ค. response_ms๋ ์์ฑยท์คํ์ ํฌํจํ๊ณ , execution_ms๋
๊ทธ ์์ ์คํ ๊ตฌ๊ฐ์ด๋ฏ๋ก ๋์ ๋ํ์ง ์์ต๋๋ค. ์๋ณธยท์์ฑ Goยท์ค์ ๊ฒฐ๊ณผ๊ฐ ํด๋์ ๋จ์ต๋๋ค.
์ด ์ ์ ์์ 8c6ec01c ์ค์น ๊ด์ธก์์ ๋ชจ๋ธยท๊ฒฐ์ ๋ก ๊ฒฝ๋ก์ 4ํ ์์ฑยท8ํ ์ค์ ์คํ๊ณผ
32/32 ๊ธฐ๋๊ฐ์ ํ์ธํ์ต๋๋ค.
๋ฐ๋ณต ์๋ต์ ์ฝ 30ms์๊ณ , ์ฒซ ๋ชจ๋ธ ์๋ต 1.27์ด๋ ํจ๊ป ๊ธฐ๋กํ์ต๋๋ค. ์ ๊ธฐ๋๊ฐ์์๋
ํฉ๊ฒฉ์ ๋ค์ ๊ณ์ฐํ๊ณ ์๋ชป๋ ํ์์ ์์ฑ ์ ์ ๊ฑฐ๋ถ๋์ต๋๋ค.
์ฌ์ฉ๋ฒยทCI ์๋ณธยท์ค์น ์ง๋ฌธยท๋ชจ๋ ๊ฒฐ๊ณผ.