Fwd: Language Size (was Re: [TLUG]: ECMAScript ("Javascript") Version 4 -FALSE ALARM)

Yehuda Katz wycats at gmail.com
Wed Oct 31 04:28:20 PDT 2007


---------- Forwarded message ----------
From: Yehuda Katz <wycats at gmail.com>
Date: Oct 31, 2007 3:58 AM
Subject: Re: Language Size (was Re: [TLUG]: ECMAScript ("Javascript")
Version 4 -FALSE ALARM)
To: Lars Hansen <lhansen at adobe.com>

A massive chunk of these are the duplicate methods in the intrinsic
namespace. If you remove those, you actually have very few new classes or
methods (see below). Another big chunk is getters and setters that represent
old ES3 methods pre-getters and setters.

Specifically, removing the duplicate intrinsic methods (but not removing
replacing getters/setters, etc.), there are 256 new items on this list, vs.
276 old methods. Hardly "bloated".


* V __ECMASCRIPT_OBJECT__                        [version number]
* V __ES4__                                      [reserved namespace
constant]
* V __ES4__::intrinsic                           [reserved namespace
constant]
* V __ES4__::meta                                [reserved namespace
constant]
* V __ES4__::reflect                             [reserved namespace
constant]


 C Object
 Ms  Object
 Ms  meta::invoke
 Vs  length
 Vs  prototype
 Mp  toString
 Mp  toLocaleString
* Mp  toJSONString
 Mp  hasOwnProperty
 Mp  isPrototypeOf
 Mp  propertyIsEnumerable


 C Function
 Ms  Function
 Ms  meta::invoke
 Vs  length
 Vs  prototype
* Ms  apply
* Ms  call
 M   meta::invoke
 V   length
 V   prototype
 Mp  toString
 Mp  apply
 Mp  call


