メインコンテンツまでスキップ

V8リリース v9.9

· 約4分
イングヴァール・ステパニャン([@RReverser](https://twitter.com/RReverser)) 彼の99%

4週間ごとに、私たちはV8のリリースプロセスの一環として新しいブランチを作成しています。各バージョンは、Chromeのベータマイルストーンの直前にV8のGitメインからブランチされます。本日は、新しいブランチV8バージョン9.9を発表できることを嬉しく思います。このバージョンは数週間後のChrome 99の安定版と共にリリースされるまでベータ版です。V8 v9.9には、開発者向けのさまざまな便利なツールが満載されています。この投稿では、リリースに向けたハイライトの一部をプレビューします。

JavaScript

Intl.Locale拡張

v7.4でIntl.Locale APIを導入しました。このv9.9では、Intl.Localeオブジェクトに7つの新しいプロパティを追加しました:calendarscollationshourCyclesnumberingSystemstimeZonestextInfoweekInfo

Intl.LocalecalendarscollationshourCyclesnumberingSystems、およびtimeZonesプロパティは、一般的に使用される優先識別子の配列を返し、他のIntl APIで使用することを目的としています:

const arabicEgyptLocale = new Intl.Locale('ar-EG')
// ar-EG
arabicEgyptLocale.calendars
// ['gregory', 'coptic', 'islamic', 'islamic-civil', 'islamic-tbla']
arabicEgyptLocale.collations
// ['compat', 'emoji', 'eor']
arabicEgyptLocale.hourCycles
// ['h12']
arabicEgyptLocale.numberingSystems
// ['arab']
arabicEgyptLocale.timeZones
// ['Africa/Cairo']

Intl.LocaletextInfoプロパティは、テキストに関する情報を指定するオブジェクトを返します。現在、このオブジェクトには1つのプロパティ、directionのみが含まれており、ロケール内のテキストのデフォルトの方向性を示します。これは、HTMLのdir属性CSSのdirectionプロパティで使用することを目的としています。この方向性は、文字の並び順を示し、ltr(左から右)またはrtl(右から左)のいずれかです:

arabicEgyptLocale.textInfo
// { direction: 'rtl' }
japaneseLocale.textInfo
// { direction: 'ltr' }
chineseTaiwanLocale.textInfo
// { direction: 'ltr' }

Intl.LocaleweekInfoプロパティは、週に関連する情報を指定するオブジェクトを返します。返されるオブジェクトのfirstDayプロパティは、週の最初の日を示す1から7までの数字です。1は月曜日、2は火曜日、3は水曜日、4は木曜日、5は金曜日、6は土曜日、7は日曜日を指します。返されるオブジェクトのminimalDaysプロパティは、特定の月または年で最初の週として認識されるために必要な最小日数を示します。返されるオブジェクトのweekendプロパティは、通常は2つの要素を含む整数の配列であり、firstDayと同じ形式でエンコードされます。これはカレンダーの目的で「週末」と見なされる曜日を示します。地域によって週末の日数が異なることがあり、連続しているとは限りません。

arabicEgyptLocale.weekInfo
// {firstDay: 6, weekend: [5, 6], minimalDays: 1}
// 週の最初の日は土曜日。週末は金曜日と土曜日。
// 特定の月や年の最初の週は、その月や年に少なくとも1日を含む週。

Intlの列挙

v9.9では、Intl.supportedValuesOf(code)という新しい関数を追加しました。この関数は、Intl APIでサポートされている識別子の配列を返します。サポートされているcodeの値はcalendarcollationcurrencynumberingSystemtimeZone、およびunitです。この新しいメソッドの情報により、ウェブ開発者が各実装でサポートされている値を簡単に発見できるようになります。

Intl.supportedValuesOf('calendar')
// ['buddhist', 'chinese', 'coptic', 'dangi', ...]

Intl.supportedValuesOf('collation')
// ['big5han', 'compat', 'dict', 'emoji', ...]

Intl.supportedValuesOf('currency')
// ['ADP', 'AED', 'AFA', 'AFN', 'ALK', 'ALL', 'AMD', ...]

Intl.supportedValuesOf('numberingSystem')
// ['adlm', 'ahom', 'arab', 'arabext', 'bali', ...]

Intl.supportedValuesOf('timeZone')
// ['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', ...]

Intl.supportedValuesOf('unit')
// ['acre', 'bit', 'byte', 'celsius', 'centimeter', ...]

V8 API

git log branch-heads/9.8..branch-heads/9.9 include/v8\*.hを使用して、APIの変更点の一覧を取得してください。