releases

Francesco Vallone

But let’s dive into the new features, the breaking changes, the fixes and the revamps made to the framework.
Features
Metadata
A new Metadata system has been implemented in Serinus. It can be used to specialize even more the routes or the controllers and can provide both contextualized values and raw values. You can read more of it here.
Tracers
One of the features that should’ve been present in the 0.5 but didn’t make it, but here it is. You can now trace the time elapsed between each step of the request lifecycle effortlessly. You can also use more tracer at the same time in your application with minimum impact on the performances. You can read more of it here.
Generate Command
A new command has been added to the CLI that allows new resources to be generated for the project. The available options are modules, providers, controllers and resources, which will create them all in one go. You can read more of it here.
StreamableResponses
A new way to create a response has been implemented. From the RequestContext is now possible to start a StreamedResponses sending the data in chunks instead that in one go.
Breaking Changes
With great changes comes some breaking ones.
Request Handling
The chains of the Response object have been broken! You can now return whatever object you want and Serinus will try to serialize it and handle it. Also since the Response object has been removed from Serinus to change the properties of the response you can now access a ResponseProperties object in the RequestContext using context.res.
ParseSchema
One of the core rules of Serinus is that the developer should use whatever tool he wants, and while the team is still working in making Serinus more open, this is a step in the right direction. Out of the box Serinus will provide the AcanthisParseSchema that will use the Acanthis library (another bird of Serinus Nest) but you can also create your own parse schema simply extending the ParseSchema class. You can read more of it here.
Bug fixes
Not proud of these.
Providers dependencies
The providers of the parent weren’t available in the RequestContexts of the children routes making really hard to manage the dependencies. This bug has now been fixed and all the parent providers are available in its children.
Shelf Interoperability
The Shelf Interoperability unfortunately had some problem when managing more middlewares that could return a response. You can now decide of which middleware you want to accept the response setting the new parameter ignoreResponse to false. You can read more of it here.
Revamps
Documentation
The whole documentation have been updated and improved to explain the mechanism behind Serinus in a easier way. The design of the homepage has also been modified and in general the documentation has been divided in more sections to make sure that you focus on the correct content.
Serinus
What but how? Well since Serinus aims to be as open as possible to changes since this version more internal stuff are now available for you to use to create whatever you need.
Other changes
The Serinus repository now host all the packages and plugins available for Serinus itself.
Conclusion
Serinus 0.6 offers new features and improve the developer experience without affecting the performances.
