Bookworm: Rubocop 기반의 대규모 Ruby 코드 크롤러

[EN] A side gig for RuboCop, the Bookworm code crawler / David T. Crosby @dafyddcrosby

  • Meta는 대규모 Chef 코드베이스 관리를 위해 Rubocop 기반의 코드 크롤러 'Bookworm'을 개발했습니다.
  • Bookworm은 기존 린터의 단일 파일 분석 한계를 넘어, 코드 패턴 매칭을 통해 전체 코드베이스의 심층적인 분석과 대규모 리팩토링을 가능하게 합니다.
  • 이 도구는 코드베이스의 '낡은 코드(croft)'를 안전하게 식별하고 제거하는 데 기여하며, 대규모 Ruby 환경에서의 코드 품질 관리 및 효율성을 극대화합니다.
Unknown 2025년 05월 27일

고급 LR 파서 알고리즘 IELR의 Ripper 구현과 그 의의

[JA] The Implementations of Advanced LR Parser Algorithm / Junichi Kobayashi @junk0612

  • 본 발표는 기존 LR 파서의 한계를 극복하는 고급 파서 알고리즘인 IELR(Implementation of Advanced LR Parser Algorithm)의 이론적 배경과 Ruby용 파서 생성기 Ripper에의 실제 구현 과정을 다룹니다.
  • IELR은 이전에 읽은 토큰 정보를 활용하여 다음 토큰 예측의 정확도를 높이고, 시프트-리듀스 및 리듀스-리듀스 충돌과 같은 파싱 문제를 효과적으로 해결합니다.
  • Ripper 0.7+에 성공적으로 통합된 IELR은 루비의 복잡한 문법 구조, 특히 '4가지 do' 문제 해결에 기여할 잠재력을 보여주며, 루비 파싱의 견고성을 강화하는 데 중요한 발걸음을 내딛었습니다.
Unknown 2025년 05월 27일

GitHub Ruby 애플리케이션의 심각한 취약점 및 비밀 관리 전략

[EN] Keeping Secrets: Lessons Learned From Securing GitHub / @lyninx @Creastery

  • GitHub의 Ruby on Rails 애플리케이션에서 `send` 메서드 오용으로 인한 치명적인 취약점이 발견되어 프로덕션 환경 변수 및 민감한 비밀 정보가 노출되었습니다.
  • 이 취약점은 Marshall 역직렬화와 결합하여 원격 코드 실행(RCE)으로 이어질 수 있었으며, GitHub은 신속한 대응과 패치를 통해 위험을 완화했습니다.
  • 본 발표는 안전한 Ruby 코드 작성, 코드 스캐닝 도구 활용, 그리고 효과적인 비밀 관리 전략의 중요성을 강조합니다.
Unknown 2025년 05월 27일

루비컨프 2023 커미터스 패널: 루비의 미래를 논하다

[EN][JA] Ruby Committers and the World CRuby Committers @rubylangorg

  • 루비 핵심 개발자들이 루비의 미래 기능(Static Barrier, Namespace)과 Ruby 4.0의 변화를 논의했습니다.
  • 성능 최적화, 개발자 경험 개선, 그리고 AI 기술의 활용 가능성에 대한 심도 깊은 토론이 진행되었습니다.
  • 하위 호환성을 유지하면서도 혁신을 추구하는 루비 커뮤니티의 신중하고 열정적인 자세를 엿볼 수 있었습니다.
Unknown 2025년 05월 27일

Ruby의 네임스페이스 기능 개발 현황 및 도전 과제

[JA] State of Namespace / Satoshi Tagomori @tagomoris

  • Ruby의 네임스페이스는 애플리케이션과 라이브러리를 격리된 공간에 로드하여 버전 충돌 문제를 해결하는 기능입니다.
  • 지난 1년간 기능 구현보다 디버깅에 집중했으며, 오토로드, 상수 처리, 확장 라이브러리 로딩 등 기존 Ruby 내부 구조와의 복잡한 상호작용에서 다양한 문제에 직면했습니다.
  • 현재 일부 잔여 문제가 있지만, 개발 브랜치를 메인라인에 병합하여 Ruby 3.5 또는 4.0에 포함시키는 것을 목표로 하고 있습니다.
