This page is only available in Korean for now.
언어 설정
언어 설정은 프로젝트마다 따로 저장돼요. 아래 두 곳에서 바꿀 수 있어요.
- 새 프로젝트를 만들 때 마지막 단계인 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. 사설 주소는 안 돼요. |
실행 시간에 제한이 없으니, 끝나지 않는 반복문은 프로젝트를 멈추게 해요. 그럴 때는 프로젝트를 다시 컴파일하거나 프로젝트 설정의 위험 → 프로젝트 스코프 폐기를 쓰세요. 실행 중인 코드가 그때 중단돼요. 프로젝트 스위치를 끄는 것은 새 이벤트만 막고, 실행 중인 코드와 타이머는 멈추지 않아요.