Package Interfaces - kimjooyoon/meta-ontology-go GitHub Wiki

νŒ¨ν‚€μ§€μ˜ 곡개 ꡬ쑰λ₯Ό λ°μ΄ν„°λ‘œ κΊΌλ‚΄κΈ°

개발 λΈŒλžœμΉ˜μ— λ³‘ν•©ν•œ PR 1410에 gooo package interface λͺ…령을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. μ•„λž˜ 초기 κ΄€μΈ‘μ˜ μ†ŒμŠ€λŠ” 8951c5f8이며, μ΅œμ’… 톡합 μ†ŒμŠ€ 8f4c9638은 ν•„μˆ˜ CI와 λ„€ ν”Œλž«νΌ 검사λ₯Ό 거쳐 dev e8ccf425에 λ³‘ν•©ν–ˆμŠ΅λ‹ˆλ‹€. 이번 배포의 κ³ μ • μ†ŒμŠ€λŠ” 16bb6537c8b92104b2ea7a5abf593c7b965fedd5μž…λ‹ˆλ‹€. 이 κΈ°λŠ₯을 이어받은 곡개 0.6.20을 λ°°ν¬ν•˜κ³  macOS ARM64 μ„€μΉ˜λ³ΈμœΌλ‘œ 자체 λͺ¨λΈ API 도ꡬ·저μž₯ μž¬μƒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

νŒ¨ν‚€μ§€μ˜ νƒ€μž… 이름과 ID만 μ•Œλ©΄ 같은 ID μ•„λž˜μ—μ„œ ν•„λ“œκ°€ 달라진 상황을 놓칠 수 μžˆμŠ΅λ‹ˆλ‹€. μƒˆ 좜λ ₯μ—λŠ” ν•„λ“œ νƒ€μž…Β·ν•„μˆ˜ μ—¬λΆ€Β·κ°œμˆ˜ 쑰건과 ν•¨μˆ˜ μž…λ ₯의 μˆœμ„œλ₯Ό ν•¨κ»˜ λ‹΄μ•˜μŠ΅λ‹ˆλ‹€. 이λ₯Ό μ΄μš©ν•˜λ©΄ λ¬Έμ„œ μƒμ„±κΈ°λ‚˜ API λ³€κ²½ 도ꡬ가 컴파일러의 해석을 κ·ΈλŒ€λ‘œ λ°›μ•„ μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€.

컴파일러 μ €μž₯μ†Œμ˜ 후보 μ†ŒμŠ€μ—μ„œ λ‹€μŒμ²˜λŸΌ μ‹€ν–‰ν•©λ‹ˆλ‹€.

go run ./cmd/gooo package interface --json \
  examples/package-optional-record-flow/gooo.workspace.json

예λ₯Ό λ“€μ–΄ Profileμ΄λΌλŠ” νƒ€μž…μ˜ noteλŠ” 선택적인 λ¬Έμžμ—΄, countλŠ” 선택적인 μ •μˆ˜λΌκ³  좜λ ₯ν•©λ‹ˆλ‹€. λ‹€λ₯Έ νŒ¨ν‚€μ§€μ˜ Main이 이 νƒ€μž…μ„ μž…λ ₯λ°›μœΌλ©΄ μ›λž˜ νƒ€μž…μ˜ ID둜 μ—°κ²°ν•˜κ³ , ν•„λ“œ μ •μ˜λŠ” κ·Έ νƒ€μž…μ„ μ„ μ–Έν•œ νŒ¨ν‚€μ§€μ— λ‚¨κΉλ‹ˆλ‹€. ν•¨μˆ˜κ°€ 같은 νƒ€μž…μ„ μ—¬λŸ¬ 번 λ°›λŠ” κ²½μš°μ—λ„ 인자의 μˆœμ„œμ™€ λ°˜λ³΅μ„ λ³΄μ‘΄ν•©λ‹ˆλ‹€.

