CppCMS 1.x.x tasks
- CppCMS 1.1.0 - Next Release
- CppCMS 1.3.0 and later
- HTTP Server improvements
- Implementing UDP Support for
- Add Support of multiple event loops
- Cache Improvements
- Implement Locale sensitive Date-Time Form Widgets
- Replace LRU with 2Q scan resistant algorithm
- Degraded Mode of work
- Implement Connection Forwarding over unix-sockets
CppCMS 1.1.0 - Next Release
Update external modules to updated API
Update PHP, Asp.Net, Java and Python modules to reflect updated API
Provide Plugin Framework
Allow applications and other tools to be loaded dynamically.
- Convenient API to access shared_objects (Done)
- Call of different templates by names (Done)
- Creation of abstract templates (so no need of link with API) (Done, pending unit test)
- Handle gettext domain properly over plugin - change it per include and not per view, restore at exit (Done, pending unit test)
CppCMS 1.3.0 and later
HTTP Server improvements
- Implement HTTP/1.1
- Implement HTTPS
- Provide WebSockets support
- Implement Virtual Hosts support
Implementing UDP Support for
Booster.Aio socket supports stream sockets well, but has very poor (if any) support of data-gram sockets.
You can open them and use them but there are no operations
recvfrom that are data-gram oriented.
Add their implementations to Booster analogously to implementations of async/sync read/write operations.
Add Support of multiple event loops
Today, asynchronous applications do not scale well on multi-core systems.
Add required support of multiple event loops so different asynchronous applications would be able to use them.
When an entry is invalidated many requests may try to generate it and create significant load.
Solution, delay "fetch" if some other fetching.
Distributed Cache system implements L1/L2 cache allowing a cache client to check if the data is has is still up-to-date without reading it back.
However each access to cache still require TCP-ping-pong.
So instead active cache invalidation may be done: when trigger is risen or new data is stored a sort of a message that causes all clients to drop invalid cache is broad-casted.
Need to be implemented.
Use cache to invalidate general object
Enable O(1) invalidation and lazy collection
- Make triggers refcounted - and keep generation
- Invalidation options:
- Triggers keep spliceable list of objects that moved to kill list and deleted on demand O(1) operation
- Triggers do not have list of objects at all but rather have limited access to
Implement Directory Iterator.
Implement Locale sensitive Date-Time Form Widgets
ICU provides good features for parsing and formatting dates and times, implement Date-Time Widget for this purpose.
It is not so-straightforward as user should know the format he/she enters the data, such information is not supplied by any existing widgets.
Think what to do in case of no-icu builds.
Replace LRU with 2Q scan resistant algorithm
Check possibility of changing this.
Degraded Mode of work
What happens when one of cache/session servers fails?
Provide automatic servers fail-detection procedures and continue to work in degraded mode.
Implement Connection Forwarding over unix-sockets
CppCMS forwarding framework allows to forward any connection to other network node over SCGI API.
Is is very useful to be able to forward connections between forked processes of same application.
It can be done in much cheaper between forked processes by forwarding a file descriptor over Unix domain socket and passing already read information via shared memory.