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 2018とは? 〜安定した進化の真の意味〜
Search
コン
August 01, 2018
Programming
3
2.1k
Rust 2018とは? 〜安定した進化の真の意味〜
コン
August 01, 2018
Tweet
Share
More Decks by コン
See All by コン
Rust's secret sauce
golddranks
1
990
Lifetime tricks for streaming & zero-allocation parsing!
golddranks
1
470
shinjuku.rs #2: ターミナル遊び
golddranks
1
880
サーバーレスRust〜AWS LambdaとRustのマリアージュ〜
golddranks
0
1.9k
Other Decks in Programming
See All in Programming
Ebitengineの1vs1ゲーム WebRTCの活用
ponyo877
0
380
The Sequel to a Dream of Ruby Parser's Grammar
ydah
1
220
Rubyのobject_id
qnighy
6
1.3k
Securify_エンジニア採用資料
3shake
0
110
Kotlin 2.0が与えるAndroid開発の進化
masayukisuda
1
420
ECMAScript、Web標準の型はどう管理されているか / How ECMAScript and Web standards types are maintained
petamoriken
3
390
Pythonで改めて考える「クラス(class)」の使いどころ
os1ma
5
1.3k
エンジニア1年目で複雑なコードの改善に取り組んだ話
mtnmr
3
2k
Perl 5 OOP機構30年史 - Perl 5's OOP Mechanism over the past 30 years
moznion
0
390
状態管理ライブラリZustandの導入から運用まで
k1tikurisu
3
470
サーバーレスで負荷試験!Step Functions + Lambdaを使ったk6の分散実行
shuntakahashi
6
1.6k
エラーレスポンス設計から考える、0→1開発におけるGraphQLへの向き合い方
bicstone
5
1.5k
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
36
2.1k
Why You Should Never Use an ORM
jnunemaker
PRO
53
8.9k
The World Runs on Bad Software
bkeepers
PRO
64
11k
What’s in a name? Adding method to the madness
productmarketing
PRO
21
3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
RailsConf 2023
tenderlove
28
810
Automating Front-end Workflow
addyosmani
1365
200k
Debugging Ruby Performance
tmm1
72
12k
Code Review Best Practice
trishagee
62
16k
Designing the Hi-DPI Web
ddemaree
278
34k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
123
18k
Transcript
RUST 2018とは? 〜 安定した進化の真の意味 〜 コンティオ プル @GolDDranks
Rustのブログのバズワードを解読しよう!
「Stability as a Deliverable」 商品化された安定性? パッケージされた安定性? 保証された安定性?
「Stability as a Deliverable」 安定性も我々が提供している機能の内の一つ
「Stability without Stagnation」 マンネリ化をせずに! とどまらずに! 常に進化していく! でも、安定性を保つ
コンパイラの更新をさり気なく ◦更新が無難なほど、 みんなが新しいバージョンに移動してくれる ◦みんなが早く新しいバージョンに 移動してくれたら新規機能を早く ◦開発していける ◦エコシステムで導入できる
どうやって? ◦一ヶ月半ごとに、新リリース! → 新機能を焦らずに。(また次があるから) ◦機能を追加しても交換性を絶対に保証する! ◦Craterというツールで全エコシステムを検査
このやり方だと、限りがある ① tryというキーワードを追加するとしよう → tryという変数名や関数名が壊れてしまう ② 言語がだんだん進化していっても、 全体像がわかりにくい
交換性を守りながら、なんとかしたい! ◦じゃー、言語の基礎的な仕組みを変えなくても、 表面的にシンタックスだけ変えれば?
「RUST 2018」へ
Rust 2018(2018/12/6、v1.31) ◦Cargo.tomlで「edition = ‘2018’」設定すれば使える ◦一番重要なこととして、「Rust 2015」と交換性が100% ◦依存しても、依存されても、 Rust 2015と2018を混ぜてリンクすることが出来る
◦cargo fixで自動的なコードマイグレーション
何が違うのか? ◦https://rust-lang-nursery.github.io/edition-guide/ を参考に!
何が違うのか? ◦主な変更 ◦モジュールシステムの簡単化 ◦async / await(非同期IOのシンタックス) ◦ライフタイムの簡単化(Non lexical lifetimes) ◦Trait
objectとTraitを明示的に区別する(dyn Trait)
「Rustはこんなに進化してきたか!」 と人に気づかせるのもポイント!
進化していくからエキサイティング! でも交換性があるから実用的。
ご清聴ありがとうございました 詳細はhttps://rust-lang- nursery.github.io/edition-guide/まで Twitter: @GolDDranks