νƒ€μž…κ³Ό ν•„λ“œμ˜ λͺ…μ‹œμ  IDκ°€ 같아도 μ΄λ¦„Β·νƒ€μž…Β·ν•„μˆ˜ μ—¬λΆ€μ˜ λ³€ν™”κ°€ 좜λ ₯에 λ‚˜νƒ€λ‚©λ‹ˆλ‹€. μ•žμ„  곡개 0.6.19μ—μ„œ ν™œλ™μ˜ IDλŠ” namespace/name κ·œμΉ™μœΌλ‘œ λ§Œλ“€μ–΄μ Έ 이름 변경에 따라 λ°”λ€λ‹ˆλ‹€. λͺ…μ‹œμ  ν™œλ™ ID PR 1415λŠ” ν•„μˆ˜ CI와 원본 검사 기둝을 ν™•μΈν•œ λ’€ dev 9858fdc2에 λ³‘ν•©ν–ˆμŠ΅λ‹ˆλ‹€. activity Calculate(Integer) -> Integer id "urn:gooo:activity:sum"처럼 적으면 이름을 바꿔도 μΈν„°νŽ˜μ΄μŠ€μ™€ μ‹€ν–‰ 기둝의 IDλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€. IDλ₯Ό μƒλž΅ν•œ 선언은 κΈ°μ‘΄ κ·œμΉ™μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 곡개 0.6.20의 μ˜μ–΄Β·ν•œκΈ€ 이름 μ‹€ν–‰Β·μž¬μƒ 예제λ₯Ό μƒˆ μ•ˆλ‚΄μ— λ‹΄μ•˜μŠ΅λ‹ˆλ‹€.

κΈ°μ‘΄ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ½κΈ°Β·κ°€μ Έμ˜€κΈ° ν•΄μ„Β·μ˜λ―Έ 검사λ₯Ό μž¬μ‚¬μš©ν•˜λ©°, ν•¨μˆ˜ 본문은 μ‹€ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•˜λ‚˜μ˜ νŒŒμΌλΆ€ν„° μ—¬λŸ¬ νŒ¨ν‚€μ§€κΉŒμ§€ 같은 λͺ…λ ΉμœΌλ‘œ μ½μŠ΅λ‹ˆλ‹€. 좜λ ₯μ—λŠ” 원본 μ†ŒμŠ€, νŒ¨ν‚€μ§€ λΉŒλ“œ, μΈν„°νŽ˜μ΄μŠ€ 자체의 지문도 ν•¨κ»˜ κΈ°λ‘λ©λ‹ˆλ‹€.

ν™•μΈν•œ λ²”μœ„

  • νƒ€μž…κ³Ό ν•„λ“œμ˜ IDλ₯Ό μœ μ§€ν•˜λ©΄μ„œ ν•„λ“œ νƒ€μž…Β·ν•„μˆ˜ 여뢀·이름을 바꿨을 λ•Œ 차이가 λ“œλŸ¬λ‚¬μŠ΅λ‹ˆλ‹€.
  • 선택적 ν•„λ“œ, 빈 λ ˆμ½”λ“œμ™€ ꡬ쑰가 μ—†λŠ” λͺ…λͺ© νƒ€μž…, 쀑볡 인자의 μˆœμ„œλ₯Ό ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.
  • manifest의 νŒ¨ν‚€μ§€Β·νŒŒμΌ λ‚˜μ—΄ μˆœμ„œλ₯Ό 바꿔도 μ •κ·œν™”λœ κ²°κ³Όκ°€ κ°™μ•˜μŠ΅λ‹ˆλ‹€.
  • λ‹€λ₯Έ 파일 μ‚¬μ΄μ˜ ν•„λ“œ ID 좩돌과 해석할 수 μ—†λŠ” νƒ€μž…Β·κ°€μ Έμ˜€κΈ°λŠ” μ‹€νŒ¨λ‘œ λ°˜ν™˜ν–ˆμŠ΅λ‹ˆλ‹€.
  • κΈ°μ‘΄ 곡개 0.6.18κ³Ό ν›„λ³΄μ˜ νŒ¨ν‚€μ§€ 해석 κ²°κ³Όκ°€ λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ κ°™μ•˜μŠ΅λ‹ˆλ‹€.
  • νŒ¨ν‚€μ§€ μ‹€ν–‰ 및 CLI 검사, μƒˆ 투영의 race 검사, 전체 λΉŒλ“œκ°€ ν†΅κ³Όν–ˆμŠ΅λ‹ˆλ‹€.

