技術メモ

Rack::Timeout::RequestTimeoutException の仕組み

Ruby の webserver に使われるミドルウェアである Rack に、timeout を管理する拡張 gem の rack-timeout がある。 その仕事として例えば、レスポンスを返すまでに指定した秒数以上の時間がかかる場合、その秒数で Rack::Timeout::RequestTimeoutException …

Big bag of pagesで型情報を節約する

言語実装アドベントカレンダー20174日目の記事です。 言語実装、特に動的型付け言語の実装においては、実行時に値を扱う際、値本体の他に型などのメタ情報を持たせる必要がある。 静的に解析が可能な言語と違って実行時にしか解析ができないからだ。 しかし…

Linear is Uniqueness ?

幾つかの言語では線形型システム(Linear type system)を採用することによって、線形型を持つオブジェクトを正確に一度だけ使用するということを型システム上で検査している。 それらの型情報は、メモリ管理、ファイルIOなどの資源に対するアクセスを制限す…

References will be Garbage

参照カウント方式のメモリ管理機構ではメモリ解放のプロセスを分散できるために、他のメモリ管理と比べて目に見える停止時間が少ない。 ただ、純粋な参照カウント方式では全てのオブジェクトの状態を管理することは難しくて、例えば循環参照などの問題が発生…