According to my understanding, the following comparison is true of extensions and services used instead of extensions.
| Feature |
Extension |
Service |
| Provides access to inner bindings |
✅ |
✅ |
| Loaded into |
every isolate |
own isolate |
| CPU overhead |
very low |
low |
| Memory overhead |
O(num_workers), small constant factor |
O(1), high constant factor |
| Binding isolation |
high |
very high |
| Typescript compatibility |
okay |
minimal |
| Ideal for |
convenience, efficiency |
separation, composability |
Is this all fair to say? There's not much documentation for extensions or wrapped bindings, and they're not used very often, so I wasn't able to find answers elsewhere.