Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RustでShell作ろう
Search
tera
December 17, 2016
Programming
0
940
RustでShell作ろう
平成28年12月17日(土): 第二回 帰ってきたhojiroLT にて話しました
tera
December 17, 2016
Tweet
Share
More Decks by tera
See All by tera
ピッてやるとシュッてなるやつを作った話
tera
0
260
Pythonを読む
tera
0
220
importを理解したかった
tera
0
660
HTTPをしゃべろう~Firefoxになるために~
tera
0
240
Other Decks in Programming
See All in Programming
dchart: charts from deck markup
ajstarks
3
990
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
CSC307 Lecture 04
javiergs
PRO
0
660
MUSUBIXとは
nahisaho
0
130
CSC307 Lecture 05
javiergs
PRO
0
500
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
250
SourceGeneratorのススメ
htkym
0
190
AI時代の認知負荷との向き合い方
optfit
0
150
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
6k
高速開発のためのコード整理術
sutetotanuki
1
390
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
380
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
170
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
BBQ
matthewcrist
89
10k
How STYLIGHT went responsive
nonsquared
100
6k
Six Lessons from altMBA
skipperchong
29
4.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
How to train your dragon (web standard)
notwaldorf
97
6.5k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
HDC tutorial
michielstock
1
360
Transcript
RustでShell作ろう
自己紹介 • 正弦波・レポート手書き学科16生 • S E C C O N
0 点 • Twitter:@tera_3939
Shellとは
Shellとは • シェル (shell) はオペレーティングシステム (OS) のユーザーのた めにインタフェースを提供するソフトウェアであり、カーネルの サービスへのアクセスを提供する。それだけではなく、この用語 は非常にゆるやかに応用され、特定のコンポーネントの周辺に構
築された任意のソフトウェアを含むこともある。例えば、ウェブ ブラウザや電子メールクライアントはHTMLレンダリングエンジ ンの「シェル」といわれることがある。OSの内部(カーネル) とユーザーの間にある外殻であることから、このように呼ばれる。 - 引用:https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB
Shellとは • シェル (shell) はオペレーティングシステム (OS) のユーザーのた めにインタフェースを提供するソフトウェアであり、カーネルの サービスへのアクセスを提供する。それだけではなく、この用語 は非常にゆるやかに応用され、特定のコンポーネントの周辺に構
築された任意のソフトウェアを含むこともある。例えば、ウェブ ブラウザや電子メールクライアントはHTMLレンダリングエンジ ンの「シェル」といわれることがある。OSの内部(カーネル) とユーザーの間にある外殻であることから、このように呼ばれる。 - 引用:https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB
例えば • cmd.exe • PowerShell • bash • fish •
MATE • Unity(Unityではない)
Rustとは
Rustとは • MozillaがC++の代替のために開発したプログラミング言語 • メモリ安全 • 並列 • はやい •
コンパイラがあたまいい
今回やったこと • “Tutorial – Write a Shell in C”のlshをRustで書いてみようとした •
https://brennan.io/2015/01/16/write-a-shell-in-c/ • 脱線したら終わらなかった • 許してほしい
lshの構造 builtinの関数 lsh_launch lsh_execute lsh_split_line lsh_read_line lsh_loop
lsh_read_line
lsh_read_line &&lsh_loop
lsh_split_line
lsh_split_line
lsh_execute
None
ビルトインコマンド • lshではcd, help, exitの三つを実装している
ビルトインコマンド • lshではcd, help, exitの三つを実装している •絶対必要なコマンドが無い
SLコマンド
SLコマンド • slはUnix系オペレーティングシステム (OS) のコマンドの一つ。 コンソール画面をアスキーアートで描かれた蒸気機関車 (SL) が 走り抜ける。 •
1987年に歌代和正によって開発され、ニュースグループの fj.sourcesに投稿された物を嚆矢とする[1]。以来、「作者不 明」として流布し、さまざまな改変バージョンが製作された。 現在Linuxなど各種Unix系OSのディストリビューション用とし て公式に採用されているものは、1993年当時東京工業大学の学 生であった豊田正史(現・東京大学准教授)によって、より派 手に改造されたバージョンである。 -引用:https://ja.wikipedia.org/wiki/Sl_(UNIX)
None
Rustで書こう • ソースコードはGitHubにある • https://github.com/mtoyoda/sl • ncursesというライブラリを使えばOK • だけど……
入れられない…… • WindowsでもUbuntuでもダメだった • Windowsはlink.exeがNon-UTF-8云々のエラーで死 • Ubuntuは今朝やったら普通に入った
代案 • SLはC言語で書かれている • RustにはC言語で書かれた関数を呼ぶ仕組みがある • RustからSL走らせる関数を呼べばOK
FFI • Foreign Function Interface (他言語関数インターフェース) • RustからC言語で書かれた関数が呼べる
やりかた
ディレクトリ構造
Cargo.tomlを編集 • build=“build.rs” • gcc=“0.3” • などを追加
build.rsを書く
よぶ
はしる
課題 • 実はデータをうまく渡してやれてない • 文字列配列の渡し方がわからない
まとめ
たすけて • 今回作ったやつのソースコード • → https://github.com/tera3939/rust_shell