On-demand distribution of code (e.g. lambdas) for remote execution is a problem often exacerbated by the presence of dynamic assemblies. Dynamic assemblies appear in situations where code is emitted at runtime, such as interpreters, optimization libraries or F# type providers. By default, dynamic assemblies are not persistable. What's more, the inherently incremental nature of dynamic assemblies makes their exportation even more challenging.
Vagabond attempts to solve this problem by providing an automated dependency resolution and dynamic assembly compilation framework. It also addresses issues inherent in REPL loops. It fully supports code generated by F# Interactive and type providers.
To see a demo of Vagabond, build the solution and execute the thunkServer.fsx script found inside the samples folder. As the name suggests, it allows for execution of arbitrary thunks in a remote server.
A collection of tutorials, technical overviews and API references of the library.
API Overview An overview of the Vagabond API and examples.
Technical Overview A walkthrough of the library's implementation details.
API Reference contains automatically generated documentation for all types, modules and functions in the library.
Vagabond makes heavy use of the reflection API. Mono support is patchy for the moment, mostly due to a number of bugs in the mono runtime [1,2]. If you would like to see stable Vagabond support in mono soon, make sure to contribute code/nag until these bugs are resolved.
The library is available under the MIT License. For more information see the License file in the GitHub repository.