枕を欹てて聴く

香炉峰の雪は簾を撥げて看る

ECMAScript

YieldExpression with delegate

In the latest ECMA262 6th draft (rev15), YieldExpression with delegate detailed algorithm is defined. Reading the spec algortithm, I think this is very useful to put together iterators to make a complex iterator. edit: I've reported issues…

Polymorphic Inline Cache implementation of iv / lv5

This is a blog post for 12/22 VM advent calendar. See http://qiita.com/advent-calendar/2012/vm for more nice blog posts :) この記事は更新中です... 完成しました Introduction ECMA262 engine, iv / lv5 には, Polymorphic Inline Cache(以下PIC)が…

Introducing ibrik - code coverage tool for CoffeeScript by using istanbul

Image: © lorises 2010 Istanbul made by Krishnan Anantheswaran from the Yahoo! Cocktail team is great code coverage tool for JavaScript. (see usage by Ariya Hidayat) Internally it uses Esprima to parse JavaScript code and Escodegen to gener…

JSC Array optimization for adding new property

This is a blog post for 12/6 VM advent calendar. See http://qiita.com/advent-calendar/2012/vm for more nice blog posts :) Introduction ECMA262にとってArrayは最も重要なObjectの1つであり, loop内で高い頻度でアクセスされる性質上, Arrayの最適化…

iv / js ES.next, update for February 27, 2012 Draft

iv / js ES.next parser (my original ES.next parser, see this entry) is updated to follow February 27, 2012 Draft ArrayComprehension ArrayComprehension is supported. [ v * v for (v of [1, 2, 3])]; to [ { "type": "ExpressionStatement", "expr…

ECMAScript code generator: escodegen

Keeping Esprima core simple Esprimaのcoreをparser levelに保つということで, code generatorが単一のmoduleになりました.escodegen Install npm install escodegen example simple example: (from http://ariya.ofilabs.com/2012/02/primavera-updates-of…

Announcing Lv5 new RegisterVM

lv5がRegisterVMになりました. これを持ってversion 0.0.2とします. 次の目標は, さらなるtuning, RegExp JIT, 部分的なES.next対応の開始です. benchmark RegisterVM ============================================ RESULTS (means and 95% confidence inte…

lv5.current 2011/12/18

lv5の実装進捗 test262はもちろん全てpassしているので安心です. 8bit string is landed in lv5 「天下のJSCさんもやってないからー」と言いつつやってなかったのですが... ある日, https://lists.webkit.org/pipermail/webkit-dev/2011-November/018618.htm…

constへの異常な愛情, または私は如何にして心配するのを止めてConstDeclarationを愛するようになったか

JS Advent Calendar, オレ標準コース 1日目, id:Constellation です. あれから1年ですか... 前半で, ES.nextに導入されたDeclarationについてさっと, そして後半でタイトルの説明をします.この文書は, 2011/12/01現在のES5 Engineの実装とES.next draftに基…

ES.next parser / lexer in JS

現時点でのdraftに対応したES.nextのparser / lexerをJSで書きました.iv / js, ES.next testASTを表示します. BNF baseの方を信用したので, super()とかはSyntax Errorとします. BNFはdraftと ECMAScript 6th の構文をまとめてみた - hogehoge @teramako を…

iv / lv5, ECMA262 5.1th full support

https://github.com/Constellation/iviv / lv5というECMA262 5.1th完全準拠を目指したengineを書いておりました (highly inspired from V8, JSC)で, もうほぼ仕様準拠しておりました, が, 正規表現のみJSCREを使っていて, そこだけECMA262と挙動が異なってい…

Let's WeakMap

ES.nextとして入っていて, ECMAScript 6にも入りそうな気配がするWeakMap. という訳で. WeakMapとは WeakMapとは, harmony:weak_maps [ES Wiki] keyへの参照が弱参照 keyが任意のObject valueはなんでもあり というものです.弱参照であるため, WeakMapのkey…

固定長配列

id:uupaa さんが固定長配列があるといいなあと思う時があるという話を受けて. 食いついてしまいましたー... 固定長配列 ECMA262 5.1thにおいては固定長配列を利用することができます. Arrayのlengthの[[Writable]]をfalseにしてしまえばいいですー! 仕様では…

iv / lv5 VM engine

『ゆるゆり』 のOPが頭から離れなかったのですが, 最近EDも頭から離れなくなってきました...https://github.com/Constellation/iviv / lv5のVM engine化がとりあえず完了し, byte codeにcompileしてstack VMで実行するengineになりました!! 今まで「ECMAScri…

decodeURIComponentのもろもろについて

追記1 SpiderMonkeyのサロゲートエリアのbug issue は修正されました! (該当commit) 記事の一番下を御覧ください. 追記2 V8のサロゲートエリアのbug issue は修正されました!(該当commit)これで以下の記事のサロゲートエリアのbugはV8, SpiderMonkey, JSCで…

vs UTF-8, UTF-16, UCS4

前置き おはミルキィ! ChromeFullFeedが公開停止になった話を前置きとして書いていたのですが, あまり関係がないのと, 長くなりそうになってきたので, 別の記事に分けました. http://d.hatena.ne.jp/Constellation/20110530/1306701693 概要 という前置きで.…

subsetじゃない悲しい話 (JSON編)

JSON編以外はありません. Edge case "JSON: The JavaScript subset that isn't Timeless" URL2011-05-16 15:49:26 via PNBT このような記事が JSON: The JavaScript subset that isn't — Timelessつまり, LineTerminatorに\u2028 / \u2029が含まれない(JSON)…

Function.prototype.bindは何がいいのか

ES5からFunction.prototype.bindが入りました. これに準ずるものは数々のFrameworkで提供され続けてきたので, あまり馴染みの無さはないのではないでしょうか. このFunction.ptototype.bindは実はとても面白いので. 結論から言えば, Function.prototype.bind…

ES5, Property Descriptor解説

JavaScript Advent Calendar 2010 6日目のid:Constellationです.ECMAScript5になって大きく変更されたといえば, strict mode, early error, Object extras, そしてProperty Descriptorの概念です. ということで今回はES5 PropertyDescriptorについてまるっと…

Re-Implement ECMA262 5th Engine@Firefox Developers Conference 2010

LTで話してきました. Constなんとか Constellation です. Firefox Developers Conference, 素晴らしい方々とお会いできて大変楽しかったです. ありがとうございました.Re-Implement ECMA262 5th Engine - Constellation Scorpiusこれが当日のLTの資料です. …

ECMA262 5th specification for Kindle

強烈な物欲によってKindleを購入し, 楽しくて仕方ないです. さっそくいろいろ読んでいます. 青空文庫も読めたり(pdf化), サクサク動いて, とても軽い + 小さい. とっても楽しい.が, 事前に聞いていたように, 確かに字の小さなPDFを見る際にはなかなか厳しい.…

Math.random

JavaScriptのMath.random()のばらつき具合。 『JavaScript Math.random Test』 URL2010-10-06 17:21:54 via webで気になったので. ばらつきは上記のページで試してみるとして. まず, ES5thのMath.randomはimplementation-dependentです. 15.8.2.14 random ()…