The primary feature of this release is that all access to Hyperlambda files no longer (directly) touches the file system, but consumes the files through the following interfaces.
IFileService
- Loading files, etcIFolderService
- Traversing folders, etcIRootResolver
- "Namespacing" files, which by default implies prepending the root folder
This has the advantage of that Magic and Hyperlambda can easily be deployed 100% "stateless", while still preserving the dynamic nature of Hyperlambda files, allowing you to dynamically during runtime update parts of your code base, by for instance implementing the 3 above services such that their implementation actually implies reading files from for instance ScyllaDB, Redis or something similar.
Notice, by default Magic uses the System.IO
namespace to resolve files, but implementing your own implementations of the above, and wiring up your IoC container to use your own custom implementation, allows you to completely decouple Magic's dependency upon the physical file system, resulting in that your Magic servers are 100% completely stateless in nature.
In addition, we've fixed several UI bugs in the dashboard, added measuring of milliseconds during invocation of HTTP endpoints, and fixed a severe error related to interceptors, that would some times result in an endpoint going into an infinite loop, never returning.