jQuery1.3 がリリースされてます。

この日記はご指摘を元に再構成したものです。
ざっと見ました。

1.3β1のバグがいくつか修正されています。

  • ID,CLASSセレクタUNICODE判定で16進数と10進数の勘違い
    • 修正前: /#((?:[\w\u0128-\uFFFF_-]|\\.)+)/,
    • 修正後: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
      • uFFFE 〜 uFFFF は UCS-2(UTF-16)のBOMとしても用いられるため、利用できるコードポイントではありません。uFFEE としておくのが無難です。
      • [-] は [\-] ってエスケープしなくてもうごくようですが、直したほうがよいでしょう。
      • id:murky-satyr さんからのブクマコメントで

"エスケープしなくてもたまたま動く" ← 仕様上(ECMA-262)問題ないので「たまたま」でなく普通に動く

はい。私が間違ってました(勘違いされた方ごめんなさい。修正しました)
該当する記述は以下にありました。
http://www.ecma-international.org/publications/standards/Ecma-262.htm
 → 15.10.2.16 NonemptyClassRangesNoDash

A - character can be treated literally or it can denote a range. It is treated literally if it is the first or
last character of ClassRanges, the beginning or end limit of a range specification, or immediately
follows a range specification.

[-hoge] や [hoge-] なら、- は 範囲指定ではなく、文字そのものとして評価すると書かれています。
murky-satyr さん、ご指摘ありがとうございます。

気になる

  • クォートの正規表現が NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/ になっています。
    • これだと "don't care" が "don' で切れそうにみえます → 問題ありませんでした。
  • CSSセレクタの精度が jQuery1.2.6 の頃から向上していません。

作者のブログを読むと、

W3Cの仕様には納得がいかない,繁用機能の速度こそが重要で仕様準拠(精度)は犠牲にした」
「サポートしない(したくない)セレクタもあるし、標準には無いが、どうしても欲しい機能を独自セレクタとして実装した」

と言うことらしいのですが、

CSSセレクタの速度や精度」といった場合、作者に仕様を守る気があるのか無いのかで、言葉の意味が大きく変わってしまうので、「jQuery の速度ってのは BuzzWord なんだ」といまさら気づき(目標が突然消えてしまって)、ちょっとがっかりしました。

  • 速度: 標準規(つまりW3Cの仕様)を守った形で実装したものに対しての実行速度(厳格な実装 → 遅くなりがち)
  • 速度: 互換性のない形で実装されたものに対しての実行速度(独自実装 → 解釈次第で速くできる)
  • 精度: 実装されているセレクタ(サポートを表明しているセレクタ)がW3Cの互換性テストをクリアし正しく動くこと。
  • 精度: 標準に準拠していること(サポートしていないセレクタが少ないこと)

jQueryW3C が用意しているCSSセレクタのテストスイートを試していないようです。
独自解釈 と 標準準拠 では速度を比較する意味が無いので、今後は jQueryCSSセレクタに関する発言は控えます。

もっと気になる

if (ary instanceOf Array) が軒並み if ( Object.prototype.toString.call(array) === "[object Array]" ) に変えてあります。

jQuerysvnを検索したところ、以下の記述を見つけました。

http://dev.jquery.com/changeset/5947 で この件の修正が行われていました。

// 修正前
618    // Memory leaks appear in IE6 when applying instanceof  
619    // to the window, document or any other COM object (#3485) 
620    // http://ajaxian.com/archives/working-aroung-the-instanceof-memory-leak 
621    isFunction: function( fn ) { 
622        return !!fn && !!fn.hasOwnProperty && fn instanceof Function; 
623    }, 
624     
625    isArray: function( arr ){ 
626        return !!arr && arr.constructor == Array; 
627    },

// 修正後
618    isFunction: function( obj ) { 
619        return toString.call(obj) === "[object Function]"; 
620    }, 
621 
622    isArray: function( obj ) { 
623        return toString.call(obj) === "[object Array]"; 
624    }, 

window と document に対し、instanceof を行うとメモリリークすると言うことらしいのですが、ここで、IE6と他のブラウザで共通のコードを走らせるのは、あまり合理的ではない気がします。
メモリリークを回避するだけのために IE6 はコードを分けたほうが良いようにも思えますが、jQuery1.3 のガイドラインではそういうのは「なし」らしいので、このような実装になったのかもしれません。

# os0xさんご指摘の、hostオブジェクトの違いによる Array の判定ミスは本件の動機付けとはあまり関係ないようです。

総評

  • IE8は非サポートのまま。
  • すぐに jQuery 1.3.1 がありそう。
    • 既に svn に多くの修正が入っていた。