Unknown 2025년 05월 27일
  • 본 발표는 Ruby의 Fat Gem(사전 빌드된 라이브러리를 포함하는 Gem)이 사용자 및 개발자에게 야기하는 문제점을 지적합니다.
  • 발표자는 최신 Ruby 버전 사용 지연, 보안 취약점, 높은 유지보수 비용 등의 문제 해결을 위해 빌드 환경 자동화 시스템 도입을 제안합니다.
  • 궁극적으로 Fat Gem 사용을 중단하고 시스템 패키지 매니저를 통한 의존성 관리를 통해 루비 생태계의 선순환을 목표로 합니다.
Unknown 2025년 05월 27일

RuboCop의 새로운 플러그인 시스템, Ruby LSP 통합, 그리고 AST 파서의 진화

[JA] RuboCop: Modularity and AST Insights / Koichi ITO @koic

  • RuboCop은 비공식적인 몽키 패치 방식의 플러그인 시스템에서 LintRoller 기반의 공식적인 시스템으로 전환하여 확장성과 유지보수성을 크게 향상시켰습니다.
  • Ruby LSP와 RuboCop 내장 LSP 기능 간의 통합을 통해 코드 분석 성능을 최적화하고 Ruby 개발 환경의 일관성을 높이는 실험적 시도가 진행 중입니다.
  • Ruby 3.4 이후 `parser-gem`의 유지보수 한계로 인해 RuboCop은 `Prism` 파서를 기본으로 채택하여 최신 Ruby 문법 지원 및 파서 의존성 관리를 개선했습니다.
Unknown 2025년 05월 27일

루비 TCP 소켓에 Happy Eyeballs 알고리즘 도입 및 개선 과정

[JA] Making TCPSocket.new "Happy"! / Misaki Shioi @coe401_

  • Ruby의 `Socket.tcp` 및 `TCP_Socket.new` 메서드에 Happy Eyeballs 버전 2 알고리즘이 성공적으로 구현되었습니다.
  • 이로써 IPv6/IPv4 듀얼 스택 환경에서 연결 실패 시 지연을 줄여 효율적인 네트워크 연결을 가능하게 합니다.
  • 구현 과정에서 복잡한 상태 관리, CI 테스트 실패, 파일 디스크립터 제한 등 여러 난관을 극복하며 Ruby 3.4에 최종 반영되었습니다.
Unknown 2025년 05월 27일

초당 5만 레코드 처리: Ruby와 JRuby 이야기

[EN] 50.000 processed records per second: a CRuby & JRuby story / Cristian Planas @cristian_planas

  • 본 강연은 Ruby의 성능 및 확장성 한계에 대한 오해를 해소하고, Zendesk에서 JRuby를 활용하여 초당 5만 건의 레코드를 처리하는 고성능 ETL 서비스를 성공적으로 운영한 사례를 공유합니다.
  • 과거 Ruby의 멀티스레딩 및 메모리 관리 문제로 인한 부정적 인식을 다루며, JRuby가 제공하는 진정한 스레드와 Java 라이브러리 연동의 이점을 강조합니다.
  • 최신 Ruby의 성능 개선 노력(YJIT, Ractors 등)과 클라우드/쿠버네티스/이벤트 소싱과 같은 현대 기술 스택이 Ruby 애플리케이션의 확장성을 어떻게 향상시키는지 설명하며, 궁극적으로 개발자 생산성의 중요성을 역설합니다.
Unknown 2025년 05월 27일

루비 타입 가드와 Steep를 활용한 더 안전한 타입 체크

[JA] Introducing Type Guard to Steep / Takeshi KOMIYA @tk0miya

  • 타입 가드는 변수의 타입을 특정하게 제한하는 데 사용되는 표현식이며, Steep는 이를 지원하여 더욱 견고한 타입 체크를 가능하게 합니다.
  • TYPE for Union Types는 ActiveSupport의 present?와 같은 유니온 타입의 메서드 호출을 타입 가드로 인식하여 타입 추론을 개선합니다.
  • User Defined Type Guard는 개발자가 직접 정의한 메서드를 타입 가드로 활용할 수 있게 하여, 복잡한 비즈니스 로직에 기반한 조건부 타입 체크를 가능하게 합니다.
