Skip to content

v0.5 → v0.6 마이그레이션 가이드 ​

v0.5.0(2025-11-23) 에서 동작하던 코드가 v0.6.0 에서 다르게 동작하거나 더 동작하지 않는 지점을 모았다. 전체 변경 목록은 CHANGELOG.md 의 Unreleased 절에 있고, 이 문서는 그중 기존 코드나 사용 방법을 바꿔야 하는 항목만 다룬다.

1. 없어진 도구와 기능 ​

없어진 것대신 쓸 것
ksjpm 패키지 관리자모듈은 가져오기 "경로" 와 KINGSEJONG_PATH 환경 변수로 찾는다. 검색 순서는 표준 라이브러리 레퍼런스 에 있다
JIT Tier 1(루프 네이티브 컴파일), JIT Tier 2(함수 인라이닝)없음. 기본 실행기는 평가기이고, --vm 으로 바이트코드 VM 을 쓸 수 있다

2. 언어 동작 ​

  • 거부된 Promise 를 대기 하면 에러가 던져진다. v0.5 에서는 거부 이유(에러 값)가 그대로 결과로 돌아왔다. 이제 던지다 처럼 던져지므로, 거부를 값으로 받아 검사하던 코드는 시도 { ... } 오류 (e) { ... } 로 감싸야 한다.

    ksj
    실패 = 비동기 함수() {
        던지다 "연결 끊김"
    }
    메인 = 비동기 함수() {
        시도 {
            대기 실패()
        } 오류 (e) {
            출력("잡음:", e)
        }
    }
    메인()
  • 끝나지 않은 Promise 의 .그러면/.오류시 가 새 Promise 를 돌려준다. v0.5 에서는 원래 Promise 를 돌려줘 콜백의 반환값이 사라졌다. 체인의 다음 단계가 콜백의 반환값을 받으므로, 원래 값을 기대하던 체인은 결과가 달라진다.

  • 조사 분리 규칙이 좁아졌다. 조사는 뒤에 메서드 이름이나 범위의 숫자가 올 때만 떼어 낸다. 마을, 사과, 짝수만 같은 이름이 더 이상 마 + 을 처럼 갈라지지 않는다. 갈라진 이름에 맞춰 짠 코드(예: 마 라는 변수를 따로 둔 코드)는 이름을 바로잡아야 한다.

3. 표준 라이브러리 ​

v0.5.0 에서는 array, crypto, db, http, io, string 모듈이 파싱되지 않아 가져올 수 없었다(CHANGELOG "고침 (어휘 분석)"). 따라서 이 모듈들의 동작 차이는 v0.5 에서 돌던 코드에 영향을 주지 않는다. 아래는 v0.5 에서도 가져올 수 있었던 모듈의 변화다.

함수v0.5v0.6
math.평균(arr)정수 배열이면 정수 나눗셈(평균([1, 2]) → 1)실수(평균([1, 2]) → 1.5)
math.제곱근(x)정수 나눗셈 근사(제곱근(2) → 1)내장 제곱근 의 값(제곱근(2) → 1.41421). 음수는 없음
utils.범위_단계(시작, 끝, 단계)단계가 0 이하면 끝나지 않음[]
utils 의 타입 검사(정수인가 등 5개)영문 타입 이름과 비교해 항상 거짓실제 타입에 맞으면 참
utils.정수를_문자로(n)0~9 외에는 빈 문자열문자열(n) 과 같다
regex.줄바꿈_정리(s)역슬래시와 n 두 글자를 넣음줄바꿈 문자를 넣음
json.JSON_가져오기(obj, 키)배열이 아닌 값에서 타입 오류로 중단없음

v0.6 에서 처음 쓸 수 있게 된 모듈에서 알아 둘 점:

  • io 를 가져와도 파일_크기, 파일명_추출, 확장자_추출 은 내장 함수다. 파일_크기 는 바이트 수를 돌려주고 없는 파일이면 실행 오류를 내며, 확장자_추출 은 점을 포함한다(".txt").
  • db 는 테이블·컬럼 이름을 큰따옴표 식별자로 감싼다. main.users 처럼 점으로 스키마를 붙인 이름은 한 덩어리 이름으로 읽힌다. 외부 입력을 조건에 쓸 때는 문자열 대신 쌍 배열 [["컬럼", 값]] 으로 넘긴다.

4. C++ 로 인터프리터를 포함하는 코드 ​

Value, Environment, EventLoop 헤더가 src/evaluator/ 에서 src/runtime/ 으로 옮겨졌다. 네임스페이스(kingsejong::evaluator)는 그대로이고 include 경로만 바뀐다.

cpp
// v0.5
#include "evaluator/Value.h"
// v0.6
#include "runtime/Value.h"

MIT License