Source Transfer 59 KO - teamswyg/laya-tools GitHub Wiki
๋ ๊ณต๊ฐ ์์ฒ์ ์์ ์์ฑ ์ ์ด ์ค๋น59
English ยท ๊ธฐ๊ณ๊ฐ ์ฝ๋ ์์ฒ ์ฐ๊ฒฐ ยท ๋ค์ ์ค๋น ๋ฐฉํฅ ยท ๊ธฐ์กด ์๋ณธ ๊ด์ธก57
๋ ๊ฐ์ง ์์ฑ์ ์ ์ํ๊ณ ๊ธฐ์กด ๊ทผ๊ฑฐ๋ฅผ ์ฐ๊ฒฐํ ์ค๋น ์๋ฃ๋ค. ์ ์์ฒญยทcaptionยท์ ๋ตยทํ์ฉ ์งํฉยท์ญํ ๋ฐฐ์ ยทํ์ต์ ์์ง 0์ด๋ค. ์๋ณธ ์์คยท๋ฌธ์ยท๋ผ์ด์ ์ค์ ์ ์ฅ๋57 ๊ฒฐ๊ณผ๋ฅผ ์ฝ์์ผ๋ฉฐ, ์์ฒ APIยทBindยทํ๊ฐยทBaselinesยท๋ชจ๋ธยท์ ๋ฃ ํธ์ถยท๋ณดํธ ์ต์ข
์ ๊ทผ์ ์ด๋ฒ ์ค๋น์์ 0์ด๋ค. planned_reference_only, execution_eligible=false, training_ready=false๋ฅผ ์ ์งํ๋ค. ๋ฌธ์ ์์ฑ์ด๋ ํ ๊ธฐ๋ก์ ์คํ ๊ฐ๋ฅํ ๊ณ์ฝยท๋ฌธ์ฅ ๊ฒํ ์๋ฃยท๋ค์์ฑ ํด์๋ฅผ ๋ปํ์ง ์๋๋ค.
58์์๋ ๊ธฐ์กด72๊ฐ ๊ฐ๋ฐ ์์ฒญ์ BM25 91ํ์ oracle 73ํ ์ฌ์ด์ ์ฝ 19.7802%์ ํ์ธ ์ฌ์ง๊ฐ ์์๋ค. ์ ์ฒด17๊ทธ๋ฃนยท๋ผ๋ฒจ16๊ทธ๋ฃน๋ ๊ธฐ์กด ํํ15๋ฅผ ์ด๋ฏธ ํต๊ณผํ๋ค. ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ข์ ๊ทธ๋ฃน์ ๋๋๊ฑฐ๋ ๋ ์ธ๋ถ ์์ฒ์ ์ ๋ ๋ฆฝ ๋ถ๋ชจ๋ก ์ธ์ง ์๋๋ค. 58์ ์์ยท์ ์ยท๊ทธ๋ฃน ๋น์ฉ์ ์ด๋ฏธ ๊ด์ธกํ์ผ๋ฉฐ, ๋ฏธ๋ ์ญํ ๊ท์น์ ๊ณ ์ ํด๋ ๋ฏธ๊ด์ธกยท๋ธ๋ผ์ธ๋ ์ํ๋ก ๋๋์๊ฐ์ง๋ ์๋๋ค.
๋ฌด์์ ์ ์ํ๋
| ์ ์ | ์ขํ ์ง๋ฌธ | ๊ธฐ์กด์ ์ค์ ๋ก ๊ด์ธกํ API | ์์ง ๋ฏธ์ง์์ธ ๋ฒ์ |
|---|---|---|---|
| Strict parsing | ๋ช ์ํ ์ ํ ๋ฒ์ ์ ๋ ฅ์ ์์ ๋ณด์ ํ์ง ์๊ณ , ์คํจ์ nil/์ค๋ฅ๋ ์ฑ๊ณต ํ๋๋ฅผ ์ ํํ ๋๋ ค์ฃผ๋๊ฐ | StrictNewVersion,57์ s01โs16 |
permissive NewVersion, ๋ณด์ flags ๋ณ๊ฒฝ, ๋ชจ๋ SemVer ์
๋ ฅ์ ์ผ๋ฐ ์ ํ๋ |
| Slash ๊ฒฝ๊ณ ๋งค์นญ | ์ง์ ํ / ๊ฒฝ๋ก์์ *์ /**/๊ฐ ๋จ์ผ segmentยทzero/nested directory๋ฅผ ๊ตฌ๋ถํ๋๊ฐ |
Match,57์ g01โg09 |
PathMatch, Windows separator, ํ์ผ ์์คํ
ํ์, ์ ์ฒด glob ๋ฌธ๋ฒยท์ค๋ฅ ์ ์ฑ
|
์ด๊ธฐ target์ ์งง์ ์์ด ์์ฒญ๊ณผ ์์ด ํ๋ณด ์ค๋ช ์ ์ ํ Go ํ๋ ํํธ๋ค. ์ด ํ๊ตญ์ด ์๋ด๋ ๋ฒ์ญ ๋ฌธ์์ด๋ฉฐ ํ๊ตญ์ด ๋ชจ๋ธ ์ ๋ ฅ์ ์ฑ๋ฅ ๊ฒ์ฆ์ด ์๋๋ค. ์ caption๊ณผ ๋ ๋ฆฝ ๊ธฐ๋๊ฐ์ ์ค๋นยท๊ฒํ , ๋ชจ๋ธ ์ ๋ ฅ์ 512๋ฐ์ดํธยท์ ๊ทํ32๋จ์ด ์ถฉ์ค์ฑ, ํ๋ณด ๊ด๊ณ ๊ฐ์ฌ๋ ํ์ ๋จ๊ณ๋ค. ์ด ์์ฝ ๋ฌธ์ฅ์ ์์ฑ๋ ๋ชจ๋ธ ์ ๋ ฅ์ด๋ ๋ผ๋ฒจ๋ก ์ฌ์ฉํ์ง ์๋๋ค.
์๋ณธ ํ์ผ๊ณผ ์ค์ ๋์์ ์ฐ๊ฒฐ์ ๊ตฌ๋ถํ๋ค
์์ฒ ํ์ ๊ธฐ์กด manifest๋ฅผ ์ฌ์ฉํ๋ค. 15๊ฐ ์๋ณธ artifact,99,035๋ฐ์ดํธ๋ฅผ ๋ณด์กดํ๋ฉฐ ์ ์ธ๋ถ ๋ค์ด๋ก๋๋ ์๋ค. JSON์๋ revisionยทmoduleยท์๋ณธ/๋ณด๊ด ๊ฒฝ๋กยทํ์ผ ํฌ๊ธฐยทSHA๋ฅผ ์ ํํ ๊ธฐ๋กํ๋ค. ์๋ณธ ํ์ผ์ ์๋ฅด๊ฑฐ๋ ๋ค์ ํฌ๋งทํ์ง ์๋๋ค.
Semantic closure๋ ํ๋์ ๊ฒฐ์ ํ๋ entrypointยทํ์ ยท์์ยท์ค๋ฅ sentinelยทhelperยท๊ด์ธก getter์ ์ฐ๊ฒฐ์ด๋ค. Compile closure๋ ์๋ณธ ํ์ผ ์ ์ฒด๋ฅผ ๊ทธ๋๋ก ์ปดํ์ผํ๊ธฐ ์ํด ๋ณด์กดํ๋ ํ์ผ ๋ชฉ๋ก์ด๋ค. ๊ฐ์ ํ์ผ์ ์๋ ๋ค๋ฅธ ํจ์๊ฐ ์ปดํ์ผ๋๋ค๋ ์ฌ์ค์ด ๊ทธ API์ ํธ์ถ ๊ถํ์ด๋ ๊ด์ธก ๊ทผ๊ฑฐ๋ฅผ ์ถ๊ฐํ์ง ์๋๋ค. ์ด ๊ธฐ๋ก์ ์ ์ ์์ค ๋ ํด์ด๋ฉฐ, ์ compile/replay ๊ฒ์ฆ์ ์คํํ์ง ์์๋ค.
| ์์ฒ | ๊ณ ์ revisionยทmodule | ์๋ณธ compile/๊ณ ์ง closure |
|---|---|---|
| Masterminds/semver | 61fc460d28283a91c53be65c2e0f20b494ac8ad9, github.com/Masterminds/semver/v3, ์๋ณธ Go1.21 |
version.go, collection.go, constraints.go, doc.go, LICENSE.txt, metadata/upstream.go.mod.txt:6ํ์ผ |
| bmatcuk/doublestar | 8b690afa33319b0a1869367f594e53977e38bc99, github.com/bmatcuk/doublestar/v4, ์๋ณธ Go1.16 |
doublestar.go, glob.go, globoptions.go, globwalk.go, match.go, utils.go, validate.go, LICENSE, metadata/upstream.go.mod.txt:9ํ์ผ |
๋ module ํ์ผ์ ๊ฐ์ ์๋ฌธ ๋ฐ์ดํธ๋ฅผ metadata ์ด๋ฆ์ผ๋ก ๋ณด์กดํ๋ค. ์๋ณธ Go directive๋ ์์ฒ ๋ฉํ๋ฐ์ดํฐ์ด๊ณ ,57์ ์ค์ ์คํ ํ๊ฒฝ์ Go1.27.1/Darwin arm64์๋ค. ์๋ณธ directive๋ฅผ ๊ธฐ๋กํ ๊ฒ์ผ๋ก ์ ์ธ์ด ์กฐ๊ฑด์ ์คํ์ ์ฆ๋ช ํ์ง ์๋๋ค.
Strict parsing์ ์ฐ๊ฒฐ
version.go L89์ StrictNewVersion์ Version, num/allowed, containsOnly, validatePrerelease, validateMetadata์ ์ฌ์ฏ ์๋ณธ ์ค๋ฅ sentinel์ ์ฌ์ฉํ๋ค. ์ฑ๊ณต ๊ฒฐ๊ณผ ์ ์ฒด๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด Original, String, Major, Minor, Patch, Prerelease, Metadata getter๋ ํฌํจํ๋ค. ์ ํํ ์ ์ธ ์ค๊ณผ ํ์ผ ํ์ JSON์ ์๋ค.
์๋ณธ ํ์ฑ ๋ฌธ์ L13๊ณผ version.go์ L84โ88 ์ค๋ช
์ ์ฐ๊ฒฐํ๋ค. doc.go L13โ19๋ ์๋ณธ ๋ฐ์ดํธ [328,853), version.go L84โ88์ [3039,3397)์ด๋ค. ๋ฐ์ดํธ๋0๋ถํฐ ์์ํ๊ณ ๋์ ์ ์ธํ๋ฉฐ, ์ค์1๋ถํฐ ์์ํด ์๋์ ํฌํจํ๋ค. JSON์ span SHA๋ ์ด LF ํฌํจ ์๋ฌธ ๋ฒ์๋ฅผ ๊ณ ์ ํ๋ค.
StrictNewVersion์ ๋ณด์ flags๋ฅผ ์ฝ์ง ์๋๋ค. ํ์ผ ์ ์ฒด์ regex/global/init๋ ์์ฒ ํ์์๋ ๋ณด์กดํ๋, ์ด ์ฌ์ค์ NewVersion ๊ด์ธก์ผ๋ก ํด์ํ์ง ์๋๋ค. ๊ธฐ์กด observer๊ฐ ์ง์ ํธ์ถํ ๊ฒ์ strict API๋ค. permissive ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์๋ ์ฝ๋ ๋
ํด๋ง์ผ๋ก Got์ ์ถ๊ฐํด์๋ ์ ๋๋ฉฐ, ์ ๊ณ์ฝยท๊ด์ธก ๊ณํ ์ ์๋ unknown์ด๋ค.
Slash ๊ฒฝ๊ณ์ ์ฐ๊ฒฐ
match.go L52์ Match๋ /, validation=true, case-insensitive=false๋ฅผ ์ ๋ฌํ๋ค. matchWithSeparator, ์ฌ๊ท doMatchWithSeparator, matchRune, isZeroLengthPattern, escape/alternative ํ์ ํจ์, utils.go:indexNextAlt, validate.go:doValidatePattern, ์๋ณธ ErrBadPattern์ด semantic closure๋ค.
๋ฌธ์ L9โ51์ ์๋ณธ ๋ฐ์ดํธ๋ [76,1977), ํต์ฌ ๋ฌธ๋ฒ L15โ17์ [197,373)์ด๋ฉฐ JSON์ span SHA๊ฐ ์๋ค. ์๋ฌธ utils.go ์ ์ฒด์๋ FilepathGlob๋ ์์ด glob/options/walk ์ฝ๋๊น์ง compile closure์ ๋ค์ด๊ฐ๋ค. ๊ทธ๋์ ์๋ณธ7๊ฐ Go ํ์ผ์ ์ ์งํ๋ค. ์ด๊ฒ์ด filesystem API๋ฅผ ์คํํ๊ฑฐ๋ ์คํํ๋๋ก ํ์ฉํ๋ค๋ ๋ป์ ์๋๋ค.
์ ์ฅ๋ Want/Got๋ง ์ ํํ๊ฒ ์ฐธ์กฐํ๋ค
probes-57.json์ vectors[].checks๋ ์ฌ์ Want์ด๊ณ , results-57.json์ audit.rows[].checks๋ ์ ์ฅ๋ Want/Got/์ผ์น ์ฌ๋ถ๋ค. ์ JSON์ ๊ฐ์ ์์ฑํ๊ฑฐ๋ ํฐ ์ ์๋ฅผ ๋ค์ ์ง๋ ฌํํ์ง ์๊ณ ์ ํํ JSON pointerยทfield ์ด๋ฆยทํ์
์ผ๋ก ์ฐ๊ฒฐํ๋ค.
- Strict์ ๊ธฐ์กด16ํ:
error_cause,error_func,error_kind,error_num,major/minor/patch,metadata,nil_version,original,panicked,prerelease,string,supported์14ํ๋. - Glob์ ๊ธฐ์กด9ํ: ์ค๋ฅ ๊ด๋ จ4ํ๋์
matched,panicked,supported์7ํ๋. - ์ ์ฅ row๋ input์ ์ค๋ณต ๋ณด๊ดํ์ง ์๋๋ค. ์ ์ฅ record์
/probes_sha256์ด ๊ณ ์ ์๋ณธ probes ๋ฐ์ดํธ ํด์์ ๊ฐ์์ง ๋จผ์ ํ์ธํ๊ณ ,/vectors/N/input์์ ์ ๋ ฅ์ ์ฝ๋๋ค. ๊ฐ reference์ expected checks์ ์ ์ฅ row/checks/status/match pointer๋ฅผ ํ์ธํ๊ณ IDยทpropertyยทsource familyยทexpectation kind๋ฅผ ๋์กฐํ๋ค. check index๋ฅผ ์ฐ๊ธฐ ์ ์ field ์ด๋ฆยทํ์ ๋ ๋ง์์ผ ํ๋ค. Want/Got์json.RawMessage์ ์ ํํ uint64/bool/string ํ์ ์ ์ ์งํ๋ค. float64๋ ์ผ๋ฐ JSON ์ซ์ roundtrip์ผ๋ก ์ต๋ uint64๋ฅผ ์์คํ์ง ์๋๋ค.error_message,Versions, ํธ์ถ counter ๋ฑ Want๊ฐ ์๋ ๊ด์ธก๊ฐ์ด๋ ๊ธฐ๋ณธ๊ฐ์ ์ ์ ๋ต์ผ๋ก ์น๊ฒฉํ์ง ์๋๋ค. ์ด reference๋ cold metadata์ด๋ฉฐ scorer ํน์ง์ด ์๋๋ค.
ํด๋น25ํ์ ๊ธฐ์กด57์์ ๋ชจ๋ complete/match์๋ค. ์ด๊ฒ์ ๊ธฐ์กด ์ ํ ๊ด์ธก์ ์ฐธ์กฐ ์ํ์ด๋ฉฐ ์ replayยท25๊ฐ ๋ ๋ฆฝ ์์ฒญยท์ caption ์ ๋ต์ด ์๋๋ค. ๋ถ๋ถ ํ๋๋ง ๊ฐ๋ค๋ ์ด์ ๋ก ์ ์ฒด ํจ์ ์ค๋ช ์ ์ถฉ์คํ๋ค๊ณ ํ์ ํ์ง ์๋๋ค.
์๋ ์ฐจ์ด์ ๋ถํ์ค์ฑ์ ์ ์งํ๋ค
Strict API์ nilnessยทsentinelยท์ค๋ฅ ๊ฒ์ฌ ์์๋ ๊ธฐ์ ์ ๊ณ์ฝ์ด๋ค. SemVer ๊ท๋ฒ์ด ์ ํ ์ค๋ฅ ์ข
๋ฅ๊ฐ ์๋๋ค. s06-core-overflow๋ uint64 ํํ ๋ฒ์๋ฅผ ๋๋ ์ ํจํ ์ซ์ ๋ฌธ๋ฒ์ API ๊ฑฐ์ ์ด๋ฉฐ SemVer-invalid๋ก ๋ฐ๊พธ์ง ์๋๋ค. ํฐ prerelease ์ซ์์ ํ์ฑ ์ฑ๊ณต๋ ๋น๊ต ์ ํ๋๋ฅผ ์ฆ๋ช
ํ์ง ์๋๋ค.
57์ ๋น๊ต ๋ถ์ผ์น p08ยทp09๋ ๊ฐ์ ํฐ ์ซ์ ๋น๊ต ์์์ ๋ฐ์ ์์ด๋ค. b05๋ Match("{a,[}","a")๊ฐ true+nil์ ๋ฐํํ ์ค์ ๊ด์ธก๊ณผ ๋ ๊ฐํ ์ ์ฒด ํจํด ์ค๋ฅ ์ ์ฑ
์ ์ฐจ์ด๋ค. ์๋ณธ Got์ ๊ณ ์น๊ฑฐ๋ ValidatePattern ์ ํ ๊ฒ์ฌ๋ก ํฉ์ฑํ์ง ์๋๋ค. ์ธ ๋ถ์ผ์น์ ์ ํํ ์ ์ฅ row pointer๋ JSON์ ๋ณด์กดํ๋ค.
์ ์ ๋ ฅ/ํ๋ณดยท๋ ๋์ Unicode/๋ฌธ๋ฒยทwrapperยทflags ๋ณ๊ฒฝยท์ ๊ฐํ ์ ์ฑ ์ ์ง์์ด ํ์ธ๋๊ธฐ ์ ๊น์ง unknown ๋๋ ๋ฒ์ ๋ฐ์ด๋ค. unsupported operationยทUTF-8/byte bounds ๊ฑฐ์ ยทpanicยทunclassified error๋ฅผ ํ๋ณด ์คํจ ๋ผ๋ฒจ๋ก ๋ฐ๊พธ์ง ์๋๋ค. ์ ํ๋ณด์ ์ ๋ตยท์ค๋ต ๋์กฐ๊ตฐ์ ์์ง ์์ฑํ๊ฑฐ๋ ์คํํ์ง ์์๋ค.
์์ฑ ์์ฒยท๊ทธ๋ฃนยท๋ผ์ด์ ์ค์ ์๋ฏธ
semver์ doublestar๋ ํ๋ก์ ํธ ์ด์ ์ ๊ณต๊ฐ ์๋ณธ ์ฝ๋ยท๋ฌธ์๋ค. MIT ๊ณ ์ง์ ์ ์๊ถ์๋ semver์ Matt Butcher/Matt Farina, doublestar์ Bob Matcuk์ด๋ค. ์ด๋ ํน์ ํจ์์ ๋ชจ๋ ์์ฑ์๋ฅผ ํ์ธํ๊ฑฐ๋ human-only ์์ฑ์ด๋ผ๊ณ ์ธ์ฆํ๋ค๋ ๋ป์ ์๋๋ค. ํ๋ก์ ํธ์ ๊ธฐ์กด ์๋ฃ๋ AI ์ง์ ํ์
ํฉ์ฑ ์์ด ์์ฑ ํ๋ฆ์ด๋ฉฐ, ์ด๋ฒ transfer caption์ ์์ง ์๋ค. ์ธ๋ถ ์ฝ๋๋ ๋ค๋ฅธ reviewer๋ง ์ถ๊ฐํด synthetic_single_pipeline์ ํด์ํ๋ค๊ณ ํ์ง ์๋๋ค.
Strict์ ์คํจยท์ค๋ฅ ๊ด์ธก์ ๊ธฐ์กด atomic-commit/error-identity์ ๋น๊ตํ ์ถ์ด๊ณ , glob์ ๋ฌธ๋งฅ/๊ฒฝ๊ณ๋ prefix-balance/quoted-delimiters์ ๋น๊ตํ ์ถ์ด๋ค. ์ ์ฌ์ฑ๋ง์ผ๋ก ๋์ผ ๊ทธ๋ฃน์ด๋ ๋
๋ฆฝ ๊ทธ๋ฃน์ ํ์ ํ์ง ์๋๋ค. ์ค์ ๊ณต์ helper/ํ์
/sentinelยท๋ณต์ฌ ์ฝ๋ยทaliasยท์ค๋ณต captionยท๋ถ๋ชจ/ํ์ ยท๋ฒ์ญ ๊ด๊ณ๋ฅผ ์ ์ด์ ์ผ๋ก ์ฐ๊ฒฐํ๋ค. ๊ฐ์ upstream์ ๋ค๋ฅธ ์์ฑ๋ ๊ณต์ closure๋ฅผ ๋ณด์กดํ๋ค. ์ ๊ทธ๋ฃน ์๋ ๊ณ์ฐํ๊ฑฐ๋ ์ฃผ์ฅํ์ง ์์๋ค.
์๋ณธ semver LICENSE์ doublestar LICENSE๋ ์ ์ฒด ๋ฌธ๊ตฌยท์ ์๊ถ ๊ณ ์ง์ ํจ๊ป ๋ณด์กดํ๋ค. ์์ฒ ๋ผ์ด์ ์ค์ ๊ธฐ๋ก์ ๋ฏธ๋ ํ์ต ์์ฐยท๊ฐ์ค์น์ ๋ฐฐํฌ ์๊ฒฉ ํ์ธ์ ๋์ ํ์ง ์๋๋ค.
๊ธฐ์กด72๋ถ๋ชจยท17๊ทธ๋ฃนยท๋ผ๋ฒจ16๊ทธ๋ฃนยทunknown21๊ณผ ๊ฒฐ๊ณผ ์๋ฌธ์ ๋ฐ๊พธ์ง ์๋๋ค. ๋ฌธ์ฅ ์ถฉ์ค์ฑ, ์ญํ ยทcoverage ๊ท์น, ๋ณ๋ ์คํ ๊ณํ์ ์๋ ๊ฒ์ฌ๊ฐ ํ์ํ๋ฉฐ ์ ์ฌ๋ ์น์ธ ํ๋ฆ์ ๋ง๋ค์ง ์๋๋ค. ๋ชจ๋ธ/fit/์ HF ๊ฐ์ค์นยท์ด์ ํ์ฑํ๋0์ด๋ค. ๋๋ฉ์ธ๋ณ ์๋ก ๋ค๋ฅธ ๋ณดํธ ์ต์ข ์์ฒญ ์ต์2,400๊ฐ๋ ๋ณ๋์ ์ผ๋ฐํ ๋ชฉํ์ด๋ฉฐ ๋ชจ๋ development fit์ ์ ํ ์ต์๋ผ๋ ๋ป์ ์๋๋ค. protected final/CoSQA reserve๋ ์ฝ๊ฑฐ๋ ์ฌ๋ฐฐ์ ํ์ง ์์๋ค.