タグ

RubyとParserに関するYassLabのブックマーク (23)

  • Ruby Parser開発日誌 (24-1) - parse.yが生成するノードを変える ー もしくは大規模なコードの書き換えをどう進めるか - かねこにっき

    不思議なもので、ここ数年は12月になるとCRuby向けに大きめなパッチを書くことが続いています。 今年はparse.yが生成するノードを一気に置き換えるかなという気持ちになり、粛々と作業をしています。 parserの生成するノードを変更するということは、当然そのノードを扱うコンパイラ(ファイルでいうとcompile.c)も書き換える必要があります。 できればparserだけいじって生きていきたいんだけどなと思ったりもしますが、コンパイラはコンパイラでいじってみるといろいろ知らなかったことがあって面白いんですよ。 という話をとあるコミッターにしたところ、「その感動や楽しさ、その時に考えたことをちゃんと記事にして公開しないとダメですよ。パッチが完成してから記事をブラッシュアップして公開しようとか考えていると思うんですが、それだと新鮮さがなくなるのでダメです。その日その日の出来事をちゃんと記事に

    Ruby Parser開発日誌 (24-1) - parse.yが生成するノードを変える ー もしくは大規模なコードの書き換えをどう進めるか - かねこにっき
    YassLab
    YassLab 2025/12/13
    “できればparserだけいじって生きていきたいんだけどなと思ったりもしますが、コンパイラはコンパイラでいじってみるといろいろ知らなかったことがあって面白いんですよ”
  • Herb - Powerful and seamless HTML-aware ERB parsing and tooling. | Herb

    HTML-awareIntelligently recognizes and navigates HTML structure within ERB templates, ensuring precise parsing across interleaved markup and Ruby code. Built on PrismPowered by Prism, Ruby's new official default parser as of Ruby 3.4. Prism is designed to be error-tolerant and is adopted by major Ruby runtimes including CRuby, JRuby, TruffleRuby.

    YassLab
    YassLab 2025/09/27
    “Powerful and seamless HTML-aware ERB parsing and tooling. Next-generation HTML+ERB parsing ecosystem for smarter developer tooling.”
  • はじめての技術同人誌づくり - かねこにっき

    技術書典18にあわせて初めて同人誌を作ったのでその振り返りなどをしたいと思います。 今回作った同人誌「LR parser入門」の詳しい話などは前回のブログにまとまっています。 yui-knk.hatenablog.com 技術同人誌をつくることになったきっかけ 今年の2月上旬に友人から誘われたのがきっかけで同人誌を書くことになりました。 「今回自分が当選するかわからないから、かねこも申し込みをしてくれると安心」という話から、「かねこが申し込まない場合、自分のブースをかねこのを出すスペースにする。そこにがなかったら空のスペースが爆誕する」という流れになって、あまりにも怖いので技術書典18に申し込みをすることになりました。 LR parserに関する技術同人誌は作ってみたいと思っていたし、ちょうどIELR parserについてまとまった文書を書いておかないとなと思っていたのでいい機会ではあ

    はじめての技術同人誌づくり - かねこにっき
    YassLab
    YassLab 2025/07/14
    “本作りは苦しいけど面白い。そんな気持ちになってしまったというのが正直な感想です。 今回頒布した「LR parser入門」については適宜増刷して各種Rubyのイベントなどに持っていこうと思っています”
  • Ruby 3.4正式リリース。YJITコンパイラの速度向上とメモリ削減、新パーサPrismがデフォルトに

    Ruby開発チームは2024年12月25日、Ruby 3.4.0の正式リリースを発表しました。 Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっており、2024年も予定通りに新バージョンが登場しました。 Ruby 3.4ではJITコンパイラとして搭載されているYJITの速度向上と使用メモリ削減が実現されました。 Ruby 3.1でメインラインにマージされたYJITコンパイラは、ECサイト構築サービスを提供するShopifyが、大規模なRailsアプリケーションにおいてより高い性能向上を目指して開発したJITコンパイラです。 Ruby 3.4でのYJITは、x86-64とarm64の両方のプラットフォームにおいてほとんどのベンチマークのパフォーマンスが向上したこと、メタデータの圧縮と統一的なメモリ使用量制限によりメモリ使用量が削減されたことが報告されています。 「it

    Ruby 3.4正式リリース。YJITコンパイラの速度向上とメモリ削減、新パーサPrismがデフォルトに
    YassLab
    YassLab 2025/01/07
    "書きかけのコードのような不完全なコードであっても可能な限り解析できるエラートレラント性、様々な実装において利用しやすいような移植性、長期的に使い続けられるようなメンテナンス性のそれぞれを十分に満たす"
  • RubyKaigi2024に参加してきました⛱️

    2024年5月15〜17の3日間、沖縄県那覇市で開催されたRubyKaigi2024に参加してきました! 今年も楽しかったですね・・・! だいぶ間が空いてしまいましたが、聴講したトークや思ったことなど書いてみました。 トーク感想 Day1 The grand strategy of Ruby Parser by Yuichiro Kaneko 発表資料 Ruby3.3で導入されたパーサージェネレータであるLramaについて、どんなものなのか、それがなぜ選ばれたのか、そして現在のRubyのパーサ周りの開発がどのような状況かといった内容でした。 まずここでいうパーサとは、Rubyのコードを解釈してASTとして出力するためのものです。 出力されたASTは、主にLSPのような開発支援の外部ツール等で使われます。 Ruby3.3では、それまでのBisonに代わってLramaというRubyで書かれた新

    RubyKaigi2024に参加してきました⛱️
    YassLab
    YassLab 2024/06/04
    "2024年5月15〜17の3日間、沖縄県那覇市で開催されたRubyKaigi2024に参加してきました!今年も楽しかったですね・・・!だいぶ間が空いてしまいましたが、聴講したトークや思ったことなど書いてみました。"
  • Ruby知識ゼロから初参加したRubyKaigi 2024レポート - 共沸

    TL;DR 楽しかった! 編 おはようございます。手札事故(twitter:@hand_accident)と申します。 Ruby知識ゼロから初参加したRubyKaigi 2024レポート、略してルゼロ*1という感じでやっていきたいと思います。 < Day 0 自己紹介でもしとくか。生まれ育った愛媛県松山市*2に帰って非IT企業でパソコン係をやっている過程で、すべてが個人開発の労働環境で趣味全ブッパ技術選定をした結果HaskellとNimを書くようになりました。すこしSvelteもします。 Rubyは名前を聞いたことがあるしちょっとニッチなPythonライブラリ探そうとしたら時々検索にgemが引っかかってそちらにはあるのねえという感想を抱くなどしていましたが何の因果か触ってみるには至らず、沖縄に来て初めてコードを見たまであります。 愛媛県松山市で趣味音楽ゲーム(DDR)に高じていたところ

    Ruby知識ゼロから初参加したRubyKaigi 2024レポート - 共沸
    YassLab
    YassLab 2024/06/02
    “昨日ひたすらDDRやってたこの人喋るとこうなるんだという感嘆ですね。むしろRubyistのみなさんが知ってるyui-knkさんはこっちなのかという感慨”
  • RubyKaigi 2024 に登壇した - koicの日記

    発表について RuboCop から見た Ruby パーサーの世界の今後 廊下会議し損ねた気になり点 今後の 362 日 登壇以外に得られた会話など 今回のRubyKaigiでの気づき RubyKaigi 2024 に登壇した。 rubykaigi.org 当日の発表スライドは以下です。 発表について 今回は、RubyKaigi 2023 の帰り道に Justin Searls とばったり松駅で遭遇してからの、362 日の Rubyist 活動をストーリーにしたものでした。 もともとは、LSP の話を中心にして Prism の話は少し出るくらいという『RuboCop Evolution with LSP』というプロポーザルを出して通過したところ、Rails/OSSパッチ会で松田さんから「Lrama の話が3あって、Prism の話がないんですよ。」という感じでタイトルに Prism を入

    RubyKaigi 2024 に登壇した - koicの日記
    YassLab
    YassLab 2024/06/01
    “kaneko さんの発表にあった「Lrama (LR) は言語規則を元にパーサー実装ができるが、Prism (手書き) はパーサー実装を元に言語規則ができる」というのは、それぞれのパーサーのあり方を突いた胸に刺さる言葉だった”
  • RubyKaigi 2024が終わったのでまずはクソデカ感情の処理をさせてください - そんなことはさておいて

    次回の会場の件といい、登壇といい、DJの番といい、ほんと巨大な憑き物が落ちた— sylph01 (@s01) 2024年5月17日 タイトルの通りです。ひでえタイトルだな!!! RubyKaigi 2024の記事のPart 1の予定です。ここ最近Part 1詐欺をしすぎて以下の記事を積んでいることの認識があるのですが、2024年7月中旬までに片付けようと思います。 ここまでに積んでる記事一覧: - IETF118遠征のプラハ・クラクフの観光サイドの記事 - RubyConf Taiwan 2023のトークの技術記事 - まだ表にできない記事のレビュー対応 - RubyKaigi 2024のトークの日語版記事 下の2つを優先的に対応してIETF120に行くまでには全部消化することを目指します— sylph01 (@s01) 2024年5月19日 これのうち、RubyKaigi 2024の

    RubyKaigi 2024が終わったのでまずはクソデカ感情の処理をさせてください - そんなことはさておいて
    YassLab
    YassLab 2024/05/22
    “「parse.yは魔境!危険近づくな!!」だった時代から白笛冒険者のkanekoさんが突破口を開拓 / 「ParserKaigi」「大パーサー時代」の名に恥じない盛り上がりを見せています。「Parser界の黎明卿」の異名を追加していいですか”
  • RubyKaigi 2024 の Lightning Talks に弊社 S.H. が登壇します - ESM アジャイル事業部 開発者ブログ

    RubyKaigi 2024 の2日目に開催される Lightning Talks に弊社 S.H. が登壇します。 rubykaigi.org ここでは、登壇者の S.H. からトークの内容について軽く紹介をします。 Contributing to the Ruby Parser (S.H.) 構文解析研究部のS.H.です。『Contributing to the Ruby Parser』というタイトルでLTをします。 タイトルからわかるようにRubyのパーサーへのコントリビューションについての話です。 内容としては、私がどのようにしてparse.yへのコントリビューションをはじめたのかに始まり、parse.yからリテラルオブジェクトの生成をなくしていく対応やUniversal ParserのC APIの依存削減などを話します。 私はいかにして心配することを止め、Rubyパーサーにコント

    RubyKaigi 2024 の Lightning Talks に弊社 S.H. が登壇します - ESM アジャイル事業部 開発者ブログ
    YassLab
    YassLab 2024/05/08
    “私はいかにして心配することを止め、Rubyパーサーにコントリビューションすることを学んだか。その背景をお話しします”
  • Prism in 2024

    In Ruby 3.3.0, a new standard library was added to CRuby called Prism. Prism is a parser for the Ruby language, exposed as both a C library (optionally usable by CRuby) and a Ruby library (usable as a Ruby gem). The Prism project represents many person-years worth of effort, and is the result of a collaboration between Shopify, CRuby core contributors, other Ruby implementation authors, and Ruby t

    Prism in 2024
    YassLab
    YassLab 2024/04/30
    “LRama was a significant shift in the maintenance of the CRuby parser. Because the entire parser generation pipeline was now controlled by CRuby, it became possible to modify the grammar file in ways that were not previously possible with Bison. ”
  • Ruby のメソッド定義時に仮引数があるとき、それをカッコでくくらないのは私だけなの? - STORES Product Blog

    テクノロジー部門で Ruby インタプリタの開発をしている笹田です。RubyKaigi 2024 楽しみですね。 さて、Ruby のメソッドを定義するとき、仮引数がある場合、カッコを省略することができます。 def foo(x, y) end def bar x, y end bar の定義の方法ですね。私は好んでこの書き方をしてたんですが、同僚の遠藤さんに「そんな書き方をしているのは今時笹田だけだ」と言われてショックを受けたので、ちょっと調べてみました。 ちなみに、カッコがないと使えないメソッド定義の方法があるので、その時には涙を呑んでカッコをつけます。 def foo(kw:) # 必須キーワード引数 end def bar(&) # 無名ブロック引数 end 補足1:Ruby では「メソッド呼び出し時にカッコをつけるかどうか」にいろいろな論争がありますが、ここでは「メソッドを定義する

    Ruby のメソッド定義時に仮引数があるとき、それをカッコでくくらないのは私だけなの? - STORES Product Blog
    YassLab
    YassLab 2024/04/12
    "調査にはPrismを使ってみました。Prismいじってる遠藤さんに使い方を聞けたということもあるんですが、簡単に調査スクリプトが作れてよかったです。というかlparen_locメソッド (仮引数をくくるカッコの位置) とかすごいな"
  • GitHub - taichi-ishitani/rupkl: Pkl parser for Ruby

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - taichi-ishitani/rupkl: Pkl parser for Ruby
    YassLab
    YassLab 2024/04/05
    “You can use the methods below to load a Pkl code into a Ruby structure: ... / RuPkl.load Load the given Pkl code into a Ruby structure / RuPkl.load_file Load a Pkl code read from the given file path into a Ruby structure ”
  • Prism

    This deck presented the prism parser as Ruby World 2023.

    Prism
    YassLab
    YassLab 2024/01/28
    “This deck presented the prism parser as Ruby World 2023.”
  • 新しいRubyパーサーPrism利用時の開発体験の変化

    この記事で扱っていること 記事ではRuby 3.3で導入されたPrismという新しいパーサーについて扱っています Prismが持つ「パース時に問題が発生した場合でも可能な限り意味のある結果を返却する」という機能に着目して下記について話します Rubyを記述する際の開発者体験がどれくらい向上しているのか? 「可能な限り意味のある結果」をどうやって組み立てているのか? 最後に主テーマから外れますが、Prismの動かし方についても話しています はじめに こんにちはウォンテッドリーで推薦基盤の改善をやっているnasaです 去年の12/25にもRubyの最新バージョンがサンタさんから届きました。https://www.ruby-lang.org/ja/news/2023/12/25/ruby-3-3-0-released/ 最新バージョンのRuby 3.3.0ではPrismという新しいパーサーが導

    新しいRubyパーサーPrism利用時の開発体験の変化
    YassLab
    YassLab 2024/01/28
    “では、なぜ新しいパーサーが必要だったのでしょうか? Prismは下記の3つが開発のモチベーションとなっています: エラートレラント, ポータビリティ, メンテナンス性. それぞれ少し詳しく書いていきますね。”
  • Rubyパーサーを一新するprism(旧YARP)プロジェクトの全容と将来(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rewriting the Ruby parser | Rails at Scale 原文公開日: 2023/06/12 原著者: Kevin Newton サイト: Rails at Scale | The Ruby and Rails Infrastructure team at Shopify exists to help ensure that Ruby and Rails are 100-year tools that will continue to merit being our toolchain of choice. CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons 日語タイトルは内容に即したものにしました。 なお、記事では「パーサー

    Rubyパーサーを一新するprism(旧YARP)プロジェクトの全容と将来(翻訳)|TechRacho by BPS株式会社
    YassLab
    YassLab 2023/07/15
    “メンテナンス性のほとんどは主観に支配されているので、少なくとも客観的な測定が非常に困難: コードの読みやすさと理解のしやすさ / 貢献のしやすさ / 変更しやすさ / ドキュメント作成 / テストのしやすさ”
  • LR parser 101を完走した - ゲームリンクスの徒然なる日常

    はじめに yui-knk/lr-parser-101 というRaccを使って電卓を実装しつつ、パーサージェネレーターを利用したパーサーの作り方を学ぶチュートリアルを完走した時の覚書です。 僕個人のパーサー周りの経験としては 拡張BNF記法がちょっと読み書きできる 元々parse.yに興味があり、たまにリファクタリングのパッチを投げている Rubyソースコード完全解説 や Rubyのしくみ などを読んでRubyのパーサー周りのある程度の知識はある という感じです。 なので、どちらかというと全くの初心者という感じでもないところからの覚書になります。 LR parser 101とは? Bison Killerこと yui-knk さんが書かれた電卓を実装するチュートリアルです。 github.com Raccというパーサージェネレーターを使いつつ、パーサーの作り方を学ぶファーストステップとして非

    LR parser 101を完走した - ゲームリンクスの徒然なる日常
    YassLab
    YassLab 2023/06/10
    “LR parser 101とは? Bison Killerこと yui-knk さんが書かれた電卓を実装するチュートリアルです/ 各チャプターに sample.y というサンプルがあり、それを元にパーサーを作っていくので進めやすいのも非常に良かったです。”
  • GitHub - yui-knk/lr-parser-101

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - yui-knk/lr-parser-101
    YassLab
    YassLab 2023/06/05
    “LR parser 101 とは --- Rubyで書かれたLALR(1) パーサジェネレーター Raccを使った電卓の実装を通じて、パーサジェネレーターを利用したパーサの作り方について学びます。”
  • Ruby に >>> 演算子を実装して遊ぶ

    私は Ruby ビギナーなんですが、最近ちょっとしたきっかけがあって、Ruby に興味津々です。 そこで、Ruby(MRI)をちょっとだけ改造して遊んでみました。 Ruby に貢献!みたいな良い話ではなくて、自分の手元の Ruby に対してあんまり意味のない改造を施して、楽しいね! っていう類の話です。 ちなみに C 言語はほとんど書いたことありません。 どう遊ぶか 私はパーサーがちょっとだけ好きなので、パーサーを触ってみたいと思いました。 パーサーを触るような改造をするなら、新しい構文を追加してみるのがてっとり早そうです。その中でも二項演算子なら簡単なのではないかと考えました。 ということで、(私が日頃から書いている)JavaScript にあって Ruby にはない演算子として、>>> 演算子を実装してみることにしました。 >>> 演算子は、符号なし右シフト演算子というやつで、Java

    Ruby に >>> 演算子を実装して遊ぶ
    YassLab
    YassLab 2023/06/01
    “parse.y や lrama をもっと読み込んでいじってみたいなー / VM もちょっと気になっています。それなりに簡単にビルドできて、日本語情報も豊富なので楽しいです。いずれは Ruby に意味のある貢献ができたら良いですね。”
  • Field Report: RubyKaigi

    Product Performance, Product Scaling, & Technical Assessments

    Field Report: RubyKaigi
    YassLab
    YassLab 2023/05/20
    "The quickest way to think about the difference between these two is that Kaneko’s efforts are iterative, continuing to to generate an LR Parser / YARP, meanwhile, is a clean-room implementation of a hand-coded Recursive descent parser, which affords it even greater portability and performance"
  • RubyKaigi 2023 参加報告とちょっとエモい話 - joker1007’s diary

    RubyKaigi 2023に参加してきました。 今回は長野県の松での開催でした。 全体的な感想 今回は、会場のスポンサーブースの数や来場者が去年より格段に多く、かつてのRubyKaigiが戻ってきたことを強く感じました。 4, 5年ぶりぐらいに会う人も沢山居て、会う人会う人に「うおー、久しぶりです!」って言って回ってた気がします。 久しぶりに会う人と直接近況をやり取りできるのは、とても嬉しいことですね。 自分はあんまり写真撮らないタイプなのですが(べ物と酒は除く)、今回は割と多くの #rubyfriends 写真を撮った気がする。 それぐらいはしゃいでいたと言えるのかもしれない。 (撮った写真を了解無く上げるのは、ちょっと気になったので写真は割愛) とにかく、色々な人にまた会えたのが嬉しかった。そういうRubyKaigiでした。 セッションについて 今回は、パーサー周りのトークが妙に

    RubyKaigi 2023 参加報告とちょっとエモい話 - joker1007’s diary
    YassLab
    YassLab 2023/05/17
    “今回の主役の一人と言える、kanekoさんによるparser実装の話。 bisonというparser generatorをRubyで実装しなおしたlramaというプロダクトで置き換えるという非常にカッコいいことをやってるのが印象的”