Hamlのパーサぶっ壊れてる問題 本家のHamlは以下の入力を与えるとSyntaxErrorになる。 %div{ foo: "}" } これはHamlが単に{と}の数だけ合わせてパースしているからである。 *1 通常この問題を解決するには字句解析器を使い、現在パースしているのが何のトークンなのか判別する必要がある。 Hamlitではこの問題を解決するため、標準ライブラリとして提供されているRipperを使っている。 そのため、Hamlitでは上記の入力を以下のように正しく解釈することができる。 <div foo='}'></div> HamlのattributeがRubyの式としてvalidでない問題 上記のhamlの%divを取り除いた部分であればRubyのHashとして解釈できそうに見える。 しかし実際には以下のような入力もHamlのattributeとして有効である。*2 - has
3月末に、Hamlit v0.1.0を作りSlimやErubisより高速なHaml実装「Hamlit」をリリースしましたという記事を書いた。 haml-specを通しているのでHamlと高い互換性と持っていてかつ速いという宣言をしたものの、実際にリリースしてみると随所からバグ報告が上がり、 hamlを置き換えただけでは動かない haml-specは互換性の保証にはならず、速いのは互換性が低いからでは? このベンチはHamlitがhtmlエスケープをしていないから速いだけでは? のような声が随所から上がった。 今日、attributeのescapeに対応し、 全てのissueを潰した上で、Slimより速いベンチを出すことに成功した ので、v0.1.0での問題点やそこからの変更点などについて書きたいと思う。 v0.1.0での問題点 haml-specガバガバ問題 @k0kubun それな— 獣
slim-template/slimのcompiled benchでオリジナルのhamlに比べ8倍高速に動作するhaml実装をリリースしました。 github.com なぜ高速なHaml実装を作ったのか 個人的にhamlのシンタックスのほうが好きなので、「hamlは遅いからslimを使う」みたいな人を減らしたかったから。以前slimの普及に貢献したんだけど、気が変わったのでhamlを応援することにした。 実は他にも既にeagletmt/famlという高速なHaml実装が存在していたんだけどベンチを走らせたらslimより遅かったので、slimを打倒するべく再実装した。 どのくらいHamlより速いのか 自分の実装に都合のいいベンチマークを作るのは簡単なので、公平性を期すためにslim-template/slimのcompiled benchと同じものを使い、誰でも同じ環境が使えるtravisで
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く