katsuの駄日記

Rust Book 2018 Editionを読む会 #1

表題の勉強会に出てみました。京都の烏丸御池だったので少々遠かった。

内容としては、 Rust Book の最初から2章までを解説いただいた感じ。 スライドちゃんとつくっててえらい……。

  • 最近みかけるかわいらしい蟹の名前はFerris
  • rustaceanがcを着けると甲殻類(crustaceans)だから蟹らしい?
  • expect()
  • 昔はunwrap()が使われていたが、断末魔発しないなくてデバッグで死ねたから辞めたっぽい
  • 質問
  • 2018 editionからextern crateが不要になった
  • read_line()がString返せばいいのに?
  • floatにcmpは呼べる?
    • Ordは実装されていないが、PartialOrdは実装されてる
    • NaNあるからかな?
  • PartialOrdとは?
  • コメントのネスティングができる……!!
  • D言語では /+ でコメントらしい
  • 今回の発表はslideshipというサービスを利用している
  • 土曜日開催になりそう……?

Go言語でつくるインタプリタ途中経過

ようやく半分くらいまで進みました。 いまのところ、良くできていると思ってるのですが、作者が敢えてレキサー、パーサーをそれぞれ完全に実装してから 次の処理に進むという流れにしているので、写経しながらだとちょっとしんどい(テンションが上がらない)のが難点かなぁ。 低レイヤを知りたい人のためのCコンパイラ作成入門 では、 ひとまず一通り動作するものを書いていくというスタイルで、 開発テンションという意味ではそっちの方が良い気もする。 でも、読み物としてなら、それぞれ完全に実装してから進む方が良い気もするし。 むずかしいところですな。

でもこの本、ちゃんとテスト書いてから実装を進めるといった順番で進むので、 思考パターン的にも大変に参考になるなぁ、というのが今のところの感想。 いや、Goの文法も「へー」って感じなので、わりと楽しいです。

個人的には、Rustやら、Kotlin、Pythonやらを勉強しながらこの本なので、 もう色々と文法がわからなくなってきました(笑)。 どんな言語でもコード書けちゃう人って、いったいどれだけコード書いて、自分の血肉としてるんですかねぇ……。

KOF2018に参加してきた

もう3日も前ですが、 KOF2018 に参加してきました。 いちおう、関西Debian勉強会の発表者側の体で。

一昨年参加して、2回目の参加なのですが、前回来たときよりも少し人の入りは悪かったような。 まぁ、同じ日に色々とイベントがあったようなので、ちょっと分散してしまったのかもです。 特に、北の大地から怪しげなオーラは感じとれましたね。 TeXConf2018という、KernelVMと同じくらい濃ゆそうなイベント……。

さておき、ブース番してたのであんまりセッション聞きにいったりできなかったのですが、 Netwalker実験所さんの発表だけは聞きにいってみました。 以前東海道らぐさんとかとの共催のライトニングトークで話されていた方かと記憶してますが、 よくあんなにジャンク集めて色々と試すなぁ……といった感じでした。 もうちょっと技術的な話も聞きたかったですが、動かしたマシンの紹介だけで50分な感じ。

あと、ジュンク堂が来てて、オライリー本を買うとカレンダーが付いてくるということで、 迷いに迷って、 Go言語でつくるインタプリタ を購入。 実は最近、 このPodCast の影響で RISC-VのCのコンパイラ 書いてみたりするので、結構参考になりそうだなぁ、と。 カレンダーも、最後の展示見本のだったけど無事もらえたし、内容も少し読んだ限りでは楽しそうなので、わりとよかった。

関西では、また1月に大阪でOSCがあるようで。 それまでに読み終えられるといいな……。

kotlin-nativeでHello World

あのKotlinがnativeなバイナリを吐くようになったらしいので、少しためしてみました。 公式サイト→ Kotlin/Native for Native

とりあえず、 github にツールチェーンのバイナリがあるようなので取得。 ソースコードはめっちゃ小さい(2Mとか)のに、バイナリのtarballはえらく巨大(80M超え)なので、 「なんぞ?」と思ったのですが、ソースのREADMEを読んでみたら最初のステップが 依存ファイルを取得するためにgradleを実行とか書いてあって萎える。

しかも失敗するし……。

% ./gradlew dependencies:update

FAILURE: Build failed with an exception.

* What went wrong:
Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().
> Could not create service of type PluginResolutionStrategyInternal …

malloc() の闇

どうやって辿ったか覚えてないですが、最近 The 67th Yokohama kernel reading party という動画を通勤とかの間に観てました。(通信量気にするのが馬鹿馬鹿しくなって、月20GB契約してます。) で、今日ようやく一通り(1時間半)観れたんですが、まぁおもしろいのなんの。 惜しむらくは、質問(というか、ツッコミというか茶々)の音声があんまり聞きとれないことでしょうか。 おすすめです。

しかし、邪悪なことやってますねぇ。 余ってるビットを使うとか、ArmのThumb命令へのジャンプとか連想してしまう。