"Exotic" objects for DOM collections
The Boa engine doesn't allow external crates to create "exotic" objects. This mechanism is locked down (pub(crate)) and is only accessible within the engine itself. Without it, it's impossible to build a DOM on top of Boa: DOM collections like NodeList or HTMLCollection require indexed and named properties. Proxy isn't a good fit.
So, the goal is to add a narrow, optional API (a feature flag, disabled by default) that allows the host to override only property-related methods: get, set, delete, key enumeration, and the like, while keeping all the truly dangerous methods out of reach: no changes to function calls/constructors, prototypes, or extensibility, no exposure of the internal structure of objects.
P.S. My English isn't very good, sorry.
Source: boa-dev/boa