gomacro - Generics와 Macro를 지원하는 인터랙티브 Go 인터프리터/디버거

4 hours ago 2
  • Go로 구현된 거의 완전한 Go 인터프리터로, 대화형 REPL과 스크립트 실행을 모두 지원
  • 일반적인 REPL 사용에서는 Go 툴체인 없이 실행 가능하며, 런타임에 서드파티 패키지를 Import할 때만 일부 환경에서 Go 툴체인이 필요함
  • 라인 편집과 Tab 자동 완성을 제공하고, 입력한 Go 표현식/문장/함수를 즉시 평가할 수 있음
  • 단순 REPL뿐 아니라 Go Source Debugger, 스크립팅 엔진, 프로그램에 Eval() 기능을 넣기 위한 라이브러리로도 사용 가능
  • 실행 중인 Go 프로그램에 Interpreter를 임베드해 애플리케이션의 함수/변수/상수/타입을 대화형으로 노출할 수 있음
  • Go 소스 파일을 gomacro file.go로 직접 실행하거나 Unix 계열에서는 #!/usr/bin/env gomacro를 이용한 스크립트 방식 실행도 가능
  • 표준 Go보다 확장된 기능으로 Lisp 스타일 Macro, Quoting/Quasiquoting, 임의 정밀도 상수 계산 등을 제공
  • Generics도 지원하지만 아직 실험적이고 불완전하며, Import한 패키지의 Generic 선언은 현재 가져오지 못함
  • Linux/macOS/*BSD에서는 서드파티 패키지를 REPL에서 Import하면 자동 다운로드/컴파일 후 네이티브 Go Plugin으로 로드해 컴파일된 속도로 실행 가능
  • Windows/Android 등에서는 서드파티 패키지 Import 후 gomacro를 다시 컴파일해야 하는 등 절차가 더 복잡함
  • 원래는 Go에 Lisp식 Macro를 추가하는 실험에서 시작했으며, 현재도 Code Generation 도구로 활용 가능
  • 설치: go install github.com/cosmos72/gomacro@latest
  • MPL 2.0 라이선스
Read Entire Article