wiki:WebIDLToDo

Version 15 (modified by sam@webkit.org, 7 years ago) (diff)

--

Goals

  • Remove all non-wrapping or GC related custom bindings
  • Add support for all WebIDL features
  • Improve the quality of the perl IDL code generators
  • Use IDL infrastructure to add automatic test case generation
  • Reduce the code size of the generated code.
  • Reduce the compile time of the generated code.
  • Provide the fastest bindings layer possible.


Tasks:

  • Add support for WebIDL namespaces
  • Add support for setlike<> declarations
  • Add support for Promise<> attributes
  • Remove special casing of RegExp from overloading (https://webkit.org/b/174025)
  • Stop invoking GetMethod(V, @@iterator) twice for sequence/FrozenArray disambiguation in overloading
  • Implement / verify FrozenArray reference semantics without [CachedAttribute]
  • Add support for [SameObject] (unclear if there is anything to do here. SameObject is probably something that is implemented in the implementation via returning the same object).
  • Add support for the remaining steps in the union conversion code
  • Add better exception messages for all conversions
  • Add support for making an attribute conditionally readonly at compile time (see JSAudioTrackCustom) (https://webkit.org/b/173993)
  • Replace use of RuntimeEnabledFeatures with Settings based conditionals
  • Add support for conditionally exposing functions / attributes based on [Exposed] extended attribute (see NavigatorID.idl and XMLHttpRequest.idl for examples)
  • Replace explicit conversion from PropertyName to String or AtomicString (see uses of propertyNameToString/propertyNameToAtomicString in the generator) with a class that can convert most efficiently based on the type of the receiver.
  • Replace explicit conversion from JSString to AtomicString via the [AtomicString] and [ExistingAtomicString] type modifiers with a class that can convert most efficiently based on the type of the receiver.
  • Move to a better aggregate compile model to avoid unnecessary re-parsing (https://webkit.org/b/173242).
  • Remove JSDOMBinding.h (https://webkit.org/b/168383)
  • Make ScheduledAction into a regular callback


DOMJIT Specific Tasks:

  • Utilize DOMJIT to hoist attribute and operation prologues into JSC (https://webkit.org/b/171637)
  • Attempt to reduce duplications by having 'safe' bindings functions call the 'unsafe' ones where possible.


Maybe:

  • Generate the structs that correspond to IDL dictionaries
  • Generate the enums that correspond to IDL enums
  • Generate the abstract base classes that correspond to IDL callbacks
  • Replace trampoline/body model with trampoline/lambda.


Done:

  • Add support for generating name getters / setters / deleters
  • Add support for generating index getters / setters with custom names
  • Add support for maplike<> declarations
  • Add support for callbacks with non-void return types
  • Add support for BufferType specialization in IDLTypes (currently implemented as IDLInterfaces)
  • Stop invoking GetMethod(V, @@iterator) twice for sequence/FrozenArray disambiguation in union conversion
  • Remove special casing of enums by passing context (attribute assignment, function parameter, dictionary assignment) to conversion functions
  • Move all exception helpers out of JSDOMBindings.h and into its own header
  • Split JSDOMConvert up into separate files per type
  • Add extended attribute for marking an argument to an operation as also being the return value (needed for Crypto.getRandomValues, Node.insertBefore, Node.replaceChild, Node.removeChild, and Node.appendChild) (https://webkit.org/b/173961)
  • Replace use of __is_polymorphic with std::is_polymorphic (https://webkit.org/b/174012)