Unknown 2025년 05월 27일

Plume 프로젝트: SQLite를 위한 Ruby 기반 SQL 파서

[EN] Parsing and generating SQLite's SQL dialect with Ruby / Stephen Margheim @fractaledmind

  • Plume은 SQLite의 SQL 방언을 100% 호환성으로 파싱하는 것을 목표로 하는 Ruby 기반 파서입니다.
  • 기존 파서의 한계와 Rails의 실제 버그 해결에서 시작하여, SQLite 툴링 생태계의 견고한 기반을 마련합니다.
  • 순수 Ruby로 구현되어 효율성을 극대화하며, 향후 SQL 생성 및 커뮤니티 기여를 통한 확장을 목표합니다.
Unknown 2025년 05월 27일

Ruby Sorbet에서 RBS 주석을 활용한 타입 검사: Shopify의 혁신

[EN] Inline RBS comments for seamless type checking with Sorbet / Alexandre Terrasa @Morriar

  • Shopify는 Ruby 개발 경험 개선을 위해 Sorbet 타입 검사에 인라인 RBS 주석을 도입했습니다.
  • 이는 기존 Sorbet의 `sig` 문법과 별도 RBS 파일의 단점(코드 복잡성, 중복)을 해결하여 코드 가독성과 개발자 만족도를 높였습니다.
  • RBS 주석은 런타임 오버헤드 없이 정적 타입 검사를 강화하며, 자동 마이그레이션 도구 및 LSP 지원을 통해 효율적인 개발 환경을 제공합니다.
Unknown 2025년 05월 27일

Ruby 문법에서 개행(Newline)의 원리와 예외

[JA] Ruby's Line Breaks / Yuichiro Kaneko @spikeolaf

  • 본 발표는 Ruby 언어에서 개행(Newline)이 문법적으로 어떻게 처리되는지, 특히 Lexer와 Parser의 상호작용을 중심으로 분석합니다.
  • Lexer의 복잡한 `lex_state`가 개행 처리의 핵심이며, 이는 종종 개발자들에게 '혼돈의 문'으로 인식됩니다.
  • 문법 모델링을 통해 `lex_state`의 동작을 규명하고, '문(Statement)이 종료될 수 있는 곳에 개행이 있으면 문이 종료된다'는 원칙과 그 예외 사례들을 제시합니다.
Unknown 2025년 05월 27일

Ruby에서 Linux PFD(Process File Descriptor)를 활용한 프로세스 관리

[EN] Bringing Linux pidfd to Ruby / Maciej Mensfeld @maciejmensfeld

  • 본 강연은 Ruby 환경에서 멀티스레드 및 멀티프로세스 애플리케이션의 복잡한 프로세스 관리 문제를 다룹니다.
  • 기존 PID(Process ID) 방식의 한계(재사용, 시그널 경합)를 지적하고, Linux의 PFD(Process File Descriptor)를 대안으로 제시합니다.
  • PFD는 안정적인 프로세스 참조와 경합 없는 시그널 전달을 가능하게 하지만, 특정 상황(높은 프로세스 변화율, 비직계 자식 프로세스 모니터링)에 적합한 고급 도구임을 강조합니다.
Unknown 2025년 05월 27일

루비 프로젝트를 원 바이너리로 만드는 도구 'Compo'의 업데이트 및 구현 내용

[JA] The Ruby One-Binary Tool, Enhanced with Kompo / ahogappa @ahogappa

  • Compo는 루비 프로젝트를 단일 실행 파일로 묶어 배포하는 도구로, 환경 의존성 문제를 해결하고 배포 편의성을 높입니다.
  • 이전 버전의 한계(Rails 지원 불가, `require` 오버라이딩 문제)를 극복하기 위해 가상 파일 시스템과 동적 함수 주소 획득 기법을 도입했습니다.
  • 현재 Rails 프로젝트를 성공적으로 원 바이너리화하여 실행할 수 있으며, 향후 젬화 및 크로스 플랫폼 지원을 목표로 합니다.
Unknown 2025년 05월 27일