* C __ES4__::GenericFunction                     [proposed, not fully
spec'd]


 C Array
 Ms  Array
 Ms  meta::invoke
 Vs  length
* Ms  concat
* Ms  every
* Ms  filter
* Ms  forEach
* Ms  indexOf
* Ms  join
* Ms  lastIndexOf
* Ms  map
* Ms  pop
* Ms  push
* Ms  reverse
* Ms  shift
* Ms  slice
* Ms  some
* Ms  sort
* Ms  splice
* Ms  unshift
 Mp  concat
 Mp  every
 Mp  filter
 Mp  forEach
 Mp  indexOf
 Mp  join
 Mp  lastIndexOf
 Mp  map
 Mp  pop
 Mp  push
 Mp  reverse
 Mp  shift
 Mp  slice
 Mp  some
 Mp  sort
 Mp  splice
 Mp  unshift
 M   get length
 M   set length

 C String
 Ms  String
 Ms  meta::invoke
 Vs  length
 Ms  fromCharCode
* Ms  charAt
* Ms  charCodeAt
* Ms  concat
* Ms  indexOf
* Ms  lastIndexOf
* Ms  localeCompare
* Ms  match
* Ms  parseJSON
* Ms  replace
* Ms  search
* Ms  slice
* Ms  split
* Ms  substring
* Ms  toLowerCase
* Ms  toLocaleLowerCase
* Ms  toUpperCase
* Ms  toLocaleUpperCase
* Ms  trim
 Mp  charAt
 Mp  charCodeAt
 Mp  concat
 Mp  indexOf
 Mp  lastIndexOf
 Mp  localeCompare
 Mp  match
 Mp  parseJSON
 Mp  replace
 Mp  search
 Mp  slice
 Mp  split
 Mp  substring
 Mp  toLowerCase
 Mp  toLocaleLowerCase
 Mp  toUpperCase
 Mp  toLocaleUpperCase
 Mp  trim
 M   get length


+ C __ES4__::string
* Ms  string
* Ms  meta::invoke
* Vs  length
* Ms  fromCharCode
* Ms  charAt
* Ms  charCodeAt
* Ms  concat
* Ms  indexOf
* Ms  lastIndexOf
* Ms  localeCompare
* Ms  match
* Ms  parseJSON
* Ms  replace
* Ms  search
* Ms  slice
* Ms  split
* Ms  substring
* Ms  toLowerCase
* Ms  toLocaleLowerCase
* Ms  toUpperCase
* Ms  toLocaleUpperCase
* Ms  trim
* M   get length
* M   get


 C Boolean
 Ms  Boolean
 Ms  meta::invoke
 Vs  length
 Mp  toString
* Mp  toJSONString
 Mp  valueOf


+ C __ES4__::boolean
* Ms  boolean
* Ms  meta::invoke
* Vs  length


 C Number
 Ms  Number
 Ms  meta::invoke
 Vs  length
 Vs  MAX_VALUE
 Vs  MIN_VALUE
 Vs  NaN
 Vs  NEGATIVE_INFINITY
 Vs  POSITIVE_INFINITY
 Mp  toString
 Mp  toLocaleString
* Mp  toJSONString
 Mp  valueOf
 Mp  toFixed
 Mp  toExponential
 Mp  toPrecision


* C __ES4__::byte
 Ms  meta::invoke
 Vs  length
 Vs  MAX_VALUE
 Vs  MIN_VALUE


* C __ES4__::int
* Ms  int
* Ms  meta::invoke
* Vs  length
* Vs  MAX_VALUE
* Vs  MIN_VALUE


* C __ES4__::uint
* Ms  uint
* Ms  meta::invoke
* Vs  length
* Vs  MAX_VALUE
* Vs  MIN_VALUE


+ C __ES4__::double
* Ms  double
* Ms  meta::invoke
* Vs  length
* Vs  MAX_VALUE
* Vs  MIN_VALUE
* Vs  NaN
* Vs  NEGATIVE_INFINITY
* Vs  POSITIVE_INFINITY
* Vs  E
* Vs  LN10
* Vs  LN2
* Vs  LOG2E
* Vs  LOG10E
* Vs  PI
* Vs  SQRT1_2
* Vs  SQRT2


* C __ES4__::decimal
* Ms  int
* Ms  meta::invoke
* Vs  length
* Vs  MAX_VALUE
* Vs  MIN_VALUE
* Vs  NaN
* Vs  NEGATIVE_INFINITY
* Vs  POSITIVE_INFINITY
* Vs  E
* Vs  LN10
* Vs  LN2
* Vs  LOG2E
* Vs  LOG10E
* Vs  PI
* Vs  SQRT1_2
* Vs  SQRT2


 C Date
 Ms  Date
 Ms  meta::invoke
 Ms  now
 Vs  parse
 Vs  UTC
 Vs  length
 Mp  toString
 Mp  toDateString
 Mp  toTimeString
 Mp  toLocaleString
 Mp  toLocaleDateString
 Mp  toLocaleTimeString
 Mp  toUTCString
* Mp  toISOString
* Mp  toJSONString
 Mp  valueOf
 Mp  nanoAge
 Mp  getTime
 Mp  getFullYear
 Mp  getUTCFullYear
 Mp  getMonth
 Mp  getUTCMonth
 Mp  getDate
 Mp  getUTCDate
 Mp  getDay
 Mp  getUTCDay
 Mp  getHours
 Mp  getUTCHours
 Mp  getMinutes
 Mp  getUTCMinutes
 Mp  getSeconds
 Mp  getUTCSeconds
 Mp  getMilliseconds
 Mp  getUTCMilliseconds
 Mp  getTimezoneOffset
 Mp  setTime
 Mp  setMilliseconds
 Mp  setUTCMilliseconds
 Mp  setSeconds
 Mp  setUTCSeconds
 Mp  setMinutes
 Mp  setUTCMinutes
 Mp  setHours
 Mp  setUTCHours
 Mp  setDate
 Mp  setUTCDate
 Mp  setMonth
 Mp  setUTCMonth
 Mp  setFullYear
 Mp  setUTCFullYear
* M   get time
* M   get year
* M   get month
* M   get UTCMonth
* M   get date
* M   get UTCDate
* M   get day
* M   get UTCDay
* M   get hours
* M   get UTCHours
* M   get minutes
* M   get UTCMinutes
* M   get seconds
* M   get UTCSeconds
* M   get milliseconds
* M   get UTCMilliseconds
* M   set time
* M   set year
* M   set fullYear
* M   set UTCFullYear
* M   set month
* M   set UTCMonth
* M   set date
* M   set UTCDate
* M   set hours
* M   set UTCHours
* M   set minutes
* M   set UTCMinutes
* M   set seconds
* M   set UTCSeconds
* M   set milliseconds
* M   set UTCMilliseconds


 C RegExp
 Ms  RegExp
 Ms  meta::invoke
 Vs  length
 Mp  toString
 Mp  exec
 Mp  test
* M   meta::invoke
 V   source
 V   global
 V   ignoreCase
 V   multiline
* V   extended
* V   sticky
 V   lastIndex


 C Error
 Ms  Error
 Ms  meta::invoke
 Vs  length
 V   name
 V   message

 C EvalError extends Error
 Ms  EvalError
 Ms  meta::invoke
 Vs  length


 C RangeError extends Error
 Ms  RangeError
 Ms  meta::invoke
 Vs  length


 C ReferenceError extends Error
 Ms  ReferenceError
 Ms  meta::invoke
 Vs  length


 C SyntaxError extends Error
 Ms  SyntaxError
 Ms  meta::invoke
 Vs  length


 C TypeError extends Error
 Ms  TypeError
 Ms  meta::invoke
 Vs  length


 C URIError extends Error
 Ms  URIError
 Ms  meta::invoke
 Vs  length


* C __ES4__::EncodingError extends Error         [for JSON]
* Ms  EncodingError
* Ms  meta::invoke
* Vs  length


* C __ES4__::Name
* Ms  Name
* Ms  meta::invoke
* Mp  toString
* Mp  valueOf
* V   qualifier
* V   identifier


* C __ES4__::Namespace
* Mp  toString


* C __ES4__::NamespaceSet                        [TBD -- small class]


* C __ES4__::NamespaceSetList                    [TBD -- small class]


* C __ES4__::Map.<K,V>
* Ms  Map
* Mp  size
* Mp  get
* Mp  put
* M   phas
* Mp  remove
* M   iterator::get
* M   iterator::getKeys
* M   iterator::getValues
* M   iterator::getItems


* C __ES4__::Vector.<T>
* Ms  Vector
* Ms  meta::invoke
* Vs  length
* Mp  concat
* Mp  every
* Mp  filter
* Mp  forEach
* Mp  indexOf
* Mp  join
* Mp  lastIndexOf
* Mp  map
* Mp  pop
* Mp  push
* Mp  reverse
* Mp  shift
* Mp  slice
* Mp  some
* Mp  sort
* Mp  splice
* Mp  unshift
* M   get length
* M   set length
* V   fixed
* M   meta::get
* M   meta::set
* M   iterator::getKeys
* M   iterator::getValues
* M   iterator::getItems


* C intrinsic::ControlInspector.<T>              [may end up in reflect::]
* Ms  ControlInspector
* M   annotate
* M   getCurrentAnnotation
* M   getAnnotation


* T __ES4__::AnyNumber

* T __ES4__::AnyString


* T __ES4__::AnyBoolean


* T __ES4__::EnumerableId

* I reflect::Type
* M   canConvertTo
* M   isSubtypeOf


* I reflect::NominalType
* M   name
* M   superTypes
* M   [a few more here, TBD]


* I reflect::InterfaceType
* M   implementedBy


* I reflect::ClassType
* M   construct


* I reflect::AnyType


* I reflect::NullType

* I reflect::UndefinedType


* I reflect::UnionType
* M   fields
* M   members


* I reflect::RecordType
* M   construct


* I reflect::FunctionType
* M   boundThid
* M   argTypes
* M   defaultValues
* M   hasRestType
* M   returnType


* I reflect::ArrayType
* M   fields
* M   members


* I reflect::ParameterizedType


* I reflect::Field
* M   name
* M   type


* I reflect::FieldValue
* M   name
* M   value


 F eval
 F parseInt
 F parseFloat
 F isNaN
 F isFinite
 F decodeURI
 F decodeURIComponent
 F encodeURI
 F encodeURIComponent


 V Math
 V   E
 V   LN10
 V   LN2
 V   LOG2E
 V   LOG10E
 V   PI
 V   SQRT1_2
 V   SQRT2
 M   acos
 M   atan
 M   atan2
 M   ceil
 M   cos
 M   exp
 M   floor
 M   log
 M   max
 M   min
 M   pow
 M   random
 M   round
 M   sin
 M   sqrt
 M   tan

 V NaN
 V Infinity
 V undefined
* F reflect::typeOf



On 10/31/07, Lars Hansen <lhansen at adobe.com> wrote:
>
> > -----Original Message-----
> > From: es4-discuss-bounces at mozilla.org On Behalf Of Maciej Stachowiak
> > Sent: 30. oktober 2007 21:23
> >
> > By the way, I think the discussions about language size could
> > benefit from some quantitative data. I think the following
> > comparisons would be interesting:
>
> ...
>
> > 2) Size of the ES4 standard library by count of classes,
> > methods and properties.
>
> Below is a breakdown of classes (C), interfaces (I), types (T),
> functions (F), methods (M), properties (P), variables/constants (V); *
> means new in ES4, + means it replaces something else in ES3 (typically a
> "primitive value").  "s" means "static", "p" means prototype.  Based on
> current understanding; expect some minor adjustment over time.
>
> Do not count lines uncritically.  Where ES3 had prototype methods, ES4
> has intrinsic methods in addition and sometimes generic static methods
> as well (Array, String, Function), but in almost all cases, only one of
> the set has a nontrivial body and the others delegate to it.
> Furthermore, many "String" methods delegate to "string" methods, and
> there are shared prototypes (String and String; byte, int, uint, double,
> decimal, and Number; boolean and Boolean).  As a consequence, the
> footprint for the library is probably substantially smaller than it
> would appear at first glance.  (Note also that [[Construct]] and
> [[Call]] have new names but are not new.)
>
> --lars
>
>
> * V __ECMASCRIPT_OBJECT__                        [version number]
> * V __ES4__                                      [reserved namespace
> constant]
> * V __ES4__::intrinsic                           [reserved namespace
> constant]
> * V __ES4__::meta                                [reserved namespace
> constant]
> * V __ES4__::reflect                             [reserved namespace
> constant]
>
>   C Object
>   Ms  Object
>   Ms  meta::invoke
>   Vs  length
>   Vs  prototype
>   Mp  toString
>   Mp  toLocaleString
> * Mp  toJSONString
>   Mp  hasOwnProperty
>   Mp  isPrototypeOf
>   Mp  propertyIsEnumerable
> * M   intrinsic::toString
> * M   intrinsic::toLocaleString
> * M   intrinsic::toJSONString
> * M   intrinsic::hasOwnProperty
> * M   intrinsic::isPrototypeOf
> * M   intrinsic::propertyIsEnumerable
>
>   C Function
>   Ms  Function
>   Ms  meta::invoke
>   Vs  length
>   Vs  prototype
> * Ms  apply
> * Ms  call
>   M   meta::invoke
>   V   length
>   V   prototype
>   Mp  toString
>   Mp  apply
>   Mp  call
> * M   intrinsic::toString
> * M   intrinsic::apply
> * M   intrinsic::call
>
> * C __ES4__::GenericFunction                     [proposed, not fully
> spec'd]
>
>   C Array
>   Ms  Array
>   Ms  meta::invoke
>   Vs  length
> * Ms  concat
> * Ms  every
> * Ms  filter
> * Ms  forEach
> * Ms  indexOf
> * Ms  join
> * Ms  lastIndexOf
> * Ms  map
> * Ms  pop
> * Ms  push
> * Ms  reverse
> * Ms  shift
> * Ms  slice
> * Ms  some
> * Ms  sort
> * Ms  splice
> * Ms  unshift
>   Mp  concat
>   Mp  every
>   Mp  filter
>   Mp  forEach
>   Mp  indexOf
>   Mp  join
>   Mp  lastIndexOf
>   Mp  map
>   Mp  pop
>   Mp  push
>   Mp  reverse
>   Mp  shift
>   Mp  slice
>   Mp  some
>   Mp  sort
>   Mp  splice
>   Mp  unshift
>   M   get length
>   M   set length
> * M   intrinsic::concat
> * M   intrinsic::every
> * M   intrinsic::filter
> * M   intrinsic::forEach
> * M   intrinsic::indexOf
> * M   intrinsic::join
> * M   intrinsic::lastIndexOf
> * M   intrinsic::map
> * M   intrinsic::pop
> * M   intrinsic::push
> * M   intrinsic::reverse
> * M   intrinsic::shift
> * M   intrinsic::slice
> * M   intrinsic::some
> * M   intrinsic::sort
> * M   intrinsic::splice
> * M   intrinsic::unshift
>
>   C String
>   Ms  String
>   Ms  meta::invoke
>   Vs  length
>   Ms  fromCharCode
> * Ms  charAt
> * Ms  charCodeAt
> * Ms  concat
> * Ms  indexOf
> * Ms  lastIndexOf
> * Ms  localeCompare
> * Ms  match
> * Ms  parseJSON
> * Ms  replace
> * Ms  search
> * Ms  slice
> * Ms  split
> * Ms  substring
> * Ms  toLowerCase
> * Ms  toLocaleLowerCase
> * Ms  toUpperCase
> * Ms  toLocaleUpperCase
> * Ms  trim
>   Mp  charAt
>   Mp  charCodeAt
>   Mp  concat
>   Mp  indexOf
>   Mp  lastIndexOf
>   Mp  localeCompare
>   Mp  match
>   Mp  parseJSON
>   Mp  replace
>   Mp  search
>   Mp  slice
>   Mp  split
>   Mp  substring
>   Mp  toLowerCase
>   Mp  toLocaleLowerCase
>   Mp  toUpperCase
>   Mp  toLocaleUpperCase
>   Mp  trim
>   M   get length
> * M   get
> * M   intrinsic::charAt
> * M   intrinsic::charCodeAt
> * M   intrinsic::concat
> * M   intrinsic::indexOf
> * M   intrinsic::lastIndexOf
> * M   intrinsic::localeCompare
> * M   intrinsic::match
> * M   intrinsic::parseJSON
> * M   intrinsic::replace
> * M   intrinsic::search
> * M   intrinsic::slice
> * M   intrinsic::split
> * M   intrinsic::substring
> * M   intrinsic::toLowerCase
> * M   intrinsic::toLocaleLowerCase
> * M   intrinsic::toUpperCase
> * M   intrinsic::toLocaleUpperCase
> * M   intrinsic::trim
>
> + C __ES4__::string
> * Ms  string
> * Ms  meta::invoke
> * Vs  length
> * Ms  fromCharCode
> * Ms  charAt
> * Ms  charCodeAt
> * Ms  concat
> * Ms  indexOf
> * Ms  lastIndexOf
> * Ms  localeCompare
> * Ms  match
> * Ms  parseJSON
> * Ms  replace
> * Ms  search
> * Ms  slice
> * Ms  split
> * Ms  substring
> * Ms  toLowerCase
> * Ms  toLocaleLowerCase
> * Ms  toUpperCase
> * Ms  toLocaleUpperCase
> * Ms  trim
> * M   get length
> * M   get
> * M   intrinsic::charAt
> * M   intrinsic::charCodeAt
> * M   intrinsic::concat
> * M   intrinsic::indexOf
> * M   intrinsic::lastIndexOf
> * M   intrinsic::localeCompare
> * M   intrinsic::match
> * M   intrinsic::parseJSON
> * M   intrinsic::replace
> * M   intrinsic::search
> * M   intrinsic::slice
> * M   intrinsic::split
> * M   intrinsic::substring
> * M   intrinsic::toLowerCase
> * M   intrinsic::toLocaleLowerCase
> * M   intrinsic::toUpperCase
> * M   intrinsic::toLocaleUpperCase
> * M   intrinsic::trim
>
>   C Boolean
>   Ms  Boolean
>   Ms  meta::invoke
>   Vs  length
>   Mp  toString
> * Mp  toJSONString
>   Mp  valueOf
> * M   intrinsic::toString
> * M   intrinsic::toJSONString
> * M   intrinsic::valueOf
>
> + C __ES4__::boolean
> * Ms  boolean
> * Ms  meta::invoke
> * Vs  length
> * M   intrinsic::toString
> * M   intrinsic::toJSONString
> * M   intrinsic::valueOf
>
>   C Number
>   Ms  Number
>   Ms  meta::invoke
>   Vs  length
>   Vs  MAX_VALUE
>   Vs  MIN_VALUE
>   Vs  NaN
>   Vs  NEGATIVE_INFINITY
>   Vs  POSITIVE_INFINITY
>   Mp  toString
>   Mp  toLocaleString
> * Mp  toJSONString
>   Mp  valueOf
>   Mp  toFixed
>   Mp  toExponential
>   Mp  toPrecision
>   M   intrinsic::toString
>   M   intrinsic::toLocaleString
> * M   intrinsic::toJSONString
>   M   intrinsic::valueOf
>   M   intrinsic::toFixed
>   M   intrinsic::toExponential
>   M   intrinsic::toPrecision
>
> * C __ES4__::byte
>   Ms  meta::invoke
>   Vs  length
>   Vs  MAX_VALUE
>   Vs  MIN_VALUE
>
> * C __ES4__::int
> * Ms  int
> * Ms  meta::invoke
> * Vs  length
> * Vs  MAX_VALUE
> * Vs  MIN_VALUE
> * M   intrinsic::toString
> * M   intrinsic::toLocaleString
> * M   intrinsic::toJSONString
> * M   intrinsic::valueOf
> * M   intrinsic::toFixed
> * M   intrinsic::toExponential
> * M   intrinsic::toPrecision
>
> * C __ES4__::uint
> * Ms  uint
> * Ms  meta::invoke
> * Vs  length
> * Vs  MAX_VALUE
> * Vs  MIN_VALUE
> * M   intrinsic::toString
> * M   intrinsic::toLocaleString
> * M   intrinsic::toJSONString
> * M   intrinsic::valueOf
> * M   intrinsic::toFixed
> * M   intrinsic::toExponential
> * M   intrinsic::toPrecision
>
> + C __ES4__::double
> * Ms  double
> * Ms  meta::invoke
> * Vs  length
> * Vs  MAX_VALUE
> * Vs  MIN_VALUE
> * Vs  NaN
> * Vs  NEGATIVE_INFINITY
> * Vs  POSITIVE_INFINITY
> * Vs  E
> * Vs  LN10
> * Vs  LN2
> * Vs  LOG2E
> * Vs  LOG10E
> * Vs  PI
> * Vs  SQRT1_2
> * Vs  SQRT2
> * M   intrinsic::toString
> * M   intrinsic::toLocaleString
> * M   intrinsic::toJSONString
> * M   intrinsic::valueOf
> * M   intrinsic::toFixed
> * M   intrinsic::toExponential
> * M   intrinsic::toPrecision
>
> * C __ES4__::decimal
> * Ms  int
> * Ms  meta::invoke
> * Vs  length
> * Vs  MAX_VALUE
> * Vs  MIN_VALUE
> * Vs  NaN
> * Vs  NEGATIVE_INFINITY
> * Vs  POSITIVE_INFINITY
> * Vs  E
> * Vs  LN10
> * Vs  LN2
> * Vs  LOG2E
> * Vs  LOG10E
> * Vs  PI
> * Vs  SQRT1_2
> * Vs  SQRT2
> * M   intrinsic::toString
> * M   intrinsic::toLocaleString
> * M   intrinsic::toJSONString
> * M   intrinsic::valueOf
> * M   intrinsic::toFixed
> * M   intrinsic::toExponential
> * M   intrinsic::toPrecision
>
>   C Date
>   Ms  Date
>   Ms  meta::invoke
> * Ms  intrinsic::parse
> * Ms  intrinsic::UTC
>   Ms  now
>   Vs  parse
>   Vs  UTC
>   Vs  length
>   Mp  toString
>   Mp  toDateString
>   Mp  toTimeString
>   Mp  toLocaleString
>   Mp  toLocaleDateString
>   Mp  toLocaleTimeString
>   Mp  toUTCString
> * Mp  toISOString
> * Mp  toJSONString
>   Mp  valueOf
>   Mp  nanoAge
>   Mp  getTime
>   Mp  getFullYear
>   Mp  getUTCFullYear
>   Mp  getMonth
>   Mp  getUTCMonth
>   Mp  getDate
>   Mp  getUTCDate
>   Mp  getDay
>   Mp  getUTCDay
>   Mp  getHours
>   Mp  getUTCHours
>   Mp  getMinutes
>   Mp  getUTCMinutes
>   Mp  getSeconds
>   Mp  getUTCSeconds
>   Mp  getMilliseconds
>   Mp  getUTCMilliseconds
>   Mp  getTimezoneOffset
>   Mp  setTime
>   Mp  setMilliseconds
>   Mp  setUTCMilliseconds
>   Mp  setSeconds
>   Mp  setUTCSeconds
>   Mp  setMinutes
>   Mp  setUTCMinutes
>   Mp  setHours
>   Mp  setUTCHours
>   Mp  setDate
>   Mp  setUTCDate
>   Mp  setMonth
>   Mp  setUTCMonth
>   Mp  setFullYear
>   Mp  setUTCFullYear
> * M   intrinsic::nanoAge
> * M   intrinsic::toString
> * M   intrinsic::toDateString
> * M   intrinsic::toTimeString
> * M   intrinsic::toLocaleString
> * M   intrinsic::toLocaleDateString
> * M   intrinsic::toLocaleTimeString
> * M   intrinsic::toUTCString
> * M   intrinsic::toISOString
> * M   intrinsic::toJSONString
> * M   intrinsic::valueOf
> * M   intrinsic::getTime
> * M   intrinsic::getFullYear
> * M   intrinsic::getUTCFullYear
> * M   intrinsic::getMonth
> * M   intrinsic::getUTCMonth
> * M   intrinsic::getDate
> * M   intrinsic::getUTCDate
> * M   intrinsic::getDay
> * M   intrinsic::getUTCDay
> * M   intrinsic::getHours
> * M   intrinsic::getUTCHours
> * M   intrinsic::getMinutes
> * M   intrinsic::getUTCMinutes
> * M   intrinsic::getSeconds
> * M   intrinsic::getUTCSeconds
> * M   intrinsic::getMilliseconds
> * M   intrinsic::getUTCMilliseconds
> * M   intrinsic::getTimezoneOffset
> * M   intrinsic::setTime
> * M   intrinsic::setMilliseconds
> * M   intrinsic::setUTCMilliseconds
> * M   intrinsic::setSeconds
> * M   intrinsic::setUTCSeconds
> * M   intrinsic::setMinutes
> * M   intrinsic::setUTCMinutes
> * M   intrinsic::setHours
> * M   intrinsic::setUTCHours
> * M   intrinsic::setDate
> * M   intrinsic::setUTCDate
> * M   intrinsic::setMonth
> * M   intrinsic::setUTCMonth
> * M   intrinsic::setFullYear
> * M   intrinsic::setUTCFullYear
> * M   get time
> * M   get year
> * M   get month
> * M   get UTCMonth
> * M   get date
> * M   get UTCDate
> * M   get day
> * M   get UTCDay
> * M   get hours
> * M   get UTCHours
> * M   get minutes
> * M   get UTCMinutes
> * M   get seconds
> * M   get UTCSeconds
> * M   get milliseconds
> * M   get UTCMilliseconds
> * M   set time
> * M   set year
> * M   set fullYear
> * M   set UTCFullYear
> * M   set month
> * M   set UTCMonth
> * M   set date
> * M   set UTCDate
> * M   set hours
> * M   set UTCHours
> * M   set minutes
> * M   set UTCMinutes
> * M   set seconds
> * M   set UTCSeconds
> * M   set milliseconds
> * M   set UTCMilliseconds
>
>   C RegExp
>   Ms  RegExp
>   Ms  meta::invoke
>   Vs  length
>   Mp  toString
>   Mp  exec
>   Mp  test
> * M   meta::invoke
> * M   intrinsic::toString
> * M   intrinsic::exec
> * M   intrinsic::test
>   V   source
>   V   global
>   V   ignoreCase
>   V   multiline
> * V   extended
> * V   sticky
>   V   lastIndex
>
>   C Error
>   Ms  Error
>   Ms  meta::invoke
>   Vs  length
>   V   name
>   V   message
>
>   C EvalError extends Error
>   Ms  EvalError
>   Ms  meta::invoke
>   Vs  length
>
>   C RangeError extends Error
>   Ms  RangeError
>   Ms  meta::invoke
>   Vs  length
>
>   C ReferenceError extends Error
>   Ms  ReferenceError
>   Ms  meta::invoke
>   Vs  length
>
>   C SyntaxError extends Error
>   Ms  SyntaxError
>   Ms  meta::invoke
>   Vs  length
>
>   C TypeError extends Error
>   Ms  TypeError
>   Ms  meta::invoke
>   Vs  length
>
>   C URIError extends Error
>   Ms  URIError
>   Ms  meta::invoke
>   Vs  length
>
> * C __ES4__::EncodingError extends Error         [for JSON]
> * Ms  EncodingError
> * Ms  meta::invoke
> * Vs  length
>
> * C __ES4__::Name
> * Ms  Name
> * Ms  meta::invoke
> * Mp  toString
> * Mp  valueOf
> * M   intrinsic::toString
> * M   intrinsic::ValueOf
> * V   qualifier
> * V   identifier
>
> * C __ES4__::Namespace
> * Mp  toString
> * M   intrinsic::toString
>
> * C __ES4__::NamespaceSet                        [TBD -- small class]
>
> * C __ES4__::NamespaceSetList                    [TBD -- small class]
>
> * C __ES4__::Map.<K,V>
> * Ms  Map
> * M   intrinsic::size
> * M   intrinsic::get
> * M   intrinsic::put
> * M   intrinsic::has
> * M   intrinsic::remove
> * Mp  size
> * Mp  get
> * Mp  put
> * M   phas
> * Mp  remove
> * M   iterator::get
> * M   iterator::getKeys
> * M   iterator::getValues
> * M   iterator::getItems
>
> * C __ES4__::Vector.<T>
> * Ms  Vector
> * Ms  meta::invoke
> * Vs  length
> * Mp  concat
> * Mp  every
> * Mp  filter
> * Mp  forEach
> * Mp  indexOf
> * Mp  join
> * Mp  lastIndexOf
> * Mp  map
> * Mp  pop
> * Mp  push
> * Mp  reverse
> * Mp  shift
> * Mp  slice
> * Mp  some
> * Mp  sort
> * Mp  splice
> * Mp  unshift
> * M   get length
> * M   set length
> * V   fixed
> * M   meta::get
> * M   meta::set
> * M   intrinsic::concat
> * M   intrinsic::every
> * M   intrinsic::filter
> * M   intrinsic::forEach
> * M   intrinsic::indexOf
> * M   intrinsic::join
> * M   intrinsic::lastIndexOf
> * M   intrinsic::map
> * M   intrinsic::pop
> * M   intrinsic::push
> * M   intrinsic::reverse
> * M   intrinsic::shift
> * M   intrinsic::slice
> * M   intrinsic::some
> * M   intrinsic::sort
> * M   intrinsic::splice
> * M   intrinsic::unshift
> * M   iterator::get
> * M   iterator::getKeys
> * M   iterator::getValues
> * M   iterator::getItems
>
> * C intrinsic::ControlInspector.<T>              [may end up in
> reflect::]
> * Ms  ControlInspector
> * M   annotate
> * M   getCurrentAnnotation
> * M   getAnnotation
>
> * T __ES4__::AnyNumber
>
> * T __ES4__::AnyString
>
> * T __ES4__::AnyBoolean
>
> * T __ES4__::EnumerableId
>
> * I reflect::Type
> * M   canConvertTo
> * M   isSubtypeOf
>
> * I reflect::NominalType
> * M   name
> * M   superTypes
> * M   [a few more here, TBD]
>
> * I reflect::InterfaceType
> * M   implementedBy
>
> * I reflect::ClassType
> * M   construct
>
> * I reflect::AnyType
>
> * I reflect::NullType
>
> * I reflect::UndefinedType
>
> * I reflect::UnionType
> * M   fields
> * M   members
>
> * I reflect::RecordType
> * M   construct
>
> * I reflect::FunctionType
> * M   boundThid
> * M   argTypes
> * M   defaultValues
> * M   hasRestType
> * M   returnType
>
> * I reflect::ArrayType
> * M   fields
> * M   members
>
> * I reflect::ParameterizedType
>
> * I reflect::Field
> * M   name
> * M   type
>
> * I reflect::FieldValue
> * M   name
> * M   value
>
>   F eval
>   F parseInt
>   F parseFloat
>   F isNaN
>   F isFinite
>   F decodeURI
>   F decodeURIComponent
>   F encodeURI
>   F encodeURIComponent
>
>   V Math
>   V   E
>   V   LN10
>   V   LN2
>   V   LOG2E
>   V   LOG10E
>   V   PI
>   V   SQRT1_2
>   V   SQRT2
>   M   acos
>   M   atan
>   M   atan2
>   M   ceil
>   M   cos
>   M   exp
>   M   floor
>   M   log
>   M   max
>   M   min
>   M   pow
>   M   random
>   M   round
>   M   sin
>   M   sqrt
>   M   tan
> * M   intrinsic::acos
> * M   intrinsic::atan
> * M   intrinsic::atan2
> * M   intrinsic::ceil
> * M   intrinsic::cos
> * M   intrinsic::exp
> * M   intrinsic::floor
> * M   intrinsic::log
> * M   intrinsic::max
> * M   intrinsic::min
> * M   intrinsic::pow
> * M   intrinsic::random
> * M   intrinsic::round
> * M   intrinsic::sin
> * M   intrinsic::sqrt
> * M   intrinsic::tan
>
>   V NaN
>   V Infinity
>   V undefined
> * F intrinsic::eval
> * F intrinsic::parseInt
> * F intrinsic::parseFloat
> * F intrinsic::isNaN
> * F intrinsic::isFinite
> * F intrinsic::decodeURI
> * F intrinsic::decodeURIComponent
> * F intrinsic::encodeURI
> * F intrinsic::encodeURIComponent
> * V intrinsic::global
> * F reflect::typeOf
>
>
> >
> > I am willing to run the number on these if someone can help
> > me find the grammar and some sort of standard library index
> > in the spec.
> >
> > Regards,
> > Maciej
> >
> > _______________________________________________
> > Es4-discuss mailing list
> > Es4-discuss at mozilla.org
> > https://mail.mozilla.org/listinfo/es4-discuss
> >
> _______________________________________________
> Es4-discuss mailing list
> Es4-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es4-discuss
>



-- 
Yehuda Katz
Web Developer | Procore Technologies
(ph)  718.877.1325


-- 
Yehuda Katz
Web Developer | Procore Technologies
(ph)  718.877.1325
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.mozilla.org/pipermail/es-discuss/attachments/20071031/e3fd05db/attachment-0002.html 


More information about the Es4-discuss mailing list