언어 설정

언어 설정은 프로젝트마다 따로 저장돼요. 아래 두 곳에서 바꿀 수 있어요.

  • 새 프로젝트를 만들 때 마지막 단계인 JS(NeonJS) 설정
  • 프로젝트 탭 → 프로젝트 카드를 눌러 펼치기 → 설정 → NeonJS 카테고리

바꾼 설정은 위쪽의 저장 버튼을 눌러 저장하고, 프로젝트를 다시 컴파일하면 반영돼요. 값은 프로젝트 폴더의 config.json에 들어가요.

설정기본값설명
코드 최적화꺼짐켜면 아래 최적화 레벨에 따라 자주 실행되는 코드를 JVM 바이트코드로 컴파일해요. 꺼져 있으면 인터프리터로만 실행해요.
최적화 레벨Adaptive코드 최적화를 켰을 때의 실행 방식이에요. 아래 표를 보세요.
고급 최적화꺼짐(실험적) 컴파일된 코드를 실행 중에 모은 타입 정보로 한 번 더 최적화해요. 빨라지지만 불안정할 수 있어요.
외부 모듈 로드켜짐프로젝트 폴더의 다른 파일을 import할 수 있게 해요. 모듈 나누기를 보세요.
샌드박스 환경에서 로드켜짐프로젝트 폴더와 StarLight/modules 밖의 파일은 import하지 않아요.

최적화 레벨

레벨동작이럴 때
Interpreter바이트코드 인터프리터로만 실행해요.컴파일이 가장 빨라요. 간단한 봇에 충분해요.
Compiled모든 함수를 처음 실행하기 전에 컴파일해요.함수마다 컴파일 비용이 들어서, 휴대폰에서는 대개 Adaptive보다 느려요.
Adaptive인터프리터로 시작해서, 자주 불리는 함수와 오래 도는 반복문만 백그라운드에서 컴파일해요.계산이 많은 프로젝트에 추천해요.

팁

메시지에 답장하는 정도의 봇은 최적화 없이도 충분히 빨라요. 반복 계산이 많아 느리다고 느낄 때 코드 최적화를 켜고 Adaptive로 두세요.

실행 환경

StarLight는 프로젝트를 컴파일할 때마다 새 NeonJS 실행 환경(컨텍스트)을 만들어요.

  • 프로젝트마다 실행 환경이 따로예요. 전역 변수와 모듈의 상태는 다른 프로젝트와 공유되지 않아요.
  • 다시 컴파일하면 이전 실행 환경은 닫혀요. 변수에 담아 둔 값도 사라지니, 남겨야 할 값은 파일이나 데이터베이스에 저장하세요.
  • 한 프로젝트는 한 번에 한 작업만 실행해요. 이벤트 함수와 타이머 콜백은 차례로 실행돼요.

제한

항목StarLight의 값
실행 시간제한 없음
호출 깊이3,000 (넘으면 RangeError)
eval(), new Function()쓸 수 있어요.
Java 접근모든 클래스 (차단 목록 없음)
네트워크모든 인터넷 호스트와 127.0.0.1. 사설 주소는 안 돼요.

실행 시간에 제한이 없으니, 끝나지 않는 반복문은 프로젝트를 멈추게 해요. 그럴 때는 프로젝트를 다시 컴파일하거나 프로젝트 설정의 위험 → 프로젝트 스코프 폐기를 쓰세요. 실행 중인 코드가 그때 중단돼요. 프로젝트 스위치를 끄는 것은 새 이벤트만 막고, 실행 중인 코드와 타이머는 멈추지 않아요.