Changelog (변경 이력)
버전 2.x (quad v1)
아래는 v1(2.x)의 변경 이력입니다. 원래 목록은 손으로 쓴 한두 줄짜리 메모였습니다 — master 브랜치의 md/kr/changelogs.md에 그 원문이 그대로 남아 있습니다. 그것만으로는 무엇이 어떻게 바뀌었는지 알 수 없어서, Git 히스토리를 되짚어 각 번호에 해당하는 커밋을 찾고 실제 diff를 근거로 다시 썼습니다. 세 가지만 짚습니다.
- 이 목록에 없는 번호(2.10, 2.16)는 배포 뒤 결함이 발견되어 회수한 릴리즈입니다. 사용을 막기 위해 번호째 지웠습니다 — Git에도 그 번호에 해당하는 커밋이나 태그가 없어서 무엇이 담겨 있었는지는 복원할 수 없습니다.
- 2.25는 배포되지 않았습니다. 소스와 이 목록에만 남았고 릴리즈 태그도 rbxmx 배포도 없습니다. 마지막 릴리즈는 2.24이고,
master의 태그도 그 하나뿐입니다. - 번호 순서와 날짜 순서가 맞지 않습니다. 이 목록은 개발이 끝난 뒤 한꺼번에 번호를 붙여 쓴 것이라 번호가 개발 순서를 뜻하지 않습니다 — 2.9·2.12·2.18~2.22는 2023-02-21 한 커밋(
0689ad8)에 함께 들어 있고, 2.17은 2.7과 같은 날(2023-02-16) 가장 먼저 커밋됐습니다. 소스의 버전 상수도 여섯 값(1.14·2.14·2.18·2.22·2.24·2.25)만 거쳐서, 대부분의 번호는 상수로 존재한 적조차 없습니다. 그래서 헤딩의 앵커는 버전을 올린 커밋이 아니라 그 변경이 실제로 들어간 커밋입니다. 한 번호가 여러 커밋에 걸쳐 있으면 오래된 것부터 나란히 적었고, 해시는 모두master브랜치, 날짜는 작성일(KST)입니다.
2.25 - 2023-02-23 (dd980aa)
실험적 API입니다. 이 번호는 배포되지 않았습니다.
- Added —
Class.Extend인스턴스에GetChildren()이 생겼습니다. 그 인스턴스에 마운트된 자식들을 새 배열에 담아 돌려줍니다(내부__child자체가 아니라 사본이고, 자식이 없으면 빈 배열). 인자는 받지 않습니다. - Added —
Class.Extend인스턴스에ChildAdded필드가 생겼습니다.Signal의 Bindable이고, 그 인스턴스에 자식이 마운트될 때마다 추가된 자식 하나를 인자로 발행합니다.
2.24 - 2023-02-22 (16cf39d, 80242eb, 9a8e39a)
v1의 마지막 공식 릴리즈입니다. 태그 2.24는 문서 손질 커밋 81d981d를 가리킵니다.
- Added — 거의 비어 있던 튜토리얼 9~11장(Lang·Signal·Extend)을 채워 한국어 튜토리얼을 완성했습니다.
- Added — 레퍼런스 문서를 새로 썼습니다.
Signal(Bindable·Disconnecter),Store(ObjectList),Tween(TweenOptions·Easings·Directions), 그리고 Event·Extend·Lang·Mounts·QuadProperty 항목입니다. - Added — 빌드된 Mkdocs 정적 사이트를 레포에 함께 커밋했습니다.
2.23 - 2023-02-21~22 (5c646f7, 80242eb)
- Fixed — 객체를 만들 때 나던 오류를 고쳤습니다. 클래스 내부가 자식을 마운트할 때 반환 형태가 바뀐
Mount대신MountOne을 쓰도록 바로잡았습니다. - Fixed —
Extend객체의 자식이 Unmount되면 이제 부모의__child목록에서도 빠집니다. 전에는 목록에 그대로 남아서Extend가 이미 사라진 자식을 계속 쥐고 있었습니다. - Fixed —
types의 오타 두 개.TweenGetter에 반환 타입이 비어 있던 것을any로,Easing목록에서 빠져 있던"Back"을 채웠습니다. - Changed — 같은 커밋(
5c646f7)에서 프로퍼티 트윈이Ended/OnStepped콜백을Tween에 넘기던 래퍼 두 개가 주석 처리됐습니다. 이 커밋 이후로는 프로퍼티 자리에 준 트윈 옵션의Ended/OnStepped가 호출되지 않습니다. 의도된 변경인지는 커밋 메시지로 알 수 없어 그대로 적어 둡니다.
2.22 - 2023-02-21 (0689ad8, 04916eb)
- Fixed —
Event.Prop으로 건 리스너가 인스턴스를 만드는 도중에 한 번 실행되던 문제를 고쳤습니다. 이제 프로퍼티와 자식을 다 세운 뒤에 모아둔 바인딩을 한꺼번에 연결하므로, 리스너는 인스턴스가 완성된 다음부터 불립니다. (0689ad8에 인자를 빠뜨린 버그가 있어서 실제로 동작하기 시작한 것은04916eb입니다.)
2.21 - 2023-02-21 (0689ad8)
- Changed —
Linker를 클래스 안의 클래스에서도 쓸 수 있습니다. 중첩 생성 경로가 props에 섞인Linker를 따로 모아 두고 인스턴스가 만들어진 뒤에 연결하므로, 바깥 클래스뿐 아니라 안쪽 클래스의 자식·프로퍼티에도 걸 수 있습니다.
2.20 - 2023-02-21 (0689ad8)
- Added — 한국어 튜토리얼이
import부터extend까지 11장 구성으로 자리를 잡았습니다. 다만 9~11장은 아직 거의 비어 있었고 채워진 것은 2.24입니다. Mkdocs Material 테마와 검색 설정도 들어갔습니다. - Added —
Makefile이 생겨서rojo build(rbxmx 모델 번들)와mkdocs build/serve를 명령 하나로 돌립니다.
2.19 - 2023-02-21 (0689ad8)
- Added — 링커가 생겼습니다.
Class.Extend인스턴스를self "name"처럼 문자열로 호출하면 링커가 만들어지고, 그것을 props 자리에 놓으면 마운트할 때 그 인스턴스와 이어줍니다. 자식 자리(숫자 키)에 놓으면 만들어진 자식 인스턴스를self의name키에 꽂아 주고(그래서self에 자식 참조를 받아둘 수 있습니다), 이벤트 자리(문자 키)에 놓으면 그 이벤트를self:GetPropertyChangedSignal(name)으로 흘려보냅니다.
2.18 - 2023-02-21 (0689ad8)
- Fixed —
Store에 넣은 Instance가 가비지 컬렉터에 수거되어 목록에서 사라지던 문제를 고쳤습니다.AddObject가 인스턴스를 붙잡는 더미 시그널 연결을 함께 걸어 둡니다.
2.17 - 2023-02-16 (9f2872e)
- BREAKING — Tween
CallBack에 등록한 함수가 받는 인자가 바뀌었습니다. 와일드카드*는(Index, Alpha, Item)에서(Item, Index, Alpha)로, 수치 인덱스는(Alpha, Item)에서(Alpha, Index, Item)로 갑니다. 두 형태 모두 순서가 달라졌으니 기존 콜백은 매개변수 순서를 고쳐야 합니다. - BREAKING —
~문법이 없어졌습니다.CallBack["~0.5"]처럼 알파 기준으로 호출 시점을 적던 키는 더 이상 해석되지 않고 수치 인덱스(CallBack[0.5])만 남습니다. 두 기준은 값이 다르므로 숫자를 그대로 옮기면 시점이 어긋납니다 — 수치 인덱스는 선형 시간 진행률과 비교하고, 없어진~키는 거기에 이징을 적용한 값과 비교했습니다. 옮기려면 쓰던 이징 함수를 역으로 풀어 같은 시점의 진행률을 구해야 하고,Linear면 두 값이 같아서 숫자를 그대로 써도 됩니다.
2.15 - 2023-02-17~18 (11c3268, 723d3f9)
- BREAKING —
Lang의 필드 이름이 바뀌었습니다.Lang.Lang→Lang.CurrentLocale,Lang.Default→Lang.Locales.Default이니, 옛 이름을 읽거나 쓰던 자리를 전부 새 이름으로 고쳐야 합니다. 폴백도 성격이 바뀌어서, 2.14까지 영어로 떨어졌던 것이 이제 전용 키인Locales.Default로 떨어집니다 — 사전에[Lang.Locales.Default] = ...항목을 넣어두지 않으면 다른 언어에서 현지화가 실패합니다. - Added —
Lang.FailedMessage. 현지화에 실패한 자리에 대신 넣을 문자열입니다. - Changed —
Lang.CurrentLocale이나Lang.FailedMessage에 값을 넣으면 등록된 텍스트가 자동으로 다시 갱신됩니다. 전에는 값을 바꾼 뒤 갱신을 직접 불러야 했습니다. (이름을 바꾼11c3268이 내부에서 옛 필드를 계속 읽고 있었는데, 그 자리까지 새 이름으로 바로잡은 것도723d3f9입니다.)
2.14 - 2023-02-17 (7361c01)
- Added —
Lang모듈이 생겼습니다. 로케일별 사전을 등록해 두고(Lang.New(id, handlers))register로 UI에 물리면, 현재 로케일에 맞는 문자열이 그 자리에 들어갑니다. 이 시점의 폴백은 영어(Locales.English)이고, 전용 폴백 키로 바뀌는 것은 2.15입니다.
2.13 - 2023-02-17~18 (9e1216c, 7361c01, 52bc94c)
- Added —
Signal모듈이 생겼습니다. 순수 Luau로 만든 Bindable(New/Connect/Fire)과, 연결을 모아 한 번에 끊는Disconnecter입니다. - Added —
Class.Extend인스턴스에서GetPropertyChangedSignal(name)과EmitPropertyChangedSignal(name, value)를 쓸 수 있습니다. 시그널은 처음 요청할 때 만들어지고, 그 프로퍼티에 다른 값을 넣으면 자동으로 발행됩니다. 두 이름은 2.7과 같은 커밋에 빈 껍데기로 먼저 들어와 있었습니다. (7361c01이 두 메서드를Signal에 연결했지만 그때는Bindable.New()가 만든 객체를 돌려주지 않았습니다. 그래서GetPropertyChangedSignal은nil을 돌려줘:Connect에서 에러가 났고EmitPropertyChangedSignal은 아무 일도 하지 않았습니다. 실제로 동작하기 시작한 것은 그 반환을 채운52bc94c입니다.)
2.12 - 2023-02-21 (0689ad8)
- Added —
Mount가 돌려주는 목록 객체에:Add(...)가 생겼습니다. 같은 부모에 자식을 나중에 더 붙이면서 그 목록에도 함께 담을 수 있습니다. - BREAKING — 그러면서
Mount가 자식을 하나만 넘겼을 때도 목록 객체를 돌려주게 됐습니다. 전에는 하나면 마운트 객체를 그대로 돌려주는 분기가 있었지만 그 반환값에는:Add를 걸 수 없어서 없앴습니다. 반환값을 마운트 객체로 바로 쓰던 코드는MountOne을 쓰거나 목록의 첫 원소를 꺼내야 합니다 — v1 자신도 이걸 놓쳐서 2.23의 객체 생성 오류가 났습니다.
2.11 - 2023-02-19 (3e38345)
- Added —
Store.GetObjects에&(AND)를 쓸 수 있습니다."button & active, modal"처럼 적으면button과active를 모두 가진 오브젝트와modal을 가진 오브젝트가 함께 나옵니다. 콤마(OR)도 이 커밋에서야 제대로 동작하기 시작했습니다 — 전에는 콤마가 든 문자열을 통째로 키로 찾아 빈 목록이 나왔습니다. - Changed —
&나 콤마를 쓴 쿼리 결과는 원본이 아니라 그때 만들어진 파생 목록이라:Remove를 막았습니다. 다만 잠금 표시가 목록마다가 아니라 공용 클래스에 걸려서, 복합 쿼리를 한 번이라도 쓰면 그 뒤로는 평범한 목록까지 모든 목록의:Remove가 에러를 냅니다(2.24까지 고쳐지지 않았습니다).
2.9 - 2023-02-21 (0689ad8)
- Changed —
round가 쓰는 모서리·아웃라인 이미지를 모듈이 로드될 때ContentProvider:PreloadAsync로 미리 받아둡니다. 둥근 프레임이 처음 그려질 때 이미지가 늦게 떠서 깜빡이던 것이 줄어듭니다.
2.8 - 2023-02-18 (723d3f9)
- Changed —
require(quad)가 돌려주는 값에 타입이 붙어서 나옵니다. 반환 코드를exports로 분리하고init.lua가 그것을types.module로 캐스팅해 돌려주도록 바꾼 결과라, 쓰는 쪽에서 타입을 따로 달지 않아도 정적 검사와 자동완성이 됩니다.
2.7 - 2023-02-16 (9f2872e)
- Added —
types모듈이 생겼습니다. 라이브러리 전체의 Luau 타입 정의를 한곳에 담았고,require(quad.types)로 직접 가져와 자기 코드의 어노테이션에 쓸 수 있습니다.
2.1~2.6 - 2023-02-17 (83bb7ee, 46da90f)
- BREAKING — 모든 모듈과 메서드의 이름이 대문자 시작(PascalCase)으로 바뀌었습니다.
module.init→Init,this.store/this.tween/this.class→Store/Tween/Class,round.setRound→SetRound,event.bind/prop→Bind/Prop식입니다. 옛 소문자 이름은 남겨두지 않았으니 호출부를 전부 고쳐야 합니다.
2.0 - 2023-02-17 (83bb7ee)
- BREAKING — 메이저 번호를 2로 올렸습니다. 위의 이름 개편과 정적 타이핑, 시그널, 다국어 모듈까지 1.x와 호환되지 않는 변경이 한꺼번에 들어가서 1.x 코드는 그대로 올려 쓸 수 없습니다. 실제로 무엇을 고쳐야 하는지는 위의 2.1~2.6과 2.15를 보세요 — 대부분은 이름 개편입니다. 다만 소스의 버전 상수는 이 커밋에서도 아직
1.14였고, 실제로2.14가 되는 것은 같은 날 몇 시간 뒤7361c01입니다.
답변함: 0 / 0 (0%)