With this release, guides are now defined by a folder structure and a central guide.yaml file. As a result, guides are now easy to copy to the same project or even to a different project (there is a button for that!). As a consequence, with this change it's also easy to have multiple versions of a guide.
This was a very hard and complex project, due to ensuring full backward compatibility, the size of guide end guide editing as an existing feature, and correct working and testing of migration tooling.
Because of it's impact and complexity, the feature is released as beta, but we (support) will already start guiding some of our customers with production level guides.
We added a snapshot evaluator for Quality Control, that evaluates if snapshots can be correctly generated on any structure definition (within a given filter).
This is an example you can add to your QC rules:
- action: snapshot files: profiles/*.xml
For more information on Quality Control, please read our blog post. This blog post about Quality Control takes you step by step on how to set up your own rules to validate full FHIR specifications in one click.
With this release, also comes and upgrade to FQL, for custom tables in implementation guides. FQL 3, which you might already know from Firely Terminal, brings a lot more syntax expressiveness, like order by (desc), group by repeating select, group unwrapping, and node-level join. For more information, see our FQL documentation
We migrated to .NET 5 and ASP.NET 5, which gave us a big performance boost in key areas, an improved GC, and a smarter and adaptive JIT.
Note: Specifically the close to factor 20 perf improvement of RegEx parsing, which we use for guide page rendering.
With this release we also switched to endpoint routing, which brings a big performance boost and reduced GC in resolving urls.
While building this feature, we also had to do a lot of preparation for features that are not yet in this release, but will be in a future release. Among these are guide publishing (static and versioned), topics (linking resources to pages), templates (one page for many resources), and documentation bridges (making it possible to link a guide to a package or a project).