기능 플래그
달빛약속 런타임은 기능 플래그(Feature Flags) 를 통해 런타임의 동작을 세밀하게 제어할 수 있습니다. 기능 플래그는 YaksokSession 생성 시 flags 옵션으로 설정합니다.
기능 플래그 설정하기
import { YaksokSession } from '@dalbit-yaksok/core'
const session = new YaksokSession({
flags: {
'skip-validate-break-or-return-in-loop': true,
'disable-bracket-first-parsing': true,
},
})사용 가능한 기능 플래그
skip-validate-break-or-return-in-loop
반복 구문 내에 멈춤 코드(약속 그만, 반복 그만, 돌려주기)가 없어도 유효성 검사에 실패하지 않습니다.
기본적으로 달빛약속은 무한 반복을 방지하기 위해, 반복 구문 안에 반드시 멈춤 코드가 있어야 합니다. 이 플래그를 활성화하면 해당 유효성 검사를 건너뜁니다.
const session = new YaksokSession({
flags: {
'skip-validate-break-or-return-in-loop': true,
},
})
session.addModule(
'main',
`
반복
"무한 반복" 보여주기
`,
)
// 유효성 검사 오류 없이 실행됩니다 (무한 반복에 주의하세요)
await session.runModule('main')disable-bracket-first-parsing
대괄호를 우선하여 파싱하지 않습니다. 파싱 오류가 발생할 경우 이 옵션이 도움이 될 수 있습니다.
달빛약속의 파서는 기본적으로 대괄호([, ])를 우선 파싱합니다. 복잡한 표현식에서 파싱 오류가 발생하는 경우, 이 플래그를 활성화하면 문제가 해결될 수 있습니다.
const session = new YaksokSession({
flags: {
'disable-bracket-first-parsing': true,
},
})disable-call-stack-depth-limit
약속 호출 스택 깊이 제한을 비활성화합니다. 활성화할 시 CallStackDepthExceededError가 발생하지 않습니다.
달빛약속은 재귀 호출로 인한 스택 오버플로를 방지하기 위해 호출 스택 깊이에 제한을 두고 있습니다. 이 플래그를 활성화하면 해당 제한이 해제됩니다.
이 플래그를 활성화하면 깊은 재귀 호출 시 메모리 부족이나 성능 저하가
발생할 수 있습니다. :::
const session = new YaksokSession({
flags: {
'disable-call-stack-depth-limit': true,
},
})disable-variable-events
변수 설정/읽기 이벤트를 비활성화합니다. 활성화할 시 variableSet, variableRead 이벤트가 발생하지 않습니다.
변수 이벤트가 불필요한 경우 이 플래그를 활성화하면 약간의 성능 향상을 기대할 수 있습니다.
const session = new YaksokSession({
flags: {
'disable-variable-events': true,
},
})FEATURE_FLAG 열거형 사용하기
문자열 대신 FEATURE_FLAG 열거형을 사용하여 타입 안전하게 플래그를 설정할 수도 있습니다.
import { FEATURE_FLAG, YaksokSession } from '@dalbit-yaksok/core'
const session = new YaksokSession({
flags: {
[FEATURE_FLAG.SKIP_VALIDATE_BREAK_OR_RETURN_IN_LOOP]: true,
[FEATURE_FLAG.DISABLE_CALL_STACK_DEPTH_LIMIT]: true,
},
})