Since the development of ZPE and YASS, ZPE has come a long way with the ability to process web pages much like PHP and Apache. As a result of this I had always wanted to develop a proper web server.
Web servers aren't particularly complicated things, and as part of ZPE I developed a web parser and eventually a web server. The web server was pretty basic and is only included to allow users to test the web parser side of the package - it was never meant for production.
Since then ZPE has come a long way, and is now up to six times faster. Part of my original ambition was to get ZPE to a point where it was a usable language and package from which simple scripts that automate tasks could be run. That time has come.
Building on the foundation of ZENServer (not the ZENWebServer) built-in to ZPE, it was time for me to develop a proper web server. That server is now the Velocity Web Server (aka Velocity). ZENWebServer offered better performance when it first came about and was able to scale much beter than a ZENServer-based implementation, but with hindsight the ZENServer could actually be designed to be better than the ZENWebServer implementation and so I stepped back to that and built it upon the solid foundation of the ZENServer.
The ambition behind Velocity is to be able to support languages such as PHP or Python as well as ZPE with relative ease. In fact, the support for these languages only requires about 10 lines of Java code and the rest is handled by the server.
Velocity had to be easy to use too, and it should simply be a click of a few buttons to get it to work.
Benefits of Velocity
Velocity's main benefit is the simplicity of setup. Just double clicking the file and a simple and easy to use web server pops up (not yet implemented).
Velocity is easy to develop for and existing projects such as ZPE just require a single plugin hook, which is know as a Velocity Module, to get them to work. ZPE requires 10 lines of code that pass through to the ZENWebParser runtime all the stuff it needs.
Velocity is fast too. Both YASS and PHP are executed very quickly.
The main goals of Velocity over the next few months are as follows:
- Develop a caching system that uses SHA algorithm as well as the f-path algorithm to develop a deterministic approach to it.
- Develop a user interface to control it
- Support multiple hosts with one server
- Multiple ports on one server
- Develop a concise set of documentation
The Velocity Web Server is very early in development, only started in June 2020, and is currently not available in general. If you are interested in testing it out please either message me or leave a comment below.
The release cycle for Velocity will be similar to that of ZPE in that each year a new minor version comes out. For example the 2020 versions will be VWS 1.1.1, VWS 1.1.2 etc. and the 2021 versions will be VWS 1.2.1, 1.2.2 etc.