# 브라우저에서 실행되는 GHC

> Clean Markdown view of GeekNews topic #24088. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=24088](https://news.hada.io/topic?id=24088)
- GeekNews Markdown: [https://news.hada.io/topic/24088.md](https://news.hada.io/topic/24088.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-11-02T13:37:06+09:00
- Updated: 2025-11-02T13:37:06+09:00
- Original source: [discourse.haskell.org](https://discourse.haskell.org/t/ghc-now-runs-in-your-browser/13169)
- Points: 1
- Comments: 1

## Topic Body

- **Haskell 컴파일러 GHC**가 이제 브라우저 내에서 **완전히 클라이언트 사이드로 실행** 가능  
- 제공된 **Haskell Playground 데모**를 통해 사용자는 별도 설치 없이 브라우저에서 코드를 실행할 수 있음  
- 이 기능은 **GHC의 WebAssembly(WasM) 백엔드 발전**을 보여주는 사례로 소개됨  
- **Brave 브라우저**에서는 잠시 멈춤 후 로드되며, 웹 워커 생성 실패 시 메인 스레드에서 코드가 실행됨  
- **Safari 브라우저**에서는 동일한 경고 메시지가 표시되지만 **Run 버튼이 비활성화**된 상태로 남음  

---
### 브라우저에서 실행되는 GHC 데모
- GHC가 **브라우저 내에서 클라이언트 사이드로 실행**되며, 서버 의존 없이 Haskell 코드를 컴파일하고 실행할 수 있음  
  - 작성자는 이를 **Haskell Playground 데모** 형태로 공개  
  - 세부 설명은 추후 별도로 제공될 예정임  
- 이 시연은 **GHC WebAssembly 백엔드의 발전 수준**을 보여주는 예시로 언급됨  

### 브라우저별 동작 보고
- **Brave 브라우저**에서는 초기 몇 초간 응답 없음 상태 후 로드 완료  
  - “웹 워커를 생성할 수 없음”이라는 메시지가 표시되며, **메인 스레드에서 코드 실행**으로 대체됨  
  - 이로 인해 **UI 멈춤 현상**이 발생할 수 있음  
- **Safari 브라우저**에서도 동일한 메시지가 표시되지만, **Run 버튼이 비활성화**되어 코드 실행이 불가능함  
- 메시지에는 **Monaco Editor** 관련 경고가 포함되어 있으며, `MonacoEnvironment.getWorkerUrl` 또는 `getWorker` 정의 필요성이 언급됨  

### 기술적 의의
- GHC가 **WebAssembly 기반으로 브라우저에서 직접 실행**된다는 점은 Haskell 개발 환경의 접근성을 높이는 변화  
- 서버 없이 **순수 클라이언트 환경에서 컴파일러 동작**이 가능해진 점이 핵심 발전 사항  
- 원문에는 추가 기술적 세부사항이나 성능 비교는 포함되어 있지 않음

## Comments



### Comment 45786

- Author: neo
- Created: 2025-11-02T13:37:06+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=45782981) 
- 실제 제목은 **“GHC now runs in your browser”** 임  

- QEMU-WASM 덕분에 이제 브라우저에서 **안 돌아가는 게 뭐가 있을까** 궁금해짐  
  비판은 아니고, 새 언어를 쉽게 배워볼 수 있는 이런 시도는 정말 좋다고 생각함  
  - 내 가설로는 이 방식이 **상당히 빠를 것** 같음. 직접 테스트해볼 가치가 있음  

- 아직 Haskell(또는 그 기반 언어)을 **완전히 부트스트랩**할 방법이 없다는 게 아쉬움  
  그래서 신뢰도 높은 Linux 배포판에서는 Haskell을 쓰기 어렵다고 느낌  
  브라우저 샌드박스에서 실행하는 건 위험을 줄이는 임시방편이지만, 소스에서 부트스트랩이 안 되면 언어를 신뢰하기 힘듦  
  - 네가 말하는 건 “**GHC Haskell**”임. 그건 주류 구현이라 언젠가 해결될 거라 봄  
    하지만 GHC 없이도 Haskell을 꽤 다룰 수 있음. 예를 들어 [MicroHs](https://github.com/augustss/MicroHs/issues/10)는 점점 강력해지고 있고, **부트스트랩 가능성**이 높다고 생각함  
  - [이 스레드](https://discourse.haskell.org/t/what-s-needed-to-bootstrap-ghc-with-hugs/6205/55)에서도 사람들이 GHC 부트스트랩을 위해 과거 빌드 과정을 재현하려고 노력 중임  
  - 예전 Hugs와 새 MicroHs를 조합하면 충분히 가능하다고 봄. 다만 커뮤니티가 그만큼 **관심을 가질지**는 모르겠음  
  - 왜 언어의 부트스트랩 가능성이 그렇게 중요한지 궁금함. 나는 안정성, 인기도, 툴체인 성숙도 정도만 본다고 생각했음  
  - GHC는 부트스트랩 없이 어떻게 컴파일되는지 궁금함. 트리에 **재현 불가능한 바이너리**가 포함된 건가? 나는 GHC를 여러 번 빌드했는데 문제없었음  

- 예전에 HP Jornada에서 Jlime Linux로 Haskell 인터프리터를 돌렸던 기억이 있음  
  수학 수업 때 수식 입력이 편해서 **공학용 계산기보다 훨씬 좋았음**  
  CF 카드에서 실행됐으니 GHC만큼 크진 않았을 텐데, 이름이 기억나지 않음  
  - 아마 [Hugs](https://www.haskell.org/hugs/)였을 것 같음  

- 정말 인상적임. 예전에 Haskell로 **수학·예술 교육용 웹사이트(mathvas.com)** 를 만든 적이 있는데, 이런 도구가 있었다면 훨씬 수월했을 것 같음  
  - Safari(iPhone)에서는 에디터에 **붙여넣기가 안 됨**  

- 맞음. 관련 프로젝트는 [haskell-miso](https://github.com/haskell-miso)에서도 볼 수 있음  

- Haskell에 익숙하지 않은 사람을 위해 설명하자면, [GHC](https://www.haskell.org/ghc/)는 Haskell의 **대표 컴파일러이자 인터랙티브 환경**임  
  - GHC(Glasgow Haskell Compiler)는 사실상 **표준 구현체**이자 언어 연구의 중심 도구임  
    하지만 기능 변화가 너무 잦고, **안정된 스타일**이 정착되지 않아 결국 Standard ML로 옮겼음  
    (그때는 타입 패밀리 관련 변화가 한창이던 시기였음)  

- 이 프로젝트가 **WasmGC를 사용하는지**, 아니면 자체 **가비지 컬렉터를 포함하는지** 궁금함  
  - WasmGC는 **lazy evaluation**과 궁합이 나쁨. Haskell의 게으른 값은 항상 힙의 클로저 형태로 존재함  
    필요할 때만 계산하고, 중복 호출을 막기 위해 **black hole**로 대체하는 구조임  
    하지만 WasmGC는 타입이 고정적이라 이런 동적 구조를 지원하기 어려움  
    간접 참조나 defunctionalization으로 해결할 수는 있지만 **성능 비용**이 큼  
    게다가 Haskell은 **finalizer**도 지원하므로 WasmGC가 이를 처리해야 함  
  - WasmGC는 아직 1.0 단계라 **C#이나 Go** 같은 언어에 필요한 GC 의미론을 다 지원하지 못함. 예를 들어 **interior pointer**를 다루지 못함  

- 이런 기능과 **Blazor Wasm** 같은 기술의 차이가 뭔지 알고 싶음. 둘 다 JS 없이 프론트엔드를 작성할 수 있게 해주는 것 같음  

- 이미 함수형 프로그래밍을 아는 사람을 위한 **실용적인 Haskell 튜토리얼**을 찾고 있음  
  모나드, 타입클래스, HKT 개념은 이해하지만, 실제로 ToDo 앱 하나도 못 짜겠음  
  - [이 튜토리얼과 쿡북](https://www.extrema.is/articles/haskell-books/haskell-tutorial-and-cookbook)이 괜찮았음. 또 [joyful.com/Haskell+map](https://joyful.com/Haskell+map)도 참고할 만함.  
    아니면 그냥 **코드를 직접 읽고**, 막히면 커뮤니티에서 도움을 받는 게 좋음  
  - 이런 수준의 사람을 위한 자료는 거의 없음. 대신 [Monday Morning Haskell 블로그](https://mmhaskell.com/blog) 시리즈가 실용 예제를 다룸  
    예를 들어 [이 글](https://mmhaskell.com/blog/2025/5/19/comparing-code-leetcode-problems-in-rust-vs-haskell)을 참고할 만함  
  - 단계별로 **Snake 게임**을 만들어보거나 [snake-fury](https://github.com/lsmor/snake-fury) 예제를 참고해볼 수 있음  
    혹은 [이 튜토리얼](https://jaspervdj.be/posts/2017-12-07-getting-things-done-in-haskell.html)처럼 작은 웹앱을 만들어보는 것도 좋음  
  - ChatGPT나 Claude에게 **이해 수준에 맞춘 설명**을 요청하는 것도 효과적임  
  - 혹시 [Real World Haskell](https://book.realworldhaskell.org/)을 시도해봤는지 물어봄
