ぶていのログでぶログ

思い出したが吉日

Rust

RubyのYAML.dumpは改行の前にスペースを置くとエスケープされる

RubyのオブジェクトをYAML.dumpしてYAMLの設定ファイルを作るというコードを書いているときに、掲題の挙動に気がついた。 通常、複数行が含まれる文字列をYAML.dumpすると |- を使った表記になる。 $ ruby -ryaml -e 'puts YAML.dump("foo" => "a\nb")' --- …

rtxを使ってstarship+asdfのプロンプトの表示が遅くなる問題を解決する

以前にstarship+asdfでプロンプトの表示が遅くなるのを改善するという記事を書いた。 この時はdirenvを使うことで解決したのだが、どうも最近再発していた。 さすがに、プロンプトの表示が遅いのはストレスなので、他のものに乗り換えるかasdfをやめるかって…

Rust: assertの出力に色を付ける

before/after cargo testで大きめの構造体をassertすると↑のbefore画像みたいにとても長い出力になる。 長すぎてどこに差分があるかわからなくてとても苦労する。 そこで、afterのように色をつけるスクリプトを作ってみた。 #!/usr/bin/env ruby require 'te…

Rustで始める自作シェル その1

この記事はRust Advent Calender 2021の8日目の記事です。 空白だったので遡って穴埋めしています。 このブログでも何度か話題にしているが、私はreddish-shellという自作シェルをOSSで開発している。 コマンドを実行するだけなら簡単ではあるものの、日常で…

Rustでmrubyの拡張を書く

reddish-shellでRustからmrubyを呼び出すことができたので、逆もできないかと思って試してみたらすんなりできたのでメモしておく。 前提: rust-mruby crateを使う mrubyのAPIをRustから呼び出すためには、mruby.hをRustで定義し直す必要がある。 拙作のrust-…

reddish-shell 開発進捗 v0.11.0 | Rust化完了

満足するところまで作れたのでv.0.11.0をマージした。 Rustで作り直す前にはあった機能を一部実装していない*1があるが、一旦区切りをつけたかったのでマージした。 割り切り重要。Done is better than perfect. いや意味するところは違うと思うけど…。 前回…

reddish-shell v0.11.0-beta4 開発進捗 | パイプライン、バックグラウンド実行、コマンド置換の実装

最近の開発状況をば。 コミット * e8e8867 Add command substitute * 3e7b5fe Moved internally reserved fd * a0c531f Improve pipeline and background * 7bb1db7 Improve background process and pipeline * 4d39b7f Replace FdSize to RawFd * 1cf7c73 I…

reddish-shell v0.11.0-beta3 開発進捗 | コマンドの実装とRust 1.56.0

今の進捗↓ コマンドの実行を実装 変数を利用できるようにした cmd1 && cmd2 と cmd1 || cmd2を実装 if/unless/while/until/for文を実装 コマンド履歴機能を有効化 Rust 1.56.0 / 2021 editionを使うようにした 最低限の機能を実装したので少しはシェルっぽく…

reddish-shell v0.11.0-beta2 開発進捗 | パーサーとレキサーの再実装完了

前回書いたとおりRustで再実装をしているのだけど、パーサーとレキサーの再実装ができた。 Rustでの再実装前と同等の機能までは実装できると思うが、%記法については実装を見送った。 github.com %記法の実装見送りについて Rubyっぽい記法を取り込みたいと…

Rustのprintln!やformat!で{}を出力する

println!やformat!のプレースホルダとして使われている {} がうまく出力できなくて悩んでいたけど、解決したのでメモしておく。 結論から書くと2つ重ねるとエスケープされるのだった。 { を出力したいなら {{ 、 } を出力したいなら}} とすればよい。

reddish-shell v0.11.0? 開発進捗 | Rustで再実装

久しぶりにreddish-shellのアップデート(?)なのだけど、Rustで再実装している。 なんでまた…っと思われるかもしれないが、意図が明確にあってそれは高速化である。 前にブログに書いたかもしれない*1けど、今のreddishは果てしなく遅い。 原因はいくつかある…

実践Rust入門を読み終えた

最近、唐突にRustに入門したくなりWebの記事やチュートリアルをあさり始めた。 いくつかサンプルなどを試したけどいまいちしっくり来なかったので、体系的に学ぶ必要があるなっと思い実践Rust入門を読んだ。 gihyo.jp 実践とついてあるだけあって、実際にど…