4년 알파 끝낸 임베디드 언어 Toit v2.0.0 공개, 회사는 2024년 문 닫고 자원봉사자가 유지
- Toit v2.0.0이 공개됨. 4년 넘는 알파 개발, 커밋 2,000개 이상, 500,000줄 이상 변경, 알파 릴리스 200회 이상을 거쳤고 그 기간에도 안정적이었음. 마지막 호환성 파괴 변경은 주변장치 API가 gpio.Pin 객체 대신 핀 번호를 직접 받는 리팩터링임
- Toitware가 2024년 문을 닫은 뒤 자원봉사자들이 오픈소스 프로젝트를 이어서 개발 중임. 원래는 클로즈드 소스로 시작했음
- 오픈소스 전환 이후 Arm 기반 EC618과 거의 모든 ESP32 변종을 지원하고, 통합 toit 명령과 데스크톱 스크립팅, 패키지 매니저 재작성, 믹스인, SDK를 다시 빌드하지 않고 펌웨어를 커스터마이즈하는 펌웨어 엔벨로프가 추가됨
- 포매터, 컴파일러 해석 개선, 추가 아키텍처 지원은 아직 PR 단계이고 다음 릴리스로 미뤄짐. 중요한 기능이 다 끝나는 시점은 오지 않는다고 판단했음
Hacker News opinions
Toit는 컴퓨터에서 스크립트 쓰고 ESP32에서 앱 돌리는 언어임. 문법 읽기 쉽고 런타임 효율적이고 도구가 서로 맞물려 돌아감. 무료 오픈소스고 자원봉사자들이 유지함.
그 설명 읽고 홈페이지도 더 뒤져봤는데 여전히 이게 뭔지 모르겠음.
Toit 만든 사람들은 크롬 V8 VM 원년 멤버들이고 Dart 공동 창업자이기도 함. 실력은 확실함.
그걸 웹사이트에 크게 박아야 함. 지금은 실체나 신뢰감이 안 느껴짐. MCU가 타깃이면 성능이랑 리소스 요구량도 앞에 내세워야 하고.
근데 그 창립자들이 회사 접힌 뒤에도 아직 참여하나? 아니면 그게 마케팅이 없는 이유일 수도 있음.
언어 튜토리얼 보면 문법이 좋음. C가 애초에 없었다면 이렇게 설계했을 것 같은 느낌임.
C가 없었어도 1958년 JOVIAL부터 시스템 프로그래밍 언어는 넘쳤음. 골라 쓸 게 많았을 거고 어떤 문법이 살아남았을지는 다른 문제임.
위키피디아 문서는 짧지만 맥락은 잘 나옴. 2019년 2월 Creandum에서 DKK 2,300만(약 350만 달러) 시드 투자를 받았고, 초기 버전은 기기에 코드 배포하려면 클라우드 등록이 필요했음.
누가 쓰고 있나? 만든 회사는 접혔는데.
아무도 안 씀. 그냥 장난감 언어임.
광고 문구 같은 게 없나? '읽기 쉬운 언어'밖에 못 봤는데 예제만 보면 Python이 더 읽기 쉬운 것 같은데.
ESP32에서 마이크로파이썬 한번 돌려봐.
Toit 장점 몇 개 붙이자면, Python보다 빠르고 벤치마크에 따라 10배까지 나옴. 실행 파일로 컴파일되고 지금 -o는 인터프리터에 바이트코드를 붙이는 수준이지만 네이티브 출력 실험도 시작했음. 객체가 해시테이블이 아니라 유연성은 떨어져도 나는 이게 더 좋고, --named=value 문법도 최고임.
Pythonic Go 느낌임. 제일 이상한 건 위치 인자가 posix 커맨드 인자처럼 생긴 것. greet name/string=World --greeting/string=Hello 같은 식인데.
--greeting이 명명 인자고 name은 위치 인자임.
익숙해지면 괜찮겠지만 임베디드 개발에서 함수 호출 문법을 혁신하는 건 좀 아닌 듯.
이 행성에 새 프로그래밍 언어는 필요 없음.
프로젝트 여러 개에 Toit 씀. Arduino, Python, Lua보다 훨씬 깔끔하고 도구가 그냥 작동함. 바이트코드가 ESP32에서 도는 게 찜찜했지만 성능 문제는 한 번도 못 느꼈음. 최근엔 Garmin 시계로 제어하는 벽시계 컨트롤러를 만들었음. 공개하자면 floitsch가 내 형이라 써야 했는데 정말 좋은 언어임.
요즘은 LLM이 잘 쓸 수 있는 언어인지가 기준 아님? 홈어시스턴트용 소형 모델이 쓸 수 있으면 유용할 텐데, 소형 LLM은 메타프로그래밍 없는 단순한 언어를 더 잘함.
맞는 지적임. LLM은 Toit 코드로 Python이나 JS만큼 학습되지 않았음. ai-instructions 스킬 없으면 예전엔 정말 못 썼는데 그 점에선 Toit가 불리함. 대신 컨테이너와 빠른 리프레시 주기가 AI 에이전트엔 신의 선물임. 버그가 나도 시스템 전체가 안 죽고 반복이 빠름. Toit엔 영리한 메타프로그래밍이 없음.
새 릴리스 발표에는 제품이 뭔지 소개를 좀 넣어줬으면.
문법은 왜 이렇게 만들었나? 이미 알려진 Python 스타일을 쓰지. MicroPython viper랑 성능 비교는?
Dart에선 JS처럼 익숙한 문법을 써야 했고 Toit에선 덜 시끄러운 문법을 실험했음. 불필요한 걸 다 걷어내고 시작했고 extends, implements 같은 건 다시 추가했지만 지금은 다른 언어가 시끄러워 보임. 성능은 프로그램에 따라 MicroPython보다 10배 빠를 때도 있고, 메서드 호출이 많은 실제 프로그램은 정적 클래스 정의 덕을 크게 봄.
이 용도엔 WebAssembly가 낫다고 봄. 새 언어가 필요한 게 아니라 임베디드용 Wasm 런타임이 필요하고, WAMR은 AOT 컴파일 모드도 있음.