v4.0.0 Release: Multiple Themes

2024-04-10

One week after the v3, we now have a brand new version! It is about twice as fast and makes lots of internal changes:

Breaking Changes

Due to the ReadyToRun and Multiple themes features, there are some changes that users must be aware when upgrading their sites. More on that later.

Features

ReadyToRun

Recent DotNet versions allow a hybrid approach between compiled vs JIT compilation. It is called ReadyToRun. It tries to optimize the code converting some into native code and also make some inferences about the JIT optimizations.

The main advantage is speed. It will probably be about 2 times faster. It will also pave the way to further attempt to complete AOT compilation #35 , which would bring even more speed and smaller size. However, it required some changes, specially in the YAML parser, because it needed to avoid Reflection.

BREAKING CHANGE: all page and site settings (YAML) that are not de default variables will be ignored. Only custom data present under Params: will be kept into your pages. Before, unknown values were automatically placed under Params, even if placed elsewhere.

Multiple themes

SuCoS now allow sites to install multiple themes (but still only use one). They will be placed inside a themes/ folder (or overwriting it using ThemeDir variable in the site settings sucus.yaml). It will also allow using nested git repositories and splitting the theme into other remote repositories.

BREAKING CHANGE: until now, the theme data was supposed to be placed in theme/ folder. Now, one must create a themes/ folder and put the theme data into a folder within it, like themes/my-theme

new theme terminal command

You can now scaffold the theme structure using the new SuCoS new theme command. It will -still- not populate with any generic theme, but it's the plan for the future.

CODE_OF_CONDUCT and CONTRIBUTING

The source code now has CODE_OF_CONDUCT and CONTRIBUTING documents. The first state the expected conduct for everything in the project, from users or maintainers. Respect, tolerance and a bit o humor are a must. The second contains instructions on ways to start contributing and making changes for yourself. Further instructions are in developer section of this site.

Fixes

404 page Exception

When using live server, if the 404 page is hit (non-existing page), the server was raising an exception and crashing.

Return 0 (success) for help and version

when calling SuCoS version or SuCoS help terminal commands, it was crashing.

Internal Organization

Some changes in the code that do not change the behavior of the app.

  • Nuke build project is now merged inside .nuke
  • All app commands are placed in Commands folder
  • Updated dependencies and libraries
  • Fixes and enhancements in code comments and code style

Download It Now