== 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. [[BR]] == Tasks: == - Add support for WebIDL namespaces - Add support for setlike<> declarations - 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 - 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 - Remove use of the C preprocessor - Add support for [Default] and toJSON, replacing serializers (https://heycam.github.io/webidl/#default-tojson-operation). [[BR]] == 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. [[BR]] == 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. [[BR]] == 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) - Add support for making an attribute conditionally readonly at compile time (see JSAudioTrackCustom) (https://webkit.org/b/173993) - Remove special casing of RegExp from overloading (https://webkit.org/b/174025) - Add support for Promise<> attributes