자체 QAT λͺ¨λΈμ„ μ—°κ²°ν•œ μ‹€μ œ νŒ¨ν‚€μ§€ 쑰립도 λ‹€μ‹œ μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. κ³ μ • μˆœμ„œλŠ” 48회, λͺ¨λΈ μˆœμ„œλŠ” 41회 λ§Œμ— κΈ°μ‘΄κ³Ό 같은 ν”„λ‘œκ·Έλž¨μ„ κ³¨λžμŠ΅λ‹ˆλ‹€. 큰 μ •μˆ˜λ₯Ό ν¬ν•¨ν•œ μ‹€μ œ 좜λ ₯κ³Ό μ›λž˜ 이λ ₯이 μœ μ§€λκ³ , μ €μž₯된 기둝 μž¬μ‚¬μš©μ˜ μƒˆ 좔둠은 0νšŒμ˜€μŠ΅λ‹ˆλ‹€. λ‚˜μ€‘μ— 정닡을 뢙인 ν‰κ°€μ—μ„œλŠ” 4/4κ°€ μΌμΉ˜ν–ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λΈμ„ μ‚¬μš©ν•œ 전체 λͺ…λ Ήμ˜ 단일 관츑은 9.08초, ν”„λ‘œμ„ΈμŠ€ CPU μ‹œκ°„ 7.52초, μ΅œλŒ€ RSS 88,358,912λ°”μ΄νŠΈ(μ•½ 84.3 MiB)μ˜€μŠ΅λ‹ˆλ‹€. κ³ μ • μˆœμ„œλŠ” 11.92μ΄ˆμ˜€μŠ΅λ‹ˆλ‹€. μ‹€ν–‰ μˆœμ„œμ™€ μΊμ‹œ 쑰건이 κ°™μ§€ μ•Šμ•„ 속도 μš°μœ„λ‘œ μΌλ°˜ν™”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λͺ¨λΈ κ°€μ€‘μΉ˜λŠ” κ°±μ‹ ν•˜κ±°λ‚˜ μƒˆλ‘œ λ‚΄λ €λ°›μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 원본 기둝.

μ—°κ²°ν•œ 도ꡬ와 남은 μž‘μ—…

API λ³€κ²½ 도ꡬ가 이 ꡬ쑰λ₯Ό 읽고 Gooo κ·œμΉ™μœΌλ‘œ λ‹€μŒ μž‘μ—…μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. μž…λ ₯ ν•„λ“œμ˜ ν•„μˆ˜ν™”μ™€ 좜λ ₯ ν•„λ“œμ˜ 선택화λ₯Ό μ„œλ‘œ λ‹€λ₯΄κ²Œ λΆ„λ₯˜ν•˜κ³  μ‚¬μš© λ°©ν–₯도 κΈ°λ‘ν•©λ‹ˆλ‹€. ν˜„μž¬ 컴파일러 λͺ…령은 μ„ μ–Έ ꡬ쑰λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. λ™μž‘ ν˜Έν™˜μ„± 평가와 μžλ™ 호좜자 μˆ˜μ •μ€ 남아 μžˆμŠ΅λ‹ˆλ‹€. Windows μ‹œμž‘Β·λŒ€κΈ° μ˜ˆμ‚° μˆ˜μ •μ„ ν†΅ν•©ν•œ PR 1410κ³Ό 0.6.19 μ€€λΉ„ PR 1413은 ν•„μˆ˜ CI와 λ„€ ν”Œλž«νΌ 검사λ₯Ό ν†΅κ³Όν•˜κ³  dev에 λ³‘ν•©λμŠ΅λ‹ˆλ‹€. 이후 ν™œλ™ ID 예제λ₯Ό λ”ν•œ 곡개 0.6.20을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.