# Truffleruby에 대한 토론

**URL:** https://meta.discourse.org/t/discourse-on-truffleruby/169919
**Category:** Development
**Created:** [11월 12, 2020, 11:12오전 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919 "2020-11-12T11:12:51Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![4ong](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/4ong/32/186618_2.png) [@4ong](https://meta.discourse.org/u/4ong)
#### Post date: [11월 12, 2020, 11:12오전 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/1 "2020-11-12T11:12:51Z")

</div>

누군가 [truffleruby](https://github.com/oracle/truffleruby) 위에서 Discourse를 사용해 본 적이 있나요?  
이 방향으로 살펴볼 가치가 있을까요?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [11월 12, 2020, 11:28오전 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/2 "2020-11-12T11:28:52Z")

</div>

흥미롭네요. 왜 기여하는 대신 포크를 했을까요?

---

<div class="post-metadata">

### Author: ![4ong](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/4ong/32/186618_2.png) [@4ong](https://meta.discourse.org/u/4ong)
#### Post date: [11월 12, 2020, 11:37오전 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/3 "2020-11-12T11:37:30Z")

</div>

@merefield Truffleruby는 Oracle 팀이 개발한 [GraalVM](https://www.graalvm.org/)용 Ruby 구현체입니다. GraalVM에서 다른 언어와의 뛰어난 [성능](https://pragtob.wordpress.com/2020/08/24/the-great-rubykon-benchmark-2020-cruby-vs-jruby-vs-truffleruby/) 및 상호 운용성을 제공합니다.  
포크(fork)가 아닙니다.

Truffleruby에서 Rails를 사용해 본 경험이 있으며, 다음 주에 Discourse도 테스트해 볼 예정입니다.

추가 정보 - [Running Rack and Rails Faster with TruffleRuby - Speaker Deck](https://speakerdeck.com/eregon/running-rack-and-rails-faster-with-truffleruby)

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [11월 12, 2020, 11:43오전 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/4 "2020-11-12T11:43:49Z")

</div>

매우 흥미롭네요. 기존 Discourse 코드베이스를 큰 변경 없이 실행할 수 있을 것으로 기대하나요? 어떤 종류의 변경이 필요할까요?

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [11월 12, 2020, 11:55오전 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/5 "2020-11-12T11:55:56Z")

</div>

짧은 답변: 아니요, 현재 TruffleRuby에서는 작동하지 않습니다.

> [@Gemfile의 fast\_xor 플랫폼을 :ruby로 업데이트](https://meta.discourse.org/t/update-gemfile-fast-xor-platform-to-ruby/159064):
>
> The fast\_xor platform is listed as :mri. However, this gem appears to require C extensions but it is not specific to MRI: [discourse/Gemfile at 0c7eaa57b26a22b0d0f85957ce0720be748d1fe6 · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/0c7eaa57b26a22b0d0f85957ce0720be748d1fe6/Gemfile#L82) I have also confirmed this works on the latest TruffleRuby. Could you please update the platform to :ruby? For reference, here is a list of meanings for difference platforms:

---

<div class="post-metadata">

### Author: ![4ong](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/4ong/32/186618_2.png) [@4ong](https://meta.discourse.org/u/4ong)
#### Post date: [11월 12, 2020, 12:10오후 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/6 "2020-11-12T12:10:25Z")

</div>

@gerhard 링크를 공유해 주셔서 감사합니다. 기존 문제들을 이해하는 데 도움이 될 것 같습니다.

---

<div class="post-metadata">

### Author: ![eregon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eregon/32/188324_2.png) [@eregon](https://meta.discourse.org/u/eregon)
#### Post date: [11월 13, 2020, 6:19오후 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/7 "2020-11-13T18:19:18Z")

</div>

현재의 장애 요인은 `mini_racer`입니다. [mini\_racer: `rb\_context\_init\_unsafe': External function cannot be found. · Issue #1827 · truffleruby/truffleruby · GitHub](https://github.com/oracle/truffleruby/issues/1827) 를 참조하세요.

그럼에도 불구하고, 적어도 모든 gem이 TruffleRuby에 설치됩니다. 우리는 CI에서 이를 테스트합니다(약간 오래된 버전의 Discourse에 대해).

---

<div class="post-metadata">

### Author: ![volanar](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/volanar/32/318163_2.png) [@volanar](https://meta.discourse.org/u/volanar)
#### Post date: [8월 21, 2022, 7:49오후 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/8 "2022-08-21T19:49:38Z")

</div>

이 문제는 5일 전에 수정되었습니다.

---

<div class="post-metadata">

### Author: ![volanar](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/volanar/32/318163_2.png) [@volanar](https://meta.discourse.org/u/volanar)
#### Post date: [12월 8, 2022, 12:32오후 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/9 "2022-12-08T12:32:22Z")

</div>

불행히도 discourse가 아니라 mastodon이 truffleruby 작업을 먼저 하게 될 것 같습니다 🫥

> <https://twitter.com/eregontp/status/1588199934796365826>

---

<div class="post-metadata">

### Author: ![4ong](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/4ong/32/186618_2.png) [@4ong](https://meta.discourse.org/u/4ong)
#### Post date: [1월 4, 2023, 11:32오전 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/10 "2023-01-04T11:32:22Z")

</div>

@volanar 네 - 지금 이 질문에 다시 답할 시간이 충분하지 않아요. 회사 일이 바빠서요.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2월 10, 2023, 10:08오전 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/11 "2023-02-10T10:08:29Z")

</div>

@eregon 님이 여기 계시고, truffle에 대한 어떤 차단 요소도 인지하고 있지 않습니다. mini racer에 대한 수정 사항은 지난 해에 이미 병합되었습니다.

---

<div class="post-metadata">

### Author: ![eregon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eregon/32/188324_2.png) [@eregon](https://meta.discourse.org/u/eregon)
#### Post date: [2월 10, 2023, 12:19오후 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/12 "2023-02-10T12:19:47Z")

</div>

Brandon은 1년 전에 Discourse를 실행하기 시작했습니다:  
[https://twitter.com/brandonfish/status/1486755128577253376](https://twitter.com/brandonfish/status/1486755128577253376)  
[https://twitter.com/brandonfish/status/1519726230936993792](https://twitter.com/brandonfish/status/1519726230936993792)

기억이 맞다면, 일부 gem들이 Hash가 스레드 안전(thread-safe)하다는 것에 의존하는 것이 문제였습니다. TruffleRuby에는 이에 대한 일반적인 해결책이 있지만 아직 병합/통합되지 않았습니다. 반면, 단순히 Hash를 동시에 사용하는 것은 매우 드물게만 올바른 경우가 많으며, 이는 더 찾기 어려운 방식으로 병렬성 버그를 숨기는 결과를 초래하는 경우가 많습니다. 따라서 해당 gem들을 수정하는 것이 오히려 더 나은 방법일 수 있지만, 시간 소모가 큽니다.  
성능 벤치마킹이 필요하며, 이를 의미 있고 대표적으로 수행하려면 멀티스레드 환경에서 벤치마킹해야 합니다. 이를 위해 [A way to mark C extensions as thread-safe, so they can be executed in parallel · Issue #2136 · truffleruby/truffleruby · GitHub](https://github.com/oracle/truffleruby/issues/2136) 이 필요합니다.

---

<div class="post-metadata">

### Author: ![volanar](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/volanar/32/318163_2.png) [@volanar](https://meta.discourse.org/u/volanar)
#### Post date: [2월 10, 2023, 6:36오후 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/13 "2023-02-10T18:36:02Z")

</div>

> [@eregon](#):
>
> 기억이 맞다면, 일부 gem들이 Hash가 스레드 안전(thread-safe)하다는 점을 전제로 하고 있다는 것이 문제였습니다. TruffleRuby에는 이에 대한 일반적인 해결책이 있지만 아직 병합/통합되지 않았습니다. 반면, 단순히 Hash를 동시에 사용하는 것은 거의 항상 올바르지 않으며, 이는 종종 찾기 어려운 방식으로 동시성 버그를 숨기는 결과를 낳습니다. 따라서 해당 gem들을 수정하는 것이 오히려 더 나은 선택일 수 있지만, 시간이 오래 걸립니다.  
> 성능을 벤치마크해야 하는데, 이것이 의미 있고 대표적이려면 멀티스레드로 벤치마크해야 합니다. 이를 위해서는 [C 확장 기능을 스레드 안전으로 표시하여 병렬 실행할 수 있도록 하는 방법 · Issue #2136 · oracle/truffleruby · GitHub](https://github.com/oracle/truffleruby/issues/2136)이 필요합니다.

빠르게 해결되길 바랍니다 🫣  
truffleruby를 사용하면 discourse의 성능 지표(TTFB, 전반적인 성능 등)가 얼마나 개선될 거라고 생각하시나요?

---

<div class="post-metadata">

### Author: ![Matthias\_Schuster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/matthias_schuster/32/389927_2.png) [@Matthias\_Schuster](https://meta.discourse.org/u/Matthias_Schuster)
#### Post date: [5월 15, 2025, 4:20오후 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/14 "2025-05-15T16:20:17Z")

</div>

브랜든이 이 서버에 있나요?

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [5월 16, 2025, 9:32오전 UTC](https://meta.discourse.org/t/discourse-on-truffleruby/169919/15 "2025-05-16T09:32:57Z")

</div>

@Matthias_Schuster 빠른 검색을 하면

> **[@bjfish](https://meta.discourse.org/u/bjfish)**
>
> Software developer working on TruffleRuby.

여기 Meta에서 찾을 수 있습니다.
