You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Introduce a streamlined approach to augment the functionality of bebopc, including the enhancement of existing generators and the creation of new ones.
Ensure plugins can be developed in any programming language, thereby increasing developer productivity.
Maintain full sandboxing of plugins to prevent file system access. While 'bebopc' is trusted, allowing arbitrary native code execution through the compiler could expose potential supply chain attack vectors.
Preliminary Design
Plugins will adopt the WebAssembly (wasm) format.
'bebopc' will employ Wasmtime for loading and engaging with plugins.
We will provide a series of official packages that developers can integrate into their plugin projects. These packages will supply all the essential abstractions and definitions for plugin development.
Plugins will define their capabilities upon registration. For example, if a plugin needs to generate an auxiliary file, it should make this declaration in its manifest. In addition, a plugin should specify whether it serves as a generator or an enricher. A generator plugin will receive the complete AST, much like a built-in generator. Conversely, an enricher plugin will receive event notifications when certain generator activities are about to take place (including those from other generator plugins). This could involve events such as documentation being written or a class definition being prepared, allowing the enricher plugin to contribute additional data or modify the impending output.
Proof of Concept (POC)
Develop a hosting layer within bebopc.
Design a plugin abstraction and library compatible with AssemblyScript.
Illustrate the usage of these elements by creating an exemplary AssemblyScript plugin.
Non-goals
Creating a hosted repository of plugins. While this would be magnificent for a lot of reasons, it is sadly out of the scope of the project goals for now.
Runtime support: the creation of a Bebop runtime will still largely be done by hand for any language.
The text was updated successfully, but these errors were encountered:
Objectives
Preliminary Design
Proof of Concept (POC)
Non-goals
Creating a hosted repository of plugins. While this would be magnificent for a lot of reasons, it is sadly out of the scope of the project goals for now.The text was updated successfully, but these errors were encountered: