Hacker News 의견
  • Go로 생성된 WASM 바이너리가 매우 큰 문제점이 있음. TinyGo는 이를 극복하지만 컴파일 속도가 느리고 라이브러리 선택에 주의가 필요함. 둘 다 극복하려면 많은 인내심이 필요함

    • Cloudflare workers에서 Go WASM을 시도하려면 바이너리 크기 때문에 구독이 필요함
    • 마지막 시도에서는 hello-world는 실행 가능했지만, 더 복잡한 것은 크기 제한을 초과했음
    • 안타까운 상황임
  • 놀라운 점임. 기억해야 할 사항:

    • Go의 웹어셈블리 작업은 Go 팀이 아닌 자원봉사자들에 의해 설계되고 구현되었음. 따라서 일정은 자원봉사자의 가용성에 따라 달라짐
  • Go 1.24 이전에도 Go 함수를 JS로 내보내는 것이 가능하지 않았는지 기억이 잘 나지 않음. 이전에 JS에서 내보낸 Go 함수를 문제없이 호출할 수 있었던 것으로 기억함

    • 새로운 WASI 기능이 이전에 비해 어떻게 개선되었는지 설명해주면 도움이 될 것임 (FFI를 통해 더 많은 유형을 지원하는 것 외에)
    • 두 번째 질문: 포인터를 정수로 캐스팅하여 문자열 및 복잡한 유형을 WASM 모듈의 인스턴스 메모리에서 추출할 수 있었음. Go에서 내 유형의 이진 표현이 안정적임이 보장된다면, goos=wasip1을 사용할 때 생성된 WASM 모듈에 포인터를 전달하는 이 방법이 여전히 유효한지 궁금함
  • 메인 패키지에서 대문자로 시작하는 모든 함수를 내보내는 것이 더 "Go"스러웠을 것 같음. 내보내기는 언어에서 일반적으로 작동하므로 소문자로 시작하는 것을 명시적으로 이름 지정할 때만 컴파일러 지시문을 사용하는 것이 좋음

    • 이는 기존 cgo 내보내기 방식과 동일함. 이전의 예시를 따르는 것임. 사용성은 여전히 언어 외부에 있음
  • WASM 컴포넌트 모델과의 작업에 대한 언급이 없음

  • Go와 WASM의 가비지 컬렉션은 어떻게 작동하는지 궁금함

  • 강력한 타입과 뛰어난 WASM 지원을 갖춘 저수준 언어가 있었으면 좋겠음

  • 호스트 프로그램에서 실행 중인 WASM 모듈을 어떻게 디버그하는지 궁금함

  • 더 많은 WASM 기능에 대한 열망이 젊은 생태계를 돌이킬 수 없게 해칠까 걱정됨. Go가 WASM에 추가한 대부분의 기능은 컴포넌트 모델 제안이 이미 병합되었다면 네이티브로 수행할 수 있었음

    • 표준은 천천히 발전하고 있으며 채택이 증가함에 따라 WASI와 같은 비표준 기능을 영원히 지원해야 할 위험이 있음