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
How to specify `frozen_string_literal: true`
Search
Kazuhiro NISHIYAMA
September 19, 2017
Technology
1
360
How to specify `frozen_string_literal: true`
RubyKaigi 2017 の LT での発表資料です。
Kazuhiro NISHIYAMA
September 19, 2017
Tweet
Share
More Decks by Kazuhiro NISHIYAMA
See All by Kazuhiro NISHIYAMA
docs.ruby-lang.org/ja/ の生成方法を変えた
znz
0
18
Ubuntuのriscv64版をqemuで動かした
znz
0
25
lilo.linux.or.jpをbusterからbullseyeに上げた
znz
0
36
小規模個人アプリをRails 7.xにバージョンアップした話
znz
0
26
Ruby リファレンスマニュアル改善計画 2022 進捗報告
znz
0
86
Rubyist Magazine Reboot
znz
0
97
History of Japanese Ruby reference manual, and future
znz
0
1.5k
qemuのriscv64にDebianを入れてみた
znz
0
89
systemd 再入門
znz
0
310
Other Decks in Technology
See All in Technology
大規模ドラレコデータ収集・機械学習基盤を支える AWS CDK 〜導入・運用事例紹介〜
pemugi
0
110
ACRiルーム最新情報とAMD GPUサーバーのご紹介
anjn
0
150
ここがすごいよ! AWS Systems Manager!
saichan11
0
1.8k
コンテナ・K8s研修 - 後半 Kubernetes 基礎&ハンズオン【MIXI 24新卒技術研修】
mixi_engineers
PRO
1
120
初中級者用如何使用backlog -VALE TUDOEDITION-
in0u
0
140
20240724_cm_odyssey_hibiyatech
hiashisan
0
110
開発と事業を繋ぐ!SREのオブザーバビリティ戦略 ~ Developers Summit 2024 Summer ~
leveragestech
0
630
DevIO2024_レガシー運用からの脱却 -クラウド活用の実践事例とベストプラクティス-
jun2882
0
210
AI研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
130
公共領域から学ぶ クラウド移行についてエンジニアが意識していること
kawakawa2222
0
140
セキュリティ研修 Day1【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
160
「単なる OAuth 2.0 を認証に使うと、車が通れるほどのどでかいセキュリティー・ホールができる」のか検証してみた
terara
0
380
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
219
8.8k
GraphQLとの向き合い方2022年版
quramy
36
13k
Faster Mobile Websites
deanohume
303
30k
4 Signs Your Business is Dying
shpigford
178
21k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
52k
Building Adaptive Systems
keathley
34
2k
We Have a Design System, Now What?
morganepeng
46
7k
Designing for Performance
lara
604
67k
Designing Experiences People Love
moore
136
23k
Clear Off the Table
cherdarchuk
89
320k
Optimising Largest Contentful Paint
csswizardry
18
2.6k
Pencils Down: Stop Designing & Start Developing
hursman
118
11k
Transcript
How to specify frozen_string_literal: true Kazuhiro NISHIYAMA RubyKaigi 2017 LT
2017/09/19 Powered by Rabbit 2.2.1
self.introduce One of Ruby committers Twitter, GitHub: @znz 1/12
What’s frozen_string_literal magic comment Specify string literals are frozen or
not per fle Frozen string literals are faster Generate less objects Reduce GC 2/12
Example After coding if exist example: # -*- coding: utf-8
-*- # frozen_string_literal: true p ''.frozen? #=> true 3/12
Past release Add frozen_string_literal: false for almost *.rb fles when
Ruby 2.3.0 For compatibility with --enable=frozen-string- literal command line option of ruby 4/12
Changes in this year Recent Ruby programs tend to specify
true, but ruby standard libraries are false. So I changed to frozen_string_literal: true in some fles which assigned to no maintainer in doc/ maintainers.rdoc. 5/12
Review points before change Almost RuntimeError: can't modify frozen String
points are: String#<< bang methods (e.g. String#sub!) 6/12
Overlooked modifcation IO#read(length, out_buffer) this buffer is overlooked 7/12
Find modifed string literal --debug=frozen-string-literal command line option is very
useful examples: ruby --debug=frozen-string-literal test.rb make test-all TESTS='-v base64' RUBYOPT=--debug=frozen-string-literal 8/12
Tests --debug=frozen-string-literal needs to run codes. So tests are very
important. 9/12
No change if can’t If no tests, there is no
need to forcibly change it. I think working codes are useful than broken faster codes. 10/12
mkmf.rb mkmf.rb has many tests But mkmf.rb is too complex
to me in a short time So I remain false 11/12
Conclusion No tests may overlook modifcations Use frozen_string_literal: true if
you can You can use frozen_string_literal: false in some cases for compatibility for --enable=frozen- string-literal 12/12 Powered by Rabbit 2.2.1