タグ

ブックマーク / keens.github.io (5)

  • シャドイングの嬉しさ | κeenのHappy Hacκing Blog

    κeenです。 Rustに限った話ではないのですが、よくRustを触ってみた人がシャドイングが気持ち悪いという反応をしているのを見かけるのでシャドイングがどういう機能かを解説します。 Rustのシャドイング まずは「気持ち悪い」と言われることもあるRustのシャドイングについて。 Rustでは以下のコードが合法です。 let input = "42"; let input = input.parse::<i32>().unwrap(); // 以後、i32 型のinputが見える let result = input * 2; input という名前の変数を2回導入しています。 最初の input は &str 型で、2つ目の input は i32 型です。 このコード以降では後に定義した i32 型の方の input が有効になっています。 後から導入した変数が先にあった変数を覆い隠す

    シャドイングの嬉しさ | κeenのHappy Hacκing Blog
    bootJP
    bootJP 2020/06/21
  • 論文メモ: HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack | κeenのHappy Hacκing Blog

    G. Ottoni. “HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack,” PLDI 2018 を読んだメモ。 PLDIのaccepted paper。FacebookよりHHVMの第2世代JITエンジンで使われている手法の紹介。 Method JITでもTracing JITでもなくRegionベースでJITする話。 HHVMはHackとPHPを動かすが、Hackの型情報は捨ててしまう。Hackの型システムはunsoundらしい。世知辛い。 バイトコードインタプリタとJITでOSRして相互に実行を交代できる「よくある」JITエンジン。 HHVMのJITでは以下の4つをしている。 type specialization profile-guided optimizations side exits reg

    論文メモ: HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack | κeenのHappy Hacκing Blog
    bootJP
    bootJP 2019/02/27
  • JITあれこれ | κeenのHappy Hacκing Blog

    κeenです。遅刻してしまいましたがこのエントリーは 言語実装 Advent Calendar 2018 1日目の記事です。 最近私の観測範囲内でJITが流行っているのですが一口にJITと言っても色々あるよなーと思ったので私がJITについて知っていることをグダクダ話します。 このブログでも何度がJITや周辺技術について取り上げてますが話の流れがスムーズになるので最初から説明していきます。 2018-12-03: 加筆修正しました。差分はこちら JITって? Just in Time(コンパイル)のことで、日語にすると「間に合ってコンパイル」になりますかね。 インタプリタの高速化テクニックの1つです。 最初はインタプリタのようにコードをコンパイルせずプロセスが起動しますが、メソッドを実行するまでにはメソッドをコンパイルして、ネイティブコードで実行する方式です。 来ならJITはこのような意

    JITあれこれ | κeenのHappy Hacκing Blog
    bootJP
    bootJP 2018/12/02
  • 雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog

    κeenです。雰囲気でシェルを使ってる人が多いとのことだったので少しばかり込み入った知識を。 あと一応POSIX準拠かどうかも気にしながらやっていきます。 基礎知識編 シェルの種類 まず、POSIXにシェルが定義されています。 これに最低限の機能で準拠しているものをPOSIXシェルと呼ぶことにします。いわゆる/bin/shです。具体的な実装はbsh、ash、dashあたりでしょうか。 最低限の機能以上に色々拡張されているシェルを拡張POSIXシェルと呼ぶことにします。具体的な実装はbash、zsh、kshなどでしょうか。 ここでは触れませんがPOSIX準拠でないシェルも存在してcshやtcshなどのシェルがあります。あと確か最近話題のfishも違ったような。 さて、1つ問題になるのは普段使いのコマンドラインはおおむね拡張POSIXシェルでしょうが、サーバで使うシェルやデプロイスクリプトで呼

    雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog
    bootJP
    bootJP 2017/10/30
  • Rustで高速な標準出力 | κeenのHappy Hacκing Blog

    κeenです。Rustで何も考えずに標準出力に吐いてると遅いよねーって話です。 今回、標準出力に「yes」と1000万回出力するアプリケーションを書いてみたいと思います。 println! まあ、最初に思いつくのはこれでしょうか。

    Rustで高速な標準出力 | κeenのHappy Hacκing Blog
    bootJP
    bootJP 2017/10/06
  • 1