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๋Š” ์ฝ๊ฑฐ๋‚˜ ์žฌ๋ฐฐ์ •ํ•˜์ง€ ์•Š์•˜๋‹ค.