When you are using a libfawk in your application, it is best to follow these considerations (libfawk script users would expect these): 1. always call main() after load The main part of the script may set up initial script states. For fbas, it is implicitly called main() (created by the parser); for the other languages it is the function main(). This function shall be called right after script load. The script should not run a main loop from here (unless the application explicitly permits). The host application may decide to unload the script on certain the return values. 2. failing the run limit is fatal If any call to the script exceeds the run limit, the script shall be unloaded. The libfawk VM can not recover from run limit violation. 3. include The host application is free to implement the include path resolution in any way (or to simply not implement the include feature). When the host application implements include in file system context, most scripters would expect the file name specified for include is interpreted as relative path to the path of the script that contains the include directive (unless the included file name is an absolute path). Thus best practice is to implement the relative-to-current-file